cyanheads avatar

Earthquake Mcp Server

cyanheads/earthquake-mcp-server

Connects Claude to live earthquake data from USGS ComCat and EMSC SeismicPortal. You get four tools: pull pre-computed USGS feeds by magnitude tier and time window, run filtered searches across both catalogs with parameters like location radius and PAGER alert level, count matching events without fetching full records, and retrieve complete detail for specific events by ID. Two resources let you inject feed data or event detail directly as context. Useful when you need real-time seismic awareness in an agent workflow, want to cross-reference catalogs for verification, or need to filter quakes by felt reports and impact scores. No API keys required for either source.

GitHub stars
3
tools
4
transport
STDIO, HTTP
env vars
11
last updated
Nov 4, 2026

Install

From registry metadata
$ npx add-mcp https://earthquake.caseyjhand.com/mcp --name earthquake

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http earthquake https://earthquake.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 4 tools

Verified live against the running server on Nov 6, 2026.

earthquake_get_feedFetch a USGS pre-computed real-time earthquake feed by magnitude tier and time window. These feeds are CDN-cached by USGS and faster and more available than the query API — use them for "what's happening now" queries. "all" includes microseisms (M<1); "significant" is a USGS c...4 params

Fetch a USGS pre-computed real-time earthquake feed by magnitude tier and time window. These feeds are CDN-cached by USGS and faster and more available than the query API — use them for "what's happening now" queries. "all" includes microseisms (M<1); "significant" is a USGS c...

Parameters* required
cursorstring
Opaque token for the next page, taken verbatim from a previous call's nextCursor. Omit for the first page. Do not construct, parse, or edit it — it encodes a position in the feed snapshot and is re...
limitnumber
Events to return per page. Default 15; a larger value returns at most 1,000 and says so. Applies to the first page; later pages carry the page size inside the cursor and ignore limit, so set it on...
magnitude_tierstring
Minimum magnitude threshold for the feed. "all" includes microseisms (M<1). "1.0" is M1.0+. "2.5" is M2.5+. "4.5" is M4.5+. "significant" is a USGS curated selection based on magnitude, felt report...one of all · 1.0 · 2.5 · 4.5 · significantdefault: 2.5
time_windowstring
Time window for the feed. "hour" typically returns 0–10 events; "month" can exceed 10,000 for the "all" tier. Prefer "hour" or "day" for real-time status checks.one of hour · day · week · monthdefault: day
earthquake_search_eventsSearch USGS or independent global EMSC seismic catalogs by time, magnitude, depth, area and source-specific filters. Both include non-tectonic events; event_type="earthquake" excludes them on USGS. Circle and independently optional box edges intersect. Unsupported EMSC filters...26 params

Search USGS or independent global EMSC seismic catalogs by time, magnitude, depth, area and source-specific filters. Both include non-tectonic events; event_type="earthquake" excludes them on USGS. Circle and independently optional box edges intersect. Unsupported EMSC filters...

