{
  "markdown": "# seismic-mcp\n\n<!-- mcp-name: io.github.hoon1983/seismic-mcp -->\n\nA unified Model Context Protocol server for global **earthquake** data. Queries 20 seismic agencies in parallel; matches cross-agency reports of the same earthquake; surfaces magnitude and location discrepancies so AI agents can see what one feed alone would hide.\n\n## Status\n\nWorking:\n\n- **20 agencies wired up.** FDSN-event: USGS, EMSC, IRIS, INGV, GeoNet, GFZ, NOA, IPGP, NCEDC, SCEDC, ISC, SED, BMKG, NIEP, RESIF, KNMI, NRCAN. Custom (non-FDSN): JMA (Japan), AFAD (Türkiye), IMO (Iceland).\n- **Cross-agency reconciliation.** Spatiotemporal clustering, prime-report selection (local authority > EMSC for Europe > USGS), discrepancy detection (magnitude/location/depth spread). Reviewed bulletins trump preliminary.\n- **Seven MCP tools:** `find_events`, `get_event`, `compare_sources`, `find_discrepancies`, `list_recent_by_agency`, `get_agency_info`, `list_agencies`.\n- **TTL cache** (60 s) with in-flight de-dup: repeated queries are sub-100 ms.\n- **57 unit tests** covering parsers, matching, prime-selection, authorities, reconciliation, and cache.\n- **HTTP frontend** for manual inspection: form + Leaflet map + side-by-side compare drawer.\n\nNot yet built: EMSC eventid mapping (cross-references USGS/EMSC IDs for tighter matching), populated `known_aliases.json`, multi-region per-event authority (KOERI alongside AFAD for Türkiye).\n\n## Safety\n\nReports earthquake data from multiple seismic agencies for research, journalism, situational awareness, and curiosity. It is NOT an early-warning system. All earthquake reports arrive AFTER shaking has already occurred where it was felt. For earthquake preparedness and emergency response, consult official local authorities (USGS ShakeAlert, JMA Earthquake Early Warning, etc.). Preliminary magnitudes and locations are routinely revised by reporting agencies; never make safety decisions based on a single reading.\n\n## Run\n\n### As an MCP server (Claude Desktop, VS Code, etc.)\n\nOnce published to PyPI, no checkout is needed — `uvx` fetches and runs it:\n\n```bash\nuvx seismic-mcp\n```\n\nAdd to `claude_desktop_config.json` — Windows path is `%APPDATA%\\Claude\\claude_desktop_config.json`, macOS `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"seismic\": {\n      \"command\": \"uvx\",\n      \"args\": [\"seismic-mcp\"]\n    }\n  }\n}\n```\n\nTo run from a local checkout instead (development):\n\n```bash\nuv sync\nuv run python server.py\n```\n\nRestart Claude Desktop. The tools appear under the seismic-mcp server in the tools menu.\n\n### As a web frontend (manual inspection)\n\n```bash\nuv run python web.py\n```\n\nThen open <http://127.0.0.1:8765/>. Same code paths as the MCP server, just exposed over HTTP with a small UI.\n\n### Tests\n\n```bash\nuv run pytest\n```\n\n## Architecture\n\n```\nserver.py              FastMCP entry point — 7 @mcp.tool functions\nweb.py                 FastAPI HTTP wrapper around the same tools\nsrc/\n  schemas.py           Pydantic models: SourceReport, ReconciledEvent, ...\n  adapters/\n    base.py            SeismicAdapter protocol\n    fdsn.py            Header-aware FDSN-event adapter (handles 17 networks)\n    afad.py            Custom AFAD JSON adapter\n    jma.py             Custom JMA list.json adapter\n    imo.py             Custom IMO GeoJSON adapter\n    __init__.py        Registry: make_adapter(code), supported_agencies()\n  authorities.py       Regional-authority bbox lookup\n  matching.py          Spatiotemporal clustering with mag-scaled thresholds\n  prime_selection.py   Headline-report selection rules\n  reconcile.py         Cluster → ReconciledEvent with spreads\n  cache.py             TTL cache + in-flight de-dup\n  tools/               One file per MCP tool\ndata/\n  agency_metadata.json    Per-agency coverage, latency, notes\n  region_authorities.json Region bboxes → authoritative agency\n  known_aliases.json      (manual fallback for matching, currently {})\ntests/                 pytest suite — 57 tests, fast (<1s)\nstatic/index.html      Single-page UI for the HTTP frontend\n```\n",
  "bytes": 4073,
  "sha": "dee6d2496dd2281cf862ffa138ec111299601efeb5d37bd1b10a061fe09e79df",
  "repo_slug": "hoon1983/seismic-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_hoon1983_seismic_mcp_f23082d8/readme"
}