FastMCP server for NASA Global Imagery Browse Services (GIBS)
Project description
mcgibs
NASA Earth science visualizations for LLMs.
An MCP server that connects language models to NASA GIBS (Global Imagery Browse Services) — 1000+ visualization layers covering satellite imagery, scientific data products, and derived Earth observations, updated daily.
Three pillars:
- Discovery — search layers by keyword, browse measurement categories, check date availability
- Visualization — fetch imagery and data products by place name and date, compare dates side-by-side, composite multiple layers
- Interpretation — natural-language colormap explanations, legend graphics, scientific context
No API key required. All data is freely available from NASA.
Quick Start
From PyPI
uvx mcgibs
Add to Claude Code
claude mcp add mcgibs -- uvx mcgibs
Local development
git clone https://git.supported.systems/rpm/mcgibs.git
cd mcgibs
uv sync --all-extras
uv run mcgibs
Or add a local dev server to Claude Code:
claude mcp add mcgibs-local -- uv run --directory /path/to/mcgibs mcgibs
Tools
| Tool | Description |
|---|---|
search_gibs_layers |
Search 1000+ layers by keyword, measurement, period, or status |
get_layer_info |
Full metadata for a layer — instrument, platform, resolution, dates |
list_measurements |
All measurement categories with layer counts |
check_layer_dates |
Available date range for a layer (capabilities + live DescribeDomains) |
get_imagery |
Fetch a visualization by layer, date, and place name or bbox |
compare_dates |
Side-by-side comparison of two dates for change detection |
get_imagery_composite |
Overlay up to 5 layers into a single composite image |
explain_layer_colormap |
Natural-language explanation of what colors represent |
get_legend |
Pre-rendered legend graphic for a layer |
resolve_place |
Geocode a place name to coordinates and bounding box |
build_tile_url |
Construct a direct WMTS tile URL for embedding |
Resources
| URI | Description |
|---|---|
gibs://catalog |
Full layer catalog grouped by measurement category |
gibs://layer/{layer_id} |
Individual layer metadata as JSON |
gibs://colormap/{layer_id} |
Colormap explanation for a layer |
gibs://dates/{layer_id} |
Available date range for a layer |
gibs://projections |
Supported GIBS projections and endpoints |
Prompts
| Prompt | Parameters | Description |
|---|---|---|
earth_overview |
(none) | Introduction to GIBS with suggested explorations |
investigate_event |
event_type, location, date |
Guided workflow for investigating natural events |
satellite_snapshot |
place, date |
Quick satellite view of any location |
climate_monitor |
indicator, location, start_date, end_date |
Track climate changes over time |
layer_deep_dive |
layer_id, location, date |
Full scientific analysis of a single layer |
multi_layer_story |
topic, location, date |
Data journalism — composite layers to tell a story |
polar_watch |
pole, date, compare_date |
Arctic/Antarctic ice and snow monitoring |
Example Workflows
Investigating a wildfire
User: Use the investigate_event prompt for the 2025 LA wildfires
→ search_gibs_layers("fire")
→ search_gibs_layers("true color")
→ check_layer_dates("MODIS_Terra_CorrectedReflectance_TrueColor")
→ get_imagery("MODIS_Terra_CorrectedReflectance_TrueColor", "2025-01-08", place="Los Angeles")
→ get_imagery("MODIS_Fires_Terra", "2025-01-08", place="Los Angeles")
→ compare_dates("MODIS_Terra_CorrectedReflectance_TrueColor", "2025-01-01", "2025-01-10", place="Los Angeles")
→ explain_layer_colormap("MODIS_Fires_Terra")
Monitoring sea ice decline
User: Use climate_monitor to track Arctic sea ice from March to September
→ search_gibs_layers("sea ice")
→ check_layer_dates("AMSR2_Sea_Ice_Concentration_12km")
→ explain_layer_colormap("AMSR2_Sea_Ice_Concentration_12km")
→ compare_dates("AMSR2_Sea_Ice_Concentration_12km", "2025-03-01", "2025-09-01", bbox=[-180,60,180,90])
→ get_legend("AMSR2_Sea_Ice_Concentration_12km")
Quick look at anywhere on Earth
User: Use satellite_snapshot for the Great Barrier Reef
→ resolve_place("Great Barrier Reef")
→ get_imagery("MODIS_Terra_CorrectedReflectance_TrueColor", "2025-06-01", place="Great Barrier Reef")
→ search_gibs_layers("chlorophyll")
→ get_imagery_composite(["MODIS_Terra_CorrectedReflectance_TrueColor", "MODIS_Terra_Chlorophyll_A"], "2025-06-01", place="Great Barrier Reef")
Projections
| EPSG | Description | Use case |
|---|---|---|
| 4326 | Geographic (WGS84) | Default — global coverage, most layers |
| 3857 | Web Mercator | Web map tiles, Leaflet/Mapbox integration |
| 3413 | Arctic Polar Stereographic | Arctic-focused imagery |
| 3031 | Antarctic Polar Stereographic | Antarctic-focused imagery |
Development
uv sync --all-extras
# Lint
uv run ruff check src/ tests/
# Tests
uv run pytest
# Build
uv build
Architecture
src/mcgibs/
server.py MCP server — tools, resources, prompts, middleware
client.py GIBS HTTP client — WMS, WMTS, colormaps, geocoding
capabilities.py WMTS GetCapabilities parser and layer search
colormaps.py Colormap XML parser and natural-language interpreter
models.py Pydantic models — Layer, BBox, GeoResult, ColormapEntry
constants.py API endpoints, projections, tile matrix definitions
geo.py Bounding box math and geocoding helpers
License
Links
- NASA GIBS
- GIBS API Documentation
- Worldview — NASA's browser-based GIBS viewer
- FastMCP — the MCP framework powering this server
- Source
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcgibs-2026.2.18.1.tar.gz.
File metadata
- Download URL: mcgibs-2026.2.18.1.tar.gz
- Upload date:
- Size: 108.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9b7cad20f23e3d3ddbb3f64ffd2c90a918e737d8660b96daf7318ec20cab904
|
|
| MD5 |
0d4a7a8f2f89ea5c98e8efdde8cf7587
|
|
| BLAKE2b-256 |
ab81cab97c851cc389316b32e7639b2336c552e4c245dfb837ad7f8bc382da3d
|
File details
Details for the file mcgibs-2026.2.18.1-py3-none-any.whl.
File metadata
- Download URL: mcgibs-2026.2.18.1-py3-none-any.whl
- Upload date:
- Size: 32.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b5aa0677ab111aa11e6868390bc3761440444a73fbf97e0786e0b5a513c0a53
|
|
| MD5 |
1b4da769dccdbf7e0d9a7698b7e9a63b
|
|
| BLAKE2b-256 |
1c7348aee94b95223d94cac4dd01805ee40188e43dd3f3252e576bc2fca3e886
|