内容
# 地震数据统一模型上下文协议服务器
<!-- mcp-name: io.github.hoon1983/seismic-mcp -->
一个用于全球**地震**数据的统一模型上下文协议服务器。并行查询20个地震数据机构;匹配同一地震的跨机构报告;呈现震级和位置差异,以便AI代理可以查看单个数据源无法显示的信息。
## 状态
进行中:
- **已连接20个数据机构。** FDSN-event: 美国地质调查局(USGS)、欧洲地震中心(EMSC)、美国西北太平洋地震台网(IRIS)、意大利国家地质研究所(INGV)、新西兰地质调查局(GeoNet)、德国联邦地震研究中心(GFZ)、挪威地震阵列(NOA)、法国地质调查局(IPGP)、北加州地震数据中心(NCEDC)、南加州地震数据中心(SCEDC)、国际地震中心(ISC)、瑞士地震台网(SED)、印度尼西亚气象和地质灾害管理中心(BMKG)、土耳其国家地震台网(NIEP)、法国地震和环境观测台网(RESIF)、荷兰皇家气象研究所(KNMI)、加拿大自然资源部(NRCAN)。自定义(非FDSN):日本气象厅(JMA,日本)、土耳其灾害和应急管理总统府(AFAD,土耳其)、冰岛气象局(IMO,冰岛)。
- **跨机构协调。** 时空聚类、主要报告选择(本地权威 > 欧洲地震中心 > 美国地质调查局)、差异检测(震级/位置/深度分布)。审阅公告优先于初步报告。
- **七种MCP工具:** `find_events`、`get_event`、`compare_sources`、`find_discrepancies`、`list_recent_by_agency`、`get_agency_info`、`list_agencies`。
- **60秒TTL缓存**,带有飞行中去重:重复查询时间小于100毫秒。
- **57个单元测试**,涵盖解析器、匹配、主要选择、权威机构、协调和缓存。
- **HTTP前端**,用于手动检查:表单 + Leaflet地图 + 并排比较抽屉。
尚未完成:欧洲地震中心事件ID映射(跨引用美国地质调查局/欧洲地震中心ID以进行更紧密的匹配)、填充`known_aliases.json`、每个事件的多区域权威机构(土耳其的KOERI和AFAD)。
## 安全
本项目报告多个地震数据机构的地震数据,用于研究、新闻、态势感知和好奇心。它**不是早期预警系统**。所有地震报告都在地震已经发生并在震中地区被感受到后到达。对于地震准备和应急响应,请咨询官方当地权威机构(美国地质调查局ShakeAlert、日本气象厅地震早期预警等)。初步震级和位置经常被报告机构修订;请勿根据单次读数做出安全决策。
## 运行
### 作为MCP服务器(Claude Desktop,VS Code等)
发布到PyPI后,无需checkout — `uvx`获取并运行它:
```bash
uvx seismic-mcp
```
添加到`claude_desktop_config.json` — Windows路径为`%APPDATA%\Claude\claude_desktop_config.json`,macOS路径为`~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"seismic": {
"command": "uvx",
"args": ["seismic-mcp"]
}
}
}
```
从本地checkout运行(开发):
```bash
uv sync
uv run python server.py
```
重启Claude Desktop。这些工具将出现在MCP服务器下的工具菜单中。
### 作为Web前端(手动检查)
```bash
uv run python web.py
```
然后打开 <http://127.0.0.1:8765/>。与MCP服务器使用相同的代码路径,只是通过HTTP公开,并带有小型UI。
### 测试
```bash
uv run pytest
```
## 架构
```
server.py FastMCP入口点 — 7个@mcp.tool函数
web.py FastAPI HTTP包装器,围绕相同的工具
src/
schemas.py Pydantic模型:SourceReport、ReconciledEvent等
adapters/
base.py SeismicAdapter协议
fdsn.py 具有感知能力的FDSN-event适配器(处理17个网络)
afad.py 自定义AFAD JSON适配器
jma.py 自定义JMA list.json适配器
imo.py 自定义IMO GeoJSON适配器
__init__.py 注册:make_adapter(code)、supported_agencies()
authorities.py 区域权威边界框查找
matching.py 具有震级缩放阈值的时空聚类
prime_selection.py 头条报告选择规则
reconcile.py 簇 → 具有分布的ReconciledEvent
cache.py TTL缓存 + 飞行中去重
tools/ 每个MCP工具一个文件
data/
agency_metadata.json 每个机构的覆盖范围、延迟、注释
region_authorities.json 区域边界框 → 权威机构
known_aliases.json (手动匹配备用,目前为空)
tests/ pytest套件 — 57个测试,速度快(<1s)
static/index.html HTTP前端的单页UI
```