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
![]() Sentinel-2 Alps |
![]() Sentinel-2 Miami |
![]() NAIP Seattle |
![]() NAIP Los Angeles |
![]() HLS L30 Los Angeles |
![]() MODIS Bay Area |
![]() Sentinel-1 SAR Miami |
![]() Copernicus DEM Miami |
![]() ESA WorldCover Alps |
![]() IO LULC Iowa |
![]() MS Buildings Vector Data |
![]() TerraClimate PET Zarr Preview |
![]() GridMET Climate Data Heatmap Animation |
![]() TerraClimate Data Heatmap Animation |
Features
- Unified Interface: Single
download_datatool that automatically detects datasets from natural language queries - Natural 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 sync
Usage
As MCP Server
python -m planetary_computer_mcp.server
Direct 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 --dev
Testing
uv run pytest
Linting/Formatting
uv run pre-commit run --all-files
Architecture
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 point
License
Apache 2.0 License





















