Planetary MCP

Planetary MCP

Enables deploying an Earth Engine MCP server in Docker, integrating with Claude Desktop to perform geospatial analysis using 11 Earth Engine tools for tasks like wildfire risk, flood risk, and agricultural monitoring.

Category
Visit Server

README

šŸŒ Planetary MCP - Docker Deployment Package

Complete Earth Engine MCP Server with Claude Desktop Integration

This package contains everything needed to run the Earth Engine MCP server in a Docker container on any platform (Windows, Mac, Linux, AWS EC2, etc.).


šŸ“¦ What's Included

  • Dockerized Next.js Server - Fully containerized application
  • MCP Bridge - Connect Claude Desktop to the server
  • 11 Earth Engine Tools - All geospatial analysis capabilities
  • Health Monitoring - Automatic health checks
  • Production Ready - Optimized for deployment

šŸš€ Quick Start (5 Minutes)

Prerequisites

  1. Docker Desktop installed and running (Download)
  2. Google Earth Engine Service Account Key (JSON file)
  3. Node.js (for Claude Desktop bridge only)

Step 1: Place Your Credentials

# Copy your Earth Engine service account key to:
credentials/ee-key.json

Important: Make sure your credentials file is named exactly ee-key.json and is in the credentials/ folder.

Step 2: Start the Server

# Open terminal in this directory and run:
docker-compose up -d --build

This will:

  • Build the Docker image (~3-5 minutes first time)
  • Start the container
  • Expose the server on http://localhost:3000

Step 3: Verify It's Working

# Check container status
docker-compose ps

# Test health endpoint
curl http://localhost:3000/api/health

You should see: {"ok":true,"time":"..."}

Step 4: Configure Claude Desktop

  1. Open Claude Desktop settings

  2. Edit the MCP configuration file:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Mac/Linux: ~/.config/Claude/claude_desktop_config.json
  3. Add this configuration (update paths for your system):

{
  "mcpServers": {
    "planetary-mcp": {
      "command": "node",
      "args": ["<FULL_PATH_TO_THIS_FOLDER>/mcp-sse-complete.js"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<FULL_PATH_TO_THIS_FOLDER>/credentials/ee-key.json"
      }
    }
  }
}

Example for Windows:

{
  "mcpServers": {
    "planetary-mcp": {
      "command": "node",
      "args": ["D:\\earth-engine-mcp-deployment\\mcp-sse-complete.js"],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "D:\\earth-engine-mcp-deployment\\credentials\\ee-key.json"
      }
    }
  }
}
  1. Restart Claude Desktop

Step 5: Test in Claude

Open Claude Desktop and try:

Search for sentinel datasets in Earth Engine

šŸ› ļø Management Commands

View Logs

docker-compose logs -f

Stop Server

docker-compose down

Restart Server

docker-compose restart

Check Status

docker-compose ps

Rebuild (after code changes)

docker-compose up -d --build

🌟 Available Tools

Once configured, Claude Desktop will have access to:

Core Tools

  1. earth_engine_data - Search datasets, get geometries, filter collections
  2. earth_engine_process - Calculate indices (NDVI, EVI, etc.), create composites, terrain analysis
  3. earth_engine_export - Generate thumbnails, export data, create map tiles
  4. earth_engine_system - Health checks, execute custom code, system info
  5. earth_engine_map - Create interactive web maps

Geospatial Models

  1. wildfire_risk_assessment - Comprehensive wildfire risk analysis
  2. flood_risk_assessment - Flood risk based on terrain and precipitation
  3. agricultural_monitoring - Crop health and agricultural conditions
  4. deforestation_detection - Forest loss detection between time periods
  5. water_quality_monitoring - Water quality using spectral indices
  6. crop_classification - ML-based crop and land cover classification

šŸ” Testing

Test Health Endpoint

curl http://localhost:3000/api/health

Test Earth Engine Connection (PowerShell)

$body = @{ tool = "earth_engine_system"; arguments = @{ operation = "health" } } | ConvertTo-Json
Invoke-RestMethod -Method POST -Uri "http://localhost:3000/api/mcp/sse" -ContentType "application/json" -Body $body

Test Data Search (PowerShell)

$body = @{ tool = "earth_engine_data"; arguments = @{ operation = "search"; query = "sentinel"; limit = 5 } } | ConvertTo-Json
Invoke-RestMethod -Method POST -Uri "http://localhost:3000/api/mcp/sse" -ContentType "application/json" -Body $body

🚨 Troubleshooting

Container Won't Start

# Check logs for errors
docker-compose logs

# Try rebuilding from scratch
docker-compose down -v
docker-compose up -d --build

Port 3000 Already in Use

Windows:

