npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

earthdeck

v0.3.1

Published

The Earth-system data layer: an MCP server + live mission-control dashboard over free, open data. Satellite imagery, NDVI, SAR flood mapping, wildfires, El Niño tracking, ocean temperatures, CO₂, the global temperature record, sea ice, earthquakes, air qu

Readme

earthdeck

Give Claude eyes on Earth. An MCP server plus a live mission-control dashboard — the data layer for the Earth system, over free, open data. Ask Claude to look at a place and it pulls satellite imagery, computes vegetation/water/burn indices, surfaces live wildfires and disasters, and diffs a location across time to detect deforestation, flooding, or burn scars. Ask it about the planet and it tracks El Niño, ocean temperatures since 1981, CO₂ since 1958, the global temperature record since 1880, polar sea ice, earthquakes, air quality, and per-place climate history since 1940 — with trends, because the historic record is where the signal lives. As it works, a browser dashboard lights up with what it's seeing.

Claude is the brain; the dashboard is the canvas. The MCP best-effort streams every result to a local dashboard you watch live — but it works perfectly with the dashboard off too.

Try it in 30 seconds (zero keys, zero config)

npx -y earthdeck demo

That's it. A dashboard opens in your browser and fills with the planet, live: CO₂, global temperature, El Niño state, Arctic sea ice, this week's earthquakes, and every open natural disaster — charts, markers, and a vital-signs grid on a satellite map. No account, no key, no config file. (Needs Node ≥ 20.)

Use it from Claude (one command)

claude mcp add earthdeck -- npx -y earthdeck

Then just ask: "What's the state of the planet right now?" · "Is El Niño coming?" · "How has Berlin's climate changed since 1950?" · "Any big earthquakes this week?"

What it can do

| Tool | What it does | Needs | | --- | --- | --- | | eo_snapshot | Quick satellite image of a bbox (NASA Worldview/GIBS, MODIS/VIIRS) — true-color, false-color, or fire overlay | — | | events | Live natural-disaster events worldwide (NASA EONET): wildfires, storms, volcanoes, floods | — | | geo_resolve | Turn a place name into a bounding box (OpenStreetMap) | — | | stac_search | Search open satellite archives (Sentinel-2/-1, Landsat) for scenes + COG asset URLs (Earth Search STAC) | — | | fires_in | Active fire / thermal-anomaly detections (NASA FIRMS), near-real-time | FIRMS_MAP_KEY | | eo_render | High-res (10 m) Sentinel-2 imagery — trueColor / falseColor / NDVI ramp | CDSE | | sar_render | All-weather Sentinel-1 SAR backscatter (sees through cloud/smoke/night) — VV / VH / false-color | CDSE | | sar_water | All-weather water / flood extent from Sentinel-1 (water % of the AOI via low VV backscatter) | CDSE | | sar_flood | Flood onset: SAR water extent before vs after an event, and the change (Δ water %) | CDSE | | eo_index | NDVI / NDWI / NBR statistics over a least-cloudy Sentinel-2 composite | CDSE | | eo_search | Search the Sentinel-2 archive for scenes + cloud cover | CDSE | | eo_compare | Change detection: render two dates + the index delta (deforestation/flood/burn) | CDSE |

Planetary indicators — the Earth system over time (all zero-key)

| Tool | What it does | History | | --- | --- | --- | | planet_pulse | The planet's vital signs in one call: CO₂, global temp, ENSO, sea ice, quakes, open disasters | now | | enso | El Niño / La Niña tracking via NOAA's official Oceanic Niño Index, with phase + event rule | 1950→ | | ocean_temp | Daily sea-surface temperature for any ocean point (NOAA OISST 0.25°), with °C/decade trend | 1981→ | | co2 | Atmospheric CO₂ at Mauna Loa (the Keeling curve) — latest, YoY growth, decadal trend | 1958→ | | global_temp | NASA GISTEMP global temperature anomaly — latest, warmest years, warming rate | 1880→ | | sea_ice | Arctic / Antarctic daily sea-ice extent (NSIDC) vs the 1981–2010 climatology | 1978→ | | quakes | Recent earthquakes (USGS): magnitude, depth, tsunami flag, PAGER alert | real-time | | climate_history | How a place's climate changed: ERA5 temperature/precip/wind, annual trend per decade | 1940→ | | air_quality | PM2.5 / PM10 / O₃ / NO₂ / US AQI for any point (Copernicus CAMS), WHO-guideline flags | 48 h | | river_discharge | Daily river flow at any point (GloFAS) — flood/drought signal vs the period mean | 1984→ | | earthdata_search | Discover datasets across NASA's full Earth-science archive (~50k collections, CMR) by topic/bbox/time | catalog |

The Earth is one interconnected system — and these tools are built to be cross-referenced: ENSO ↔ fires, floods and SST anomalies; river discharge ↔ SAR flood mapping; climate trends ↔ what the imagery shows on the ground.

Every Copernicus result (eo_render/eo_index/eo_compare) carries a provenance block — data source, sensor, composite window, cloud-mask method + masked classes, % valid pixels, contributing scene IDs — so the output is decision-support you can audit, not a bare number. Every indicator result names its source and carries the series, so claims are checkable.

