@pipeworx/nasa-gibs
Connect: https://gateway.pipeworx.io/nasa-gibs/mcp · Install: one-click buttons
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 3
NASA GIBS — the ~1,300-layer global satellite imagery catalogue behind NASA Worldview, with daily true-colour mosaics, thermal anomalies, sea-surface temperature, aerosols, snow and ice cover and night lights, most of them with a multi-decade daily time series.
Tools
gibs_list_layers(query?, projection?, limit?)— search the catalogue by subject or identifier; returns each layer’s id, title, grid and available date range.gibs_layer_info(layer, projection?)— one layer’s full time coverage, native resolution, format, extent, colour map and legend URLs, and tile template.gibs_tile_url(layer, date?, latitude?, longitude?, zoom?, tile_row?, tile_col?, projection?)— a ready-to-fetch image tile URL, with the tile’s own geographic bounds.
Auth
Keyless. No registration, no rate-limit headers.
Data sources
- https://gibs.earthdata.nasa.gov/wmts/{projection}/best/1.0.0/WMTSCapabilities.xml —
the layer catalogue, one document per projection (
epsg4326,epsg3857,epsg3413,epsg3031).
Things the next person would otherwise rediscover
- There is no JSON layer index. The WMTS capabilities XML is the only
machine-readable catalogue and it is ~5 MB per projection. It is parsed once
per isolate and the (much smaller) result cached in module scope for 6 hours;
a per-call re-parse would spend seconds of CPU on a document that changes
about once a day. The cache is populated only inside a request — never at
module load, where the Workers runtime reports
Date.now()as 1970 and every entry would read as infinitely stale. - Each layer has several
<ResourceURL resourceType="tile">templates. Only one carries{Time}; that is the one worth handing a caller. The others drop the date silently and serve whatever GIBS considers current. MatrixWidthis not a power of two (levels go 2, 3, 5, …), so tile row/column cannot be derived from the zoom level alone. They are computed fromScaleDenominatorthe way WMTS specifies:tileSpan = ScaleDenominator × 0.00028 m × TileWidth ÷ metresPerUnit, withmetresPerUnit= 111319.49 forepsg4326(degrees) and 1 for the metre-based projections.TopLeftCorneris written x-then-y (-180 90), not the lat-then-lon axis order EPSG:4326 formally prescribes.- Lat/lon → tile conversion is offered for
epsg4326andepsg3857only. The two polar stereographic grids needtile_row/tile_coldirectly, and the tool says so rather than returning a wrong tile.
Tools
- gibs_list_layers — “What NASA satellite imagery layers are there for wildfires / sea ice / aerosols?” — search NASA GIBS, the ~1,300-layer imagery catalogue behind NASA Worldview. AUTHORITATIVE for which global satellit
- gibs_layer_info — Everything NASA GIBS publishes about one imagery layer: its full title, the dates it actually covers (as ISO 8601 start/end/period ranges), the most recent date available, native tile grid and zoom de
- gibs_tile_url — “Give me the satellite image of Los Angeles on 2026-09-10” — build a ready-to-fetch NASA GIBS image tile URL for a layer, a date and a place. Give a latitude/longitude and a zoom level and it computes
Tools
gibs_layer_info— Everything NASA GIBS publishes about one imagery layer: its full title, the dates it actually covers (as ISO 8601 start/end/period ranges), the most recent date available, native tile grid and zoom degibs_list_layers— What NASA satellite imagery layers are there for wildfires / sea ice / aerosols? — search NASA GIBS, the ~1,300-layer imagery catalogue behind NASA Worldview. AUTHORITATIVE for which global satellitegibs_tile_url— Give me the satellite image of Los Angeles on 2026-09-10 — build a ready-to-fetch NASA GIBS image tile URL for a layer, a date and a place. Give a latitude/longitude and a zoom level and it computes t