Skip to main content
ClaudeWave
cyanheads avatar
cyanheads

earthquake-mcp-server

View on GitHub

Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts via MCP. STDIO or Streamable HTTP.

MCP ServersOfficial Registry1 stars0 forksTypeScriptApache-2.0Updated today
ClaudeWave Trust Score
95/100
Verified
Passed
  • Open-source license (Apache-2.0)
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Last scanned: 8/19/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/cyanheads/earthquake-mcp-server
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "earthquake": {
      "command": "node",
      "args": ["/path/to/earthquake-mcp-server/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/cyanheads/earthquake-mcp-server and follow its README for install instructions.
Use cases

MCP Servers overview

<div align="center">
  <h1>@cyanheads/earthquake-mcp-server</h1>
  <p><b>Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts via MCP. STDIO or Streamable HTTP.</b>
  <div>4 Tools • 2 Resources</div>
  </p>
</div>

<div align="center">

[![Version](https://img.shields.io/badge/Version-0.3.3-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/earthquake-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.30.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/earthquake-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/earthquake-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.0-blueviolet.svg?style=flat-square)](https://bun.sh/)

</div>

<div align="center">

[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/earthquake-mcp-server/releases/latest/download/earthquake-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=earthquake-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvZWFydGhxdWFrZS1tY3Atc2VydmVyIl19) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22earthquake-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fearthquake-mcp-server%22%5D%7D)

[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)

</div>

<div align="center">

**Public Hosted Server:** [https://earthquake.caseyjhand.com/mcp](https://earthquake.caseyjhand.com/mcp)

</div>

---

## Tools

4 tools for querying global earthquake data from USGS and EMSC:

| Tool | Description |
|:---|:---|
| `earthquake_get_feed` | Fetch a USGS pre-computed real-time earthquake feed by magnitude tier and time window |
| `earthquake_search` | Search earthquakes by time range, magnitude, depth, location radius, PAGER alert level, or felt reports |
| `earthquake_count` | Count earthquakes matching filters without fetching full records |
| `earthquake_get_event` | Fetch complete detail for a specific earthquake by USGS event ID |

### `earthquake_get_feed`

Fetch a USGS pre-computed real-time earthquake feed by magnitude tier and time window.

- CDN-cached by USGS — faster and more available than the FDSN query API
- Five magnitude tiers: `all` (microseisms), `1.0`, `2.5`, `4.5`, and `significant` (USGS-curated by magnitude, felt reports, and PAGER impact)
- Four time windows: `hour`, `day`, `week`, `month`
- Returns event list with counts and the source feed URL
- Paged with an opaque `cursor`: `limit` bounds a page (default 100, max 1000), `totalCount` reports the whole feed, and `nextCursor` retrieves the rest — the broad tiers run past 10,000 events for `month`
- The cursor is opaque because these feeds have no upstream paging parameter and USGS regenerates them about once a minute; a numeric offset across two calls would skip or repeat events
- Best for real-time "what's happening now" queries; use `earthquake_search` for historical or filtered queries

---

### `earthquake_search`

Search earthquakes by time range, magnitude, depth, location radius, PAGER alert level, or felt reports.

- Dual-source: USGS (global, richer metadata) or EMSC (an independent global catalog from the European-Mediterranean Seismological Centre, for cross-verification anywhere)
- Full FDSN ComCat query API parameters: time range, magnitude, depth, location radius
- USGS-specific filters: PAGER alert level (`green`/`yellow`/`orange`/`red`), DYFI felt reports count, significance score, event type
- Every event carries an `event_type` in one vocabulary whichever source served it — the QuakeML names USGS publishes (`earthquake`, `quarry blast`, `explosion`, `ice quake`); EMSC's two-character code is decoded to the same names, with how sure EMSC was kept beside it in `event_certainty` — and the `event_type` filter narrows to one of them on USGS
- Location-based queries: provide `latitude`, `longitude`, and `radius_km` together
- Rectangular study areas: `min_latitude`, `max_latitude`, `min_longitude`, `max_longitude`, each independently optional and forwarded to both sources; combining a box with the radius circle intersects the two. Longitude accepts up to ±360 so a box can cross the antimeridian
- Sort by time (newest first) or magnitude (largest first), ascending or descending
- One call returns at most 20,000 events; page beyond that with `offset`, forwarded straight to the upstream FDSN `offset` parameter on both sources
- `offset` counts from 1, matching both upstream APIs — a capped result carries `totalCount` and the `nextOffset` to pass on the following call, and says so with `countUnavailable` when the follow-up count query failed rather than leaving the total silently absent
- Use `earthquake_count` first to gauge result size
- USGS-specific filters are not supported by EMSC — when `source=emsc` they are dropped and named in `ignoredFilters`, so an unconstrained result set is never mistaken for a filtered one

---

### `earthquake_count`

Count earthquakes matching filters without fetching full records.

- Lightweight alternative to `earthquake_search` for statistical queries ("how many M5+ events in 2025?")
- Same filter surface as `earthquake_search`: time, magnitude, depth, location radius, bounding box, PAGER, DYFI, significance, event type
- A radius over a mining region counts quarry blasts alongside earthquakes — pass `event_type="earthquake"` on USGS to exclude them
- Returns `exceeds_limit` flag when count exceeds 20,000 — signals a full search needs paging
- Echoes the effective query back as `queryEcho`, including the resolved time window — omitting `start_time` counts only the last 30 days
- USGS returns the `max_allowed` cap (20,000); EMSC count endpoint does not expose this field (`max_allowed` will be null)
- USGS-specific filters are dropped and named in `ignoredFilters` when `source=emsc`, the same as on `earthquake_search`

---

### `earthquake_get_event`

Fetch complete detail for a specific earthquake by USGS event ID.

- Returns the normalized event a search result already carries, plus `detail` — a projection of the analysis products only the single-event response holds
- `detail` groups: PAGER alert and report link, ShakeMap peak MMI/PGA/PGV and intensity map, DYFI response count and max CDI, moment-tensor scalar moment and nodal planes, landslide and liquefaction alerts, origin quality (azimuthal gap, station count, location and depth uncertainty), finite-fault rupture length and width
- A group is omitted when USGS produced no such product — a small automatic event usually has none, a large reviewed one has most of them
- Event IDs appear in the `id` field of `earthquake_get_feed` and `earthquake_search` results (e.g. `us6000sznj`, `hv74966427`)
- USGS-only — EMSC events have no per-event detail endpoint

## Resources

| Type | URI pattern | Description |
|:---|:---|:---|
| Resource | `earthquake://feed/{magnitude_tier}/{time_window}` | USGS real-time earthquake feed as injectable context — returns the whole feed, so use the `earthquake_get_feed` tool for the broad tiers |
| Resource | `earthquake://event/{event_id}` | Full USGS earthquake event detail by ID as injectable context, including the same `detail` product projection as `earthquake_get_event` |

## Features

Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core):

- Declarative tool definitions — single file per tool, framework handles registration and validation
- Unified error handling across all tools
- Pluggable auth (`none`, `jwt`, `oauth`)
- Swappable storage backends: `in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`
- Structured logging with optional OpenTelemetry tracing
- Runs locally (stdio/HTTP) or on Cloudflare Workers from the same codebase

Earthquake-specific:

- Two independent global data sources: USGS ComCat (full metadata) and EMSC SeismicPortal (an independent catalog from the European-Mediterranean Seismological Centre, with no PAGER/DYFI/ShakeMap metadata and station coverage densest around Europe and the Mediterranean)
- USGS real-time GeoJSON feeds (CDN-cached, fast availability) plus FDSN event query API
- EMSC FDSN-WS event and count endpoints
- No API key required — both USGS and EMSC are fully public

Agent-friendly output:

- Source attribution on every response (`usgs` / `emsc`) so agents can reason about data provenance
- `exceeds_limit` flag on count responses surfaces truncation risk before a full search
- Fields a source does not publish come back `null`, never as a fabricated zero — `tsunami` and `status` are null on EMSC events, and the rendered text says "not published by source" rather than "no tsunami" or "reviewed"
- `source_catalog` and `auth` carry provenance (which catalog and which authoritative agency produced a solution) so agents can weigh two sources against each other
- USGS-only filters dropped for an EMSC query are named in `ignoredFilters` on both `earthquake_search` and `earthquake_count`
- An upstream rejection surfaces the service's own explanation (the offending parameter and its accepted format) in the error message, not ju
ai-agentbuncyanheadsearthquakeemscgeosciencemcpmcp-servermodel-context-protocolnatural-disasterseismictypescriptusgs

What people ask about earthquake-mcp-server

What is cyanheads/earthquake-mcp-server?

+

cyanheads/earthquake-mcp-server is mcp servers for the Claude AI ecosystem. Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts via MCP. STDIO or Streamable HTTP. It has 1 GitHub stars and its last recorded update is dated 2026-08-18.

How do I install earthquake-mcp-server?

+

You can install earthquake-mcp-server by cloning the repository (https://github.com/cyanheads/earthquake-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is cyanheads/earthquake-mcp-server safe to use?

+

Our security agent has analyzed cyanheads/earthquake-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.

Who maintains cyanheads/earthquake-mcp-server?

+

cyanheads/earthquake-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-08-18, with 4 open issues.

Are there alternatives to earthquake-mcp-server?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy earthquake-mcp-server to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: cyanheads/earthquake-mcp-server
[![Featured on ClaudeWave](https://claudewave.com/api/badge/cyanheads-earthquake-mcp-server)](https://claudewave.com/repo/cyanheads-earthquake-mcp-server)
<a href="https://claudewave.com/repo/cyanheads-earthquake-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-earthquake-mcp-server" alt="Featured on ClaudeWave: cyanheads/earthquake-mcp-server" width="320" height="64" /></a>

More MCP Servers

earthquake-mcp-server alternatives