The zero-key tools (eo_snapshot, events, geo_resolve, stac_search, and all ten planetary-indicator tools) work with no setup at all.

Setup details

Want the dashboard alongside Claude? Run npx -y earthdeck dashboard in a second terminal and watch the map light up as Claude works (it's optional — tools behave identically without it).

{
  "mcpServers": {
    "earthdeck": {
      "command": "npx",
      "args": ["-y", "earthdeck"]
    }
  }
}

Unlock the satellite tools (2 free keys, ~5 minutes)

15 of the 23 tools need nothing. The rest want free credentials:

| Key | Unlocks | How to get it | | --- | --- | --- | | FIRMS_MAP_KEY | fires_in (live wildfire detections) | Enter your email at firms.modaps.eosdis.nasa.gov/api/map_key — emailed instantly | | CDSE_CLIENT_ID + CDSE_CLIENT_SECRET | eo_render, eo_index, eo_search, eo_compare, sar_render, sar_water, sar_flood (10 m Sentinel imagery + radar) | Free account at dataspace.copernicus.eu → User Settings → OAuth clients → Create (copy the secret immediately — it's shown once) |

Pass them where your MCP client expects env vars, e.g.:

claude mcp add earthdeck -e FIRMS_MAP_KEY=xxx -e CDSE_CLIENT_ID=xxx -e CDSE_CLIENT_SECRET=xxx \
  -- npx -y earthdeck

Then verify everything in one shot:

npx -y earthdeck doctor
  Zero-key data sources: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
  Optional keys:
    ✓ Copernicus CDSE   OAuth token OK
    ✓ NASA FIRMS        key valid (0/5000 transactions used)
  All zero-key sources reachable — 23/23 tools ready to use.

doctor checks every upstream source and tells you exactly what's ready and what's missing (with the link to fix it). See .env.example for all variables.

Goes well with: NASA's Earthdata MCP

earthdeck's earthdata_search discovers datasets across NASA's catalog; for granule-level file search, variables, and citations, NASA hosts its own MCP server over the same catalog — the two compose nicely (NASA's finds the files, earthdeck analyzes the world):

claude mcp add --transport http earthdata https://cmr.earthdata.nasa.gov/mcp/v1

The dashboard

Each tool posts a "card" — imagery overlays and NDVI/index panels render on a MapLibre map (NASA Blue Marble basemap), events/fires/earthquakes plot as markers, time-series tools draw charts (the Keeling curve, ONI, sea-ice vs climatology…), planet_pulse shows a vital-signs grid, and eo_compare shows a before/after pair with the delta. The push is best-effort: if the dashboard isn't running, tools behave exactly the same.

Example sessions

You: What's the NDVI around Manaus, and how has the forest changed since 2019?

Claude calls geo_resolve("Manaus, Brazil") → bbox, then eo_index(bbox, "NDVI") → mean ≈ 0.28, then eo_compare(bbox, "2019-08-01", "2026-06-01", "NDVI") → renders both dates and reports the NDVI delta. Meanwhile the dashboard shows the imagery, the index panel, and the before/after comparison.

You: Is the Rio Negro flooding right now?

Claude calls river_discharge(-3.1, -60) → latest flow 2.5× the 2-year mean (rising-water season), then confirms from orbit with sar_flood → water extent +2 pts since April. Two independent instruments, one answer — that's the point of having the whole Earth system in one toolbox.

You: What's the state of the planet?

One planet_pulse call: CO₂ 432 ppm (+1.8 YoY), global anomaly +1.12 °C, ENSO neutral, both poles' sea ice below the 10th percentile, 70 quakes M5+ this week, 200 open disasters — each with its source named.

Develop

pnpm install
pnpm build            # tsc (server -> dist/) + vite build (web -> dist/web/)
pnpm typecheck
pnpm test             # offline test suite (node:test) — no network or API keys needed
pnpm dev              # MCP server on stdio (from source)
pnpm dev:dashboard    # dashboard server (from source)
pnpm dev:web          # vite dev server for the dashboard UI

Tests mock the network, so the whole suite runs with zero credentials — CI (.github/workflows/ci.yml) runs typecheck + test + build on every push.

Data sources & attribution

  • NASA EOSDIS GIBS / Worldview, FIRMS, EONET, GISTEMP (NASA open data).
  • Copernicus Sentinel-1/-2 via the Copernicus Data Space Ecosystem (ESA / European Union); Copernicus CAMS air quality and ERA5 / GloFAS via Open-Meteo (CC-BY 4.0).
  • NOAA: CPC Oceanic Niño Index, GML Mauna Loa CO₂, OISST via CoastWatch ERDDAP.
  • NSIDC Sea Ice Index (G02135) · USGS Earthquake Hazards Program.
  • Basemap & geocoding: NASA Blue Marble; OpenStreetMap Nominatim.

Notes

This wraps documented, public, open APIs and is scoped to your own (free) credentials. It is observation only — there is no satellite tasking or control here. Respect each provider's terms and rate limits (Copernicus processing-unit quotas, FIRMS transaction limits, Nominatim ≤1 req/s).

License

MIT — see LICENSE.