Parameters* required
alert_levelstring
Minimum PAGER alert level. PAGER estimates economic loss and casualties. "green" = minimal impact; "red" = extreme. Only available from USGS.one of green · yellow · orange · red
end_timestring
End of time range as ISO 8601, in the same forms start_time accepts. Date-only values mean midnight at the start of the named day, not the whole day. Defaults to current time if omitted.
event_typestring
Filter by upstream event classification, e.g. "earthquake" to exclude quarry blasts and explosions, or "quarry blast" to see only those; a comma-separated list such as "earthquake,explosion" matche...
latitudenumber
Latitude for radius search. Requires longitude and radius_km.
limitnumber
Events to return per call. Default 15; a larger value returns at most 1,000 and says so. Combine with offset to retrieve match sets larger than one call can return.
longitudenumber
Longitude for radius search. Requires latitude and radius_km.
magnitude_typestring
Magnitude type, e.g. "mb" or "mww"; both sources. USGS matches case-insensitively; EMSC matches its own lowercase types ("mb", "mw") case-sensitively and has no "mww". Blank means omitted.
max_depth_kmnumber
Maximum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope.
max_latitudenumber
Northern edge of a bounding-box search, in degrees.
max_longitudenumber
Eastern edge of a bounding-box search, in degrees.
max_magnitudenumber
Maximum magnitude.
min_cdinumber
Minimum DYFI (Did You Feel It?) community intensity (1–12): the strongest shaking people reported for the event. An event without DYFI reports never matches. Only available from USGS.
min_depth_kmnumber
Minimum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope. Shallow quakes (0–70 km) typically cause more surface damage than deep quakes (>300 km).
min_feltinteger
Minimum number of DYFI (Did You Feel It?) reports. Use to find events with confirmed public impact. Only available from USGS.
min_latitudenumber
Southern edge of a bounding-box search, in degrees. Independent of the other three box parameters — supply any of them. Must not exceed max_latitude when both are given.
min_longitudenumber
Western edge of a bounding-box search, in degrees. Range extends beyond ±180 so a box can cross the antimeridian (e.g. min_longitude=170, max_longitude=190) — always keep min_longitude at or below...
min_magnitudenumber
Minimum magnitude (Richter or equivalent). M2.5+ is felt by some people; M5+ can cause damage; M7+ is major.
min_mminumber
Minimum ShakeMap intensity on the Modified Mercalli scale (1–12): the strongest shaking USGS modeled for the event, e.g. 7 for very strong shaking. Finds shaking a magnitude floor or alert_level mi...
min_significanceinteger
Minimum USGS significance score (0–2000+). Combines magnitude, felt reports, and PAGER estimates. Significant events typically score 600+. Only available from USGS.
offsetinteger
Index of the first event to return, counting from 1 — offset=1 is the first match (both upstream APIs reject 0). Omit for the first page, then pass the nextOffset value from a capped result to fetc...

+6 more parameters. See the server's own documentation for the full schema.

earthquake_get_eventFetch one earthquake by event ID: a USGS ID, or an EMSC ID (an origin date and seven-digit sequence, e.g. "20190706_0000043"). Returns the same normalized event a search result carries. For a USGS event it adds a projection of the analysis products only the single-event respon...2 params

Fetch one earthquake by event ID: a USGS ID, or an EMSC ID (an origin date and seven-digit sequence, e.g. "20190706_0000043"). Returns the same normalized event a search result carries. For a USGS event it adds a projection of the analysis products only the single-event respon...

Parameters* required
event_id*string
USGS event ID, e.g. "hv74966427" or "us6000sznj", or EMSC event ID, e.g. "20190706_0000043". Found in the "id" field of earthquake_get_feed and earthquake_search_events results.
includearray
Optional groups: origins (every contributed origin solution, no extra request), magnitudes and arrivals (one shared phase-data download; every arrival of the preferred origin, nearest first), after...
earthquake_count_eventsCount matches without event records, or size an earthquake_search_events query. Omitting start_time uses 30 days; pass explicit bounds for historical periods. queryEcho reports applied filters/window; ignoredFilters names unsupported EMSC inputs. Circle and independently optio...23 params

Count matches without event records, or size an earthquake_search_events query. Omitting start_time uses 30 days; pass explicit bounds for historical periods. queryEcho reports applied filters/window; ignoredFilters names unsupported EMSC inputs. Circle and independently optio...