# Find what's using port 3000
netstat -ano | findstr :3000

# Stop the process (replace <PID>)
Stop-Process -Id <PID> -Force

Mac/Linux:

# Find what's using port 3000
lsof -i :3000

# Kill the process
kill -9 <PID>

Docker Desktop Not Running

Make sure Docker Desktop is started before running docker-compose commands.

Earth Engine Authentication Fails

  1. Verify your credentials file exists: credentials/ee-key.json
  2. Check the file is valid JSON
  3. Ensure the service account has Earth Engine access
  4. Restart container: docker-compose restart

Claude Desktop Can't Connect

  1. Verify the server is running: docker-compose ps
  2. Test health endpoint: curl http://localhost:3000/api/health
  3. Check Claude Desktop config paths are absolute (not relative)
  4. Restart Claude Desktop after config changes

🌐 Deploying to Cloud (AWS EC2, Azure, GCP)

This same Docker setup works on any cloud platform:

AWS EC2 / Linux Server

# 1. Install Docker
sudo yum install docker -y  # Amazon Linux
# OR
sudo apt install docker.io -y  # Ubuntu

sudo systemctl start docker
sudo systemctl enable docker

# 2. Install Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 3. Upload this folder to server
scp -r earth-engine-mcp-deployment/ user@server:~/

# 4. Start container
cd earth-engine-mcp-deployment
docker-compose up -d --build

# 5. Verify
curl http://localhost:3000/api/health

Connect Claude Desktop to Remote Server

Update your Claude Desktop config to point to the server:

{
  "mcpServers": {
    "planetary-mcp": {
      "command": "node",
      "args": ["<PATH_TO>/mcp-sse-complete.js"],
      "env": {
        "MCP_SERVER_URL": "http://YOUR-SERVER-IP:3000"
      }
    }
  }
}

šŸ“Š Performance & Resources

Container Resources

  • CPU: 1-2 cores recommended
  • Memory: 2-4 GB recommended
  • Disk: ~500 MB for container + data

Response Times

  • Health check: <100ms
  • Dataset search: <1s
  • NDVI calculation: 1-5s
  • Crop classification: 20-60s
  • Interactive maps: 5-15s

šŸ”’ Security Notes

  • Credentials are mounted as read-only in the container
  • No credentials are embedded in the Docker image
  • Service runs on localhost by default (not exposed externally)
  • For production, use reverse proxy (Nginx) with SSL

šŸ“ File Structure

earth-engine-mcp-deployment/
ā”œā”€ā”€ README.md                    # This file
ā”œā”€ā”€ Dockerfile                   # Container definition
ā”œā”€ā”€ docker-compose.yml          # Orchestration config
ā”œā”€ā”€ .dockerignore               # Files to exclude
ā”œā”€ā”€ package.json                # Dependencies
ā”œā”€ā”€ next.config.ts              # Next.js config
ā”œā”€ā”€ tsconfig.json               # TypeScript config
ā”œā”€ā”€ mcp-sse-complete.js         # MCP bridge for Claude Desktop
ā”œā”€ā”€ credentials/                # Your credentials
│   └── ee-key.json            # Earth Engine service account key
ā”œā”€ā”€ src/                        # Core MCP implementation
│   ā”œā”€ā”€ mcp/                   # MCP server & tools
│   ā”œā”€ā”€ gee/                   # Earth Engine client
│   └── ...
ā”œā”€ā”€ app/                        # Next.js API routes
│   └── api/
│       ā”œā”€ā”€ health/            # Health check endpoint
│       └── mcp/               # MCP endpoints
└── public/                     # Static assets

šŸ†˜ Support

Common Issues

Q: Tools not showing in Claude Desktop
A: Restart Claude Desktop after editing config file

Q: "Connection refused" errors
A: Check if container is running with docker-compose ps

Q: Earth Engine authentication errors
A: Verify credentials/ee-key.json is valid and service account has EE access

Q: Container exits immediately
A: Check logs with docker-compose logs for error messages

Getting Help

  1. Check logs: docker-compose logs
  2. Verify health: curl http://localhost:3000/api/health
  3. Test Earth Engine auth manually
  4. Review container status: docker-compose ps

šŸ“„ License

This package is provided for deployment and use. See main repository for license details.


āœ… Quick Checklist

Before contacting support, verify:

  • [ ] Docker Desktop is running
  • [ ] credentials/ee-key.json exists and is valid
  • [ ] Container is running: docker-compose ps shows "healthy"
  • [ ] Health endpoint responds: curl http://localhost:3000/api/health
  • [ ] Claude Desktop config has correct absolute paths
  • [ ] Claude Desktop was restarted after config changes

Ready to deploy? Start with Step 1 above! šŸš€

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured