Skip to main content

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

MIT

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcgibs-2026.2.18.1.tar.gz (108.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcgibs-2026.2.18.1-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

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

Hashes for mcgibs-2026.2.18.1.tar.gz
Algorithm Hash digest
SHA256 c9b7cad20f23e3d3ddbb3f64ffd2c90a918e737d8660b96daf7318ec20cab904
MD5 0d4a7a8f2f89ea5c98e8efdde8cf7587
BLAKE2b-256 ab81cab97c851cc389316b32e7639b2336c552e4c245dfb837ad7f8bc382da3d

See more details on using hashes here.

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

Hashes for mcgibs-2026.2.18.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1b5aa0677ab111aa11e6868390bc3761440444a73fbf97e0786e0b5a513c0a53
MD5 1b4da769dccdbf7e0d9a7698b7e9a63b
BLAKE2b-256 1c7348aee94b95223d94cac4dd01805ee40188e43dd3f3252e576bc2fca3e886

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page