quake-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@quake-mcpshow me M5+ earthquakes near Japan this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
quake-mcp
An MCP server for the USGS Earthquake Hazards API. It lets AI assistants search the global earthquake catalog, look up event details, count quakes, find "Did You Feel It" reports, and read the USGS realtime feeds. No API key required.
What is MCP?
The Model Context Protocol (MCP) is an open standard that lets AI assistants like Claude connect to external tools and data sources. An MCP server exposes a set of tools and resources over a simple transport (here, stdio); any MCP-capable client (Claude Desktop, Claude Code, Cursor, and others) can launch the server and call its tools during a conversation, so the assistant can answer questions with live data instead of stale training knowledge.
Related MCP server: Weather MCP Server
What this server does
quake-mcp wraps the public USGS earthquake catalog and realtime feeds:
Search earthquakes by time range, magnitude range, bounding box, or center point plus radius
Get full details for a specific event by id (depth, intensity, PAGER alert, tsunami flag, felt reports)
List significant earthquakes from the last N days
Count earthquakes matching a query without listing them
Find quakes with "Did You Feel It" citizen reports near a location
Read the USGS realtime feed summaries (past hour, day, and week) as MCP resources
Output is formatted, truncated to a sane size for LLM context windows, and includes USGS event ids and links for follow-up.
Install
Run directly with npx (recommended, nothing to install):
npx quake-mcpOr install globally:
npm install -g quake-mcpRequires Node.js 20 or newer.
Configuration
Claude Desktop
Add to claude_desktop_config.json (Settings, Developer, Edit Config):
{
"mcpServers": {
"quake": {
"command": "npx",
"args": ["-y", "quake-mcp"]
}
}
}Claude Code
claude mcp add quake -- npx -y quake-mcpCursor
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):
{
"mcpServers": {
"quake": {
"command": "npx",
"args": ["-y", "quake-mcp"]
}
}
}Tools
search_earthquakes
Search the USGS catalog. All parameters are optional; the default is the past 30 days, worldwide, newest first.
Parameter | Type | Description |
| string | ISO 8601 start of the time window. Default: 30 days ago. |
| string | ISO 8601 end of the time window. Default: now. |
| number | Minimum magnitude, e.g. 5 for M5+. |
| number | Maximum magnitude. |
| number | Bounding box edges in decimal degrees. |
| number | Bounding box edges in decimal degrees. |
| number | Circle search: center point and radius in km. All three required together. |
| integer | Max events to return, 1 to 200. Default 25. |
| string |
|
Example prompts:
"Show me all M5+ earthquakes near Japan this week"
"List the 10 largest earthquakes in the last month, sorted by magnitude"
"Any earthquakes within 200 km of Mexico City since June 1?"
get_earthquake
Full details for one event.
Parameter | Type | Description |
| string | USGS event id, e.g. |
Example prompts:
"Get the details for earthquake us7000srcg"
"Was there a tsunami warning for that quake?"
recent_significant
Significant earthquakes from the last N days, using the USGS significance score (the same threshold as the official significant events feed).
Parameter | Type | Description |
| integer | How many days back to look, 1 to 365. Default 7. |
| integer | Max events, 1 to 200. Default 25. |
Example prompts:
"What were the significant earthquakes this week?"
"Any major quakes in the last 30 days?"
count_earthquakes
Count matching events without listing them. Accepts the same time, magnitude, and location filters as search_earthquakes (minus limit and orderby).
Example prompts:
"How many M4.5+ earthquakes happened worldwide in the last 30 days?"
"How many quakes hit within 500 km of Tokyo this year?"
felt_reports
Earthquakes near a location with "Did You Feel It" (DYFI) citizen reports.
Parameter | Type | Description |
| number | Center latitude (required). |
| number | Center longitude (required). |
| number | Search radius in km. Default 300. |
| integer | How many days back to look. Default 30. |
| integer | Minimum number of felt reports. Default 1. |
| integer | Max events. Default 25. |
Example prompts:
"Did anyone feel an earthquake near San Francisco this week?"
"Which quakes near Los Angeles got the most felt reports this month?"
Resources
The server exposes USGS realtime feed summaries as readable resources:
URI | Feed |
| Significant earthquakes, past day |
| Significant earthquakes, past week |
| M4.5+ earthquakes, past day |
| M4.5+ earthquakes, past week |
| M2.5+ earthquakes, past day |
| M1.0+ earthquakes, past hour |
Development
git clone https://github.com/adamcwade/quake-mcp.git
cd quake-mcp
npm install
npm run build # compile TypeScript to dist/
npm test # run unit tests (vitest)
node scripts/smoke.mjs # end-to-end test against the live USGS APITo try the server interactively, use the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsPublishing
npm publish runs the build automatically via prepublishOnly. Only dist/, README.md, and LICENSE are included in the package.
Notes
Data comes from the USGS Earthquake Hazards Program and is in the public domain. This project is not affiliated with or endorsed by USGS.
The USGS API asks clients to be reasonable with request rates; this server sends a descriptive User-Agent and caps result sizes.
License
MIT, copyright 2026 Adam Wade. See LICENSE.
Available Tools
5 toolscount_earthquakesCount earthquakesA
Count earthquakes matching a query without returning event details. Useful for questions like 'how many M4+ quakes hit California this year'. Supports the same time, magnitude, and location filters as search_earthquakes.
| Name | Required | Description | Default |
|---|---|---|---|
| start_time | No | Start of the time window, ISO 8601. Defaults to 30 days ago. | |
| end_time | No | End of the time window, ISO 8601. Defaults to now. | |
| min_magnitude | No | ||
| max_magnitude | No | ||
| min_latitude | No | ||
| max_latitude | No | ||
| min_longitude | No | ||
| max_longitude | No | ||
| latitude | No | ||
| longitude | No | ||
| radius_km | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral disclosure. It correctly indicates the tool returns a count without event details, but does not describe the exact return format (e.g., integer or JSON) or any side effects. For a non-destructive read tool, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by a concrete example. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (count operation) but has 11 optional parameters with low schema coverage and no output schema. The description references search_earthquakes for parameter details, which helps but assumes agent knows that sibling tool. Lacks explicit return format, making it minimally complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is very low (18%, only start_time/end_time have descriptions). The description references search_earthquakes for parameter details but does not add per-parameter semantics or clarify how filters combine. Given 11 parameters with minimal schema descriptions, the description should provide more context or grouping, which it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool counts earthquakes without returning details, using a specific verb and resource. The example query reinforces its purpose, and it is distinct from sibling tools like search_earthquakes which return event details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a use case ('how many M4+ quakes hit California this year') and states it supports the same filters as search_earthquakes, guiding the agent on when to use count vs search. However, it could more clearly exclude scenarios where event details are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
felt_reportsEarthquakes with felt reportsA
Find earthquakes near a location that have 'Did You Feel It' (DYFI) citizen reports. Returns events sorted by time with their felt report counts and maximum reported intensity. Good for 'did anyone feel a quake near San Francisco this week' questions.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Center latitude of the search circle. | |
| longitude | Yes | Center longitude of the search circle. | |
| radius_km | No | Search radius in kilometers. Default 300. | |
| days | No | How many days back to look. Default 30. | |
| min_felt | No | Minimum number of DYFI felt reports. Default 1. | |
| limit | No | Maximum number of events to return. Default 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, description carries full burden. It discloses output structure (sorted by time, felt counts, max intensity) and implies a read-only operation. No contradictions, but could mention limits or that results are limited to events with min_felt reports.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first describes function, second gives a concrete example. Front-loaded with verb and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core use case and output. With 6 parameters and no output schema, description explains return fields but could mention pagination or that 'limit' controls maximum results. Still adequate for query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds overall context but does not provide additional semantics beyond the schema descriptions for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Find earthquakes near a location that have 'Did You Feel It' (DYFI) citizen reports' with a specific verb and resource. It distinguishes from siblings like 'search_earthquakes' by focusing on felt reports and including an example query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context with an example ('did anyone feel a quake near San Francisco this week'), but does not explicitly state when not to use or compare alternatives like 'get_earthquake' for details on a single event.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earthquakeGet earthquake detailsA
Get full details for a single earthquake by its USGS event id (e.g. us7000abcd, returned by the search tools). Includes magnitude, location, depth, time, felt reports, intensity, PAGER alert level, tsunami flag, and a link to the USGS event page.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | USGS event id, for example us7000abcd or nc73649170. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description lists returned fields but does not mention any side effects, rate limits, or authentication needs. Reasonable but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Purpose and details are front-loaded. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description fully informs the agent about input requirements, output contents, and tool purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers event_id 100%. Description adds an example and explains the id source (from search tools), providing value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets full details for a single earthquake by USGS event id. It distinguishes from sibling tools (search, count, recent).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions the id is returned by search tools, implying prior use of search. Lacks explicit when-not-to-use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_significantRecent significant earthquakesA
List significant earthquakes from the last N days, worldwide. Uses the USGS significance score (a combination of magnitude, felt reports, and estimated impact), the same threshold as the official USGS significant events feed.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back to look. Default 7, maximum 365. | |
| limit | No | Maximum number of events to return. Default 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description explains the USGS significance score (magnitude, felt reports, estimated impact) and mentions the threshold matches the official feed. This adds valuable behavioral context beyond a simple listing. However, it omits any mention of the response format or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and contains no unnecessary words. It earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description adequately covers the purpose and filtering logic. It lacks details about return format or sort order, but these are less critical for a list tool with clear parameter constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds no new parameter-specific details beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it lists significant earthquakes from the last N days worldwide, using the USGS significance score. It clearly distinguishes from siblings like search_earthquakes or get_earthquake by focusing on a predefined 'significant' threshold.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving notable earthquakes but does not specify when to use this tool versus alternatives (e.g., search_earthquakes for custom filters, count_earthquakes for totals). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_earthquakesSearch earthquakesA
Search the USGS earthquake catalog by time range, magnitude range, and location. Location can be a bounding box (min/max latitude and longitude) or a circle (latitude, longitude, and radius_km). Defaults to the past 30 days, all magnitudes, worldwide, newest first. Returns a formatted list with magnitude, place, time, coordinates, depth, and event ids.
| Name | Required | Description | Default |
|---|---|---|---|
| start_time | No | Start of the time window, ISO 8601 (e.g. 2026-06-01). Defaults to 30 days ago. | |
| end_time | No | End of the time window, ISO 8601. Defaults to now. | |
| min_magnitude | No | Minimum magnitude, e.g. 5 for M5+. | |
| max_magnitude | No | Maximum magnitude. | |
| min_latitude | No | Bounding box: southern edge in decimal degrees. | |
| max_latitude | No | Bounding box: northern edge in decimal degrees. | |
| min_longitude | No | Bounding box: western edge in decimal degrees. | |
| max_longitude | No | Bounding box: eastern edge in decimal degrees. | |
| latitude | No | Circle search: center latitude. Requires longitude and radius_km. | |
| longitude | No | Circle search: center longitude. Requires latitude and radius_km. | |
| radius_km | No | Circle search: radius around the center in kilometers. | |
| limit | No | Maximum number of events to return (1 to 200). Default 25. | |
| orderby | No | Sort order: time (newest first, default), time-asc, magnitude (largest first), magnitude-asc | time |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It states default behavior and return format, but does not disclose rate limits, authentication needs, pagination limits (though limit parameter exists), or constraints like conflicting parameters. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences covering purpose, filters, location types, defaults, and output. No wasted words. Front-loaded with key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 13 parameters and no output schema, the description covers main use cases well. It could be more explicit about parameter interdependencies (e.g., circle requires latitude+longitude+radius_km). Almost complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds marginal value. It summarizes location options and defaults, but doesn't elaborate on parameter syntax beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the USGS earthquake catalog, specifies filterable fields (time, magnitude, location), and differentiates between bounding box and circle location types. It also lists return fields. This distinguishes it well from sibling tools like count_earthquakes or felt_reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions defaults for time range, magnitude, and location, but lacks explicit guidance on when to choose this tool over siblings (e.g., count_earthquakes for counts, felt_reports for human reports). Usage is implied but no 'when not to use' or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
count_earthquakes - First observed
felt_reports - First observed
get_earthquake - First observed
recent_significant - First observed
search_earthquakes
TDQS
Each tool targets a distinct query type: counting, searching, single detail, significant lists, and felt reports. No overlap in purpose.
Most names follow a verb_noun pattern (count_earthquakes, get_earthquake, search_earthquakes). 'felt_reports' is a noun phrase and 'recent_significant' is adjective_noun, but overall the pattern is largely consistent and readable.
With 5 tools, the surface is well-scoped for earthquake queries. Each tool earns its place without being overwhelming or sparse.
The set covers search, counts, detail lookup, significant events, and citizen reports. Minor gaps like absence of a nearby quakes tool are mitigated by search-by-location. Overall, it's a complete query surface for USGS earthquake data.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Geospatial MCP server for earthquake, tsunami, volcano, disaster, and FX data queries.
USGS Earthquake Catalog MCP (FDSNWS event API).
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseAqualityDmaintenanceAn unofficial MCP server that provides access to Indonesia's BMKG data, including real-time earthquake reports, village-level weather forecasts, and extreme weather alerts. It enables users to search for location codes and retrieve detailed meteorological and geophysical information through natural language.9MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server integrated with the QWeather API that provides real-time weather forecasts and meteorological warnings for AI assistants. It enables users to query current conditions and disaster alerts for specific cities or coordinates.22-
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with Google Earth Engine, enabling geospatial analysis such as dataset visualization, statistics computation, and search via AI assistants.14MIT
- AlicenseAqualityCmaintenanceMCP server providing AI agents with access to NASA and space/astronomy data including APOD, Mars rover photos, near-Earth asteroids, exoplanets, Earth imagery, natural events, and space weather.11MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adamcwade/quake-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server