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.
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
- Docker Desktop installed and running (Download)
- Google Earth Engine Service Account Key (JSON file)
- 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
-
Open Claude Desktop settings
-
Edit the MCP configuration file:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - Mac/Linux:
~/.config/Claude/claude_desktop_config.json
- Windows:
-
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"
}
}
}
}
- 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
- earth_engine_data - Search datasets, get geometries, filter collections
- earth_engine_process - Calculate indices (NDVI, EVI, etc.), create composites, terrain analysis
- earth_engine_export - Generate thumbnails, export data, create map tiles
- earth_engine_system - Health checks, execute custom code, system info
- earth_engine_map - Create interactive web maps
Geospatial Models
- wildfire_risk_assessment - Comprehensive wildfire risk analysis
- flood_risk_assessment - Flood risk based on terrain and precipitation
- agricultural_monitoring - Crop health and agricultural conditions
- deforestation_detection - Forest loss detection between time periods
- water_quality_monitoring - Water quality using spectral indices
- 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
- Verify your credentials file exists:
credentials/ee-key.json - Check the file is valid JSON
- Ensure the service account has Earth Engine access
- Restart container:
docker-compose restart
Claude Desktop Can't Connect
- Verify the server is running:
docker-compose ps - Test health endpoint:
curl http://localhost:3000/api/health - Check Claude Desktop config paths are absolute (not relative)
- 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
- Check logs:
docker-compose logs - Verify health:
curl http://localhost:3000/api/health - Test Earth Engine auth manually
- 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.jsonexists and is valid - [ ] Container is running:
docker-compose psshows "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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.