Parameters* required
alert_levelstring
Minimum PAGER alert level. PAGER estimates economic loss and casualties. "green" = minimal impact; "red" = extreme. Only available from USGS.one of green · yellow · orange · red
end_timestring
End of time range as ISO 8601, in the same forms start_time accepts. Date-only values mean midnight at the start of the named day, not the whole day. Defaults to current time if omitted.
event_typestring
Filter by upstream event classification, e.g. "earthquake" to exclude quarry blasts and explosions from the count, or "quarry blast" to count only those; a comma-separated list such as "earthquake,...
latitudenumber
Latitude for radius search. Requires longitude and radius_km.
longitudenumber
Longitude for radius search. Requires latitude and radius_km.
magnitude_typestring
Magnitude type, e.g. "mb" or "mww"; both sources. USGS matches case-insensitively; EMSC matches its own lowercase types ("mb", "mw") case-sensitively and has no "mww". Blank means omitted.
max_depth_kmnumber
Maximum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope.
max_latitudenumber
Northern edge of a bounding-box search, in degrees.
max_longitudenumber
Eastern edge of a bounding-box search, in degrees.
max_magnitudenumber
Maximum magnitude.
min_cdinumber
Minimum DYFI (Did You Feel It?) community intensity (1–12): the strongest shaking people reported for the event. An event without DYFI reports never matches. Only available from USGS.
min_depth_kmnumber
Minimum depth in kilometers. Bounded to the documented -100 to 1000 km catalog envelope. Shallow quakes (0–70 km) typically cause more surface damage than deep quakes (>300 km).
min_feltinteger
Minimum number of DYFI (Did You Feel It?) reports. Use to count events with confirmed public impact. Only available from USGS.
min_latitudenumber
Southern edge of a bounding-box search, in degrees. Independent of the other three box parameters — supply any of them. Must not exceed max_latitude when both are given.
min_longitudenumber
Western edge of a bounding-box search, in degrees. Range extends beyond ±180 so a box can cross the antimeridian (e.g. min_longitude=170, max_longitude=190) — always keep min_longitude at or below...
min_magnitudenumber
Minimum magnitude (Richter or equivalent). M2.5+ is felt by some people; M5+ can cause damage; M7+ is major.
min_mminumber
Minimum ShakeMap intensity on the Modified Mercalli scale (1–12): the strongest shaking USGS modeled for the event, e.g. 7 for very strong shaking. Finds shaking a magnitude floor or alert_level mi...
min_significanceinteger
Minimum USGS significance score (0–2000+). Combines magnitude, felt reports, and PAGER estimates. Significant events typically score 600+. Only available from USGS.
product_typestring
Required product type, e.g. "moment-tensor" (hyphenated, unlike the moment_tensor detail group); USGS only, matched case-insensitively. Blank means omitted.
radius_kmnumber
Search radius in kilometers from the lat/lon point. Max 20001.6, the ceiling USGS enforces — half the Earth's great-circle circumference. Converted to degrees for EMSC (1° ≈ 111.2 km).

+3 more parameters. See the server's own documentation for the full schema.

Sponsors

Configuration

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

USGS_BASE_URLdefault: https://earthquake.usgs.gov

USGS API base URL. Override for testing or mirroring.

EMSC_BASE_URLdefault: https://www.seismicportal.eu

EMSC API base URL. Override for testing or mirroring.

DEFAULT_LIMITdefault: 15

Events earthquake_search_events returns when a call omits limit (1-1000).

REQUEST_TIMEOUT_MSdefault: 10000

Per-attempt HTTP timeout in milliseconds (1000-120000). Every feed, search, count, and event call also runs under one 50-second total deadline across its requests and retries.

EARTHQUAKE_CLAMP_LIMITSdefault: true

Clamp a search or feed limit above 1000 to 1000 with a notice. Set false to advertise and enforce a maximum of 1000 instead.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/earthquake-mcp-server

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

4 Tools • 3 Resources

Details

Repository
github.com/cyanheads/earthquake-mcp-server
Categories
Search & Web Crawling, Data & Analytics
Package
@cyanheads/earthquake-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
21
Tools verified
Nov 6, 2026

More from cyanheads

Related Search & Web Crawling MCP servers

View all
1cyanheads avatarNoaa Marine Mcp Servercyanheads/noaa-marine-mcp-serverFind NOAA tide stations and NDBC buoys, fetch tide predictions, currents, and live conditions.3stars
2cyanheads avatarOpenstates Mcp Servercyanheads/openstates-mcp-serverSearch bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories.3stars
3defectdojo avatarDefectDojodefectdojo/defectdojo-mcpSearch, triage and import findings in DefectDojo through its REST API v2.3stars
4domdomegg avatarOpen Food Factsdomdomegg/openfoodfacts-mcpSearch and contribute to the Open Food Facts database.3stars
5hampsterx avatarCodex Mcp Bridgehampsterx/codex-mcp-bridgeWraps Codex CLI as MCP tools: codex, review, query, search, structured, ping, listSessions.3stars
6iggredible avatarVim Mcpiggredible/vim-mcpConnect Claude Code to Vim/Neovim - query state, execute commands, search help, record macros3stars