Planetary Computer MCP Server
Planetary Computer MCP Server
A Python implementation of the Planetary Computer MCP server, providing unified access to satellite and geospatial data through natural language queries.
Sample Outputs
Features
Unified Interface: Single
download_datatool that automatically detects datasets from natural language queriesNatural Language Geocoding: Automatically converts place names (e.g., "San Francisco", "the Alps", "Amazon rainforest") to geospatial bounding box coordinates using the Nominatim geocoding service—no need to manually specify coordinates
Multi-format Support: Raster (GeoTIFF), Vector (GeoParquet), and Zarr data
Automatic Visualization: Generate RGB/JPEG previews for LLM analysis
Fast Downloads: Uses odc-stac for efficient COG access
Installation
uv syncUsage
As MCP Server
python -m planetary_computer_mcp.serverDirect API Usage
from planetary_computer_mcp.tools.download_data import download_data
# Download Sentinel-2 data for San Francisco
result = download_data(
query="sentinel-2 imagery",
aoi="San Francisco",
time_range="2024-01-01/2024-01-31"
)
print(f"Raw data: {result['raw']}")
print(f"Visualization: {result['visualization']}")Tools
download_data
Unified tool for raster, DEM, land cover, and climate data.
Parameters:
query: Natural language query (e.g., "sentinel-2", "elevation data")aoi: Bounding box [W,S,E,N] or place nametime_range: ISO8601 datetime rangemax_cloud_cover: Maximum cloud cover (optical data)
Returns:
Raw GeoTIFF/Zarr/Parquet file
RGB/JPEG visualization
Metadata
download_geometries
Tool for vector/building data.
Parameters:
collection: Collection ID (e.g., "ms-buildings")aoi: Bounding box or place namelimit: Maximum features
Returns:
GeoParquet file
Map visualization
Feature count
Supported Datasets
See collections.md for the complete list of supported datasets.
Development
Setup
uv sync --devTesting
uv run pytestLinting/Formatting
uv run pre-commit run --all-filesArchitecture
src/
├── core/ # Core utilities
│ ├── stac_client.py # STAC search wrapper
│ ├── geocoding.py # Place name → bbox
│ ├── collections.py # Dataset metadata
│ ├── raster_utils.py # odc-stac helpers
│ ├── vector_utils.py # DuckDB helpers
│ ├── visualization.py # Matplotlib viz
│ └── zarr_utils.py # Xarray Zarr helpers
├── tools/ # MCP tools
│ ├── download_data.py
│ └── download_geometries.py
└── server.py # MCP server entry pointLicense
Apache 2.0 License
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/isaaccorley/planetary-computer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server