@cyanheads/earthquake-mcp-server

中文文档
0.5.2发布于 2026/11/14Apache-2.0TypeScriptES Module近 30 天下载 2036

搜索USGS和EMSC地震数据——通过MCP实时输入,事件查询和地震计数. (原始内容存档于2012-10-12). STIO or Streamable HTTP.

中文使用文档
文档目录25 节
  1. 概览
  2. 工具
  3. 资源
  4. 技能
  5. 能力参考
  6. earthquake_get_feed 工具
  7. earthquake_search_events 工具
  8. earthquake_count_events 工具
  9. earthquake_get_event 工具
  10. earthquake://feed/{magnitude_tier}/{time_window} 资源
  11. earthquake://event/{event_id} 资源
  12. 特征
  13. 开始
  14. 公共托管实例
  15. 自有/当地
  16. 先决条件
  17. 安装
  18. 配置
  19. 运行服务器
  20. 地方发展
  21. 夹克
  22. 项目结构
  23. 发展指南
  24. 捐款
  25. 许可证

@cyanheads/地震-mcp-服务器

搜索USGS和EMSC地震数据——通过MCP实时输入,事件查询和地震计数. (原始内容存档于2012-10-12). STIO or Streamable HTTP.

4个工具 • 3个资源

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概览

来自USGS ComCat和EMSC地震门户网站的地震数据. 获取实时地震素材,按时间,规模,深度和位置搜索并计数地震事件,并拉出单个事件的全部分析细节.

工具

工具说明
earthquake_get_feed按震级和时间窗口获取USGS预压缩的实时地震信号
earthquake_search_events按时间范围、规模、深度、位置半径、PAGER警报级别、感觉报告或ShakeMap和DYFI强度搜索地震
earthquake_count_events不获取完整记录而计算匹配的地震过滤器
earthquake_get_event获取一次地震,由USGS或EMSC事件ID提供,并附有USGS分析产品和选入源、规模、相继抵达、余震预报和PAGER损失估计

资源

资源说明
earthquake://feed/{magnitude_tier}/{time_window}USGS实时的首个100个活动页面, 精确的续作 URI
earthquake://feed/{magnitude_tier}/{time_window}/page/{cursor}继续使用返回的保存的种子生成 next_uri
earthquake://event/{event_id}由 USGS 或 EMSC 事件 ID 作为可注入上下文的地震, 相同 detail 产品预测为 earthquake_get_event

技能

技能说明
earthquake-guide代理向导 earthquake_* 工具:USGS与EMSC之间的标识链、覆盖面和规模门,以及产品和 include 团体回答一个问题。 由插件主机装入 skills/ 并服务于MCP skill://earthquake-guide/SKILL.md

能力参考

earthquake_get_feed 工具

  • 选择一个分级( E)all, (中文(简体) ), 1.0, (中文(简体) ), 2.5, (中文(简体) ), 4.5, (中文(简体) ), significant)和一个窗口(hour, (中文(简体) ), day, (中文(简体) ), week, (中文(简体) ), month。USGS缓存这些种子;使用 earthquake_search_events 用于历史查询或过滤查询.
  • 返回事件、页数、生成时间和源信息URL. all 包括微观观点; significant 由USGS使用规模、感知报告和PAGER影响进行校准.
  • 每页返回 limit 事件(默认 15),只减少最后一页。 A 类 limit 超过 1000 个返回 1000 个, 并注明所请求的和应用的值 EARTHQUAKE_CLAMP_LIMITS=false 而是被拒绝. limit 适用于第一页;后页将页面大小保留在光标中. totalCount 报告整个种子; 通过 nextCursor 与同级和同入窗口.
  • 续取读取"初读"一代,不受上游编辑的影响. 保留时间可长达15分钟,但需经过能力驱逐并重新启动. cursor_expired 表示在没有光标的情况下重新启动; 遗留光标也必须重新启动 .

earthquake_search_events 工具

  • 搜索 usgs 或者说 emsc 以时间、数量、深度、半径或边框表示。 需要半径 latitude, (中文(简体) ), longitude,以及 radius_km 组合; 框边是独立可选的, 支持 antimeridian 边界, 最高可达 ± 360°, 并交叉一个供给的圆.
  • 回归正常化事件 event_type环管中心 event_certainty和副秘书长办公室 associated_ids (其他网络ID合并为事件). ignoredFilters 名称不支持的过滤器; queryEcho 报告有效的查询.
  • 搜索和计数都接受打开 magnitude_type 任意来源的值; EMSC 匹配大小写,包括小写 mb 财务报告和审定财务报表 mw 和历史大写 ML 财务报告和审定财务报表 MD。 。 。 . product_type (需要的产品,例如:. moment-tensor和 review_status (单位:千美元)automatic 或者说 reviewed)仅适用于USGS;EMSC将其命名于 ignoredFilters。空值表示省略.
  • event_type, (中文(简体) ), magnitude_type,以及 product_type 保持打开字符串; USGS 以不区分大小写的方式匹配它们,以及 event_type 使用逗号分隔列表。 USGS在其公布的词汇外以零事件回答一个值,因此当USGS搜索的第一页或USGS计数空出后, notice 列出每个未列出的值,一旦大小写,则列出的值等于 -, (中文(简体) ), _,并忽略空格 : product_type "moment_tensor" 建议 "moment-tensor"。读取的词汇是一次在呼叫截止日期内尝试,缓存时间为24小时;如果失败,则零返回,如不检查。 EMSC 不发布词汇;一个零数或空的第一个搜索页建议混合或大写的小写拼写 magnitude_type,而不更改请求的值.
  • min_mmi (ShakeMap强度,经过修改的Mercalli)和 min_cdi (DYFI社区强度),每一至十二次,按震动程度选择事件,震级下限或 alert_level 错过了 两者都只适用于USGS:没有ShakeMap或DYFI报告的事件从不匹配,EMSC将其命名于 ignoredFilters。 。 。 .
  • 仅限日期(包括扩大的年/月表)是指在两个来源中指定日期开始的午夜: 2026-10-10 变成 2026-10-10T00:00:00,明确的时间和时区后缀保存;未添加的日期组件被添加. 无偏移时间使用UTC进行30天的默认. queryEcho 显示确切的有效界限.
  • 以时间或规模来排序 每个呼叫请求 limit 上游事件(默认 15,由 DEFAULT_LIMIT)并全部返回,仅在最后一页减少。 A 类 limit 超过 1000 个返回 1000 个, 并注明所请求的和应用的值 EARTHQUAKE_CLAMP_LIMITS=false 而是被拒绝. queryEcho.limit 报告适用的限制。 继续返回 nextOffset (抵消外加返回的事件,从1起计)和相同的过滤器,限制和顺序. 搜索页面读取了当前目录,所以上游编辑可以影响后页.
  • 严格倒转的大小、深度或明确的时间界限在本地失效,因为 invalid_range,同时命名值和恢复值。 等同和单一的界限仍然有效;时间比较使用UTC即时,包括明确的抵消. 日历无效的数值仍为上游拒绝值.
  • 非空短页 totalCount;一空第一页建立为零,而一空后页则留下了总的未知. 完整页面使用计数查询,使用 countUnavailable 失败。 Feed,搜索,计数,以及事件调用,每个调用都共享一个50秒的截止时间来完成请求和重试;用于包括计数查询在内的搜索. 取消仍然是取消.

earthquake_count_events 工具

  • 使用相同的过滤器计算匹配 earthquake_search_events,而不获取事件。 奥米 start_time 过去30天; queryEcho 报告已解决的窗口和应用程序过滤器.
  • exceeds_limit 标出 2万 个事件单请求阈值, 而非检索上限 : 搜索平移 page 可以取取取更大的匹配集 . max_allowed uSGS为20 000美元,EMSC为无效; ignoredFilters 名称过滤源不能应用.
  • USGS 零载数 notice 当供应 event_type, (中文(简体) ), magnitude_type,或 product_type 值不在USGS词汇中,就像搜索的空首页一样.

earthquake_get_event 工具

  • 通过 id 任何种子或搜索结果。 一个 EMSC 解析自 a source=emsc 搜索(八位数、下划线、七位数等). 20190706_0000043)在EMSC地震门户网站上被抬头;所有其他ID去USGS(例如. us6000sznj) (中文(简体) ).

  • USGS 事件返回归正事件加可选事件 detail: PAGER、ShakeMap、DYFI、瞬间收发、地面故障警报、源质量(包括 depth_type和有限过失维度。 在没有预测的栏目时,小组被略去;缺员并不意味着没有影响. associated_ids 列出事件的其他网络ID USGS 持有; 诸如 us70004bn0 返回首选事件(ci38457511)与所列出的别名.

  • EMSC 事件返回其搜索结果所携带的同一常态事件,但没有 detail 没有 associated_ids。 。 。 .

  • include 选择更多USGS事件:

    组来源额外请求
    origins每个 origin 产品在事件响应中,首选无
    magnitudes首选事件级别 phase-data 产品为 QuakeML, 包含一个已公布的站点数一个,共享 arrivals
    arrivals该文件的首选来源的每一个阶段到达, 加入到它的选取并排序最接近一个,共享 magnitudes
    aftershock_forecastUSGS操作后震预测:每个窗口在每个震级或以上发生后震的概率,其预期计算范围,以及一次大于主震的可能性一个
    pager警报背后的PAGER估计 losspager 产品JSON的文件:每个概率值的死亡率和经济损失警报水平(经济界限以百万美元计)、PAGER的影响说明,以及按总数和按国家或区域分列的在每次震动强度下暴露的人当产品发布影响声明时,2到3个
  • 未返回的请求组列于 unavailable_includes数字 : not_published 当事件没有这种产品(每组在EMSC事件上)或其产品缺少该组读取的文件(在JSON文件存在之前公布的PAGER产品)时, fetch_failed 当下载失败时,返回 HTML, 不解析, 指向配置的 USGS 源外, 或用重定向回答 。 活动, detail,其他团体仍然返回;取消宣传。 活动请求及其产品下载共享了50秒的最后期限.

  • PAGER 曝光行保留已公布 country_code 添加 country_name 页:1 XF (加利福尼亚), EU (美国中部/东部), WU (美国西部),和 UK (分配给任何国家的领域).

  • 本地空白身份识别失败 。 冠名身份证和别名 与案件无关.

  • 摇摆图报告 max_pga 单位:克和克 max_pgv 在 cm/s 中,使已知的遗产编码正常化. code_version 确定出版时的制作人版本.

  • detail.moment_tensor 可以包括独立的节点平面 focal-mechanism。 。 。 . nodal_planes_from 识别提供飞机的产品。 百分数元数据来自首选的百分数可用时的百分数,以及 percent_double_couple 仍然是已公布的 0–1 分数.


earthquake://feed/{magnitude_tier}/{time_window} 资源

  • 选择与 earthquake_get_feed;所有20个组合都被列为可浏览资源.
  • 每起回返100起事件 application/json 在紧凑事件投影中加 totalCount, (中文(简体) ), truncated, (中文(简体) ), nextCursor,以及 next_uri读取 next_uri 逐字记录至缺席为止。 续作URI是 earthquake://feed/{magnitude_tier}/{time_window}/page/{cursor}。 。 。 .
  • 饲料资源与保留世代共享 earthquake_get_feed。缓存提示是私人的,寿命为零,因为续作符号属于请求租户。 上游故障分类为 ServiceUnavailable 曝光 feed_unavailable;分类为 Timeout 曝光 feed_timeout,每个都有恢复指导 并且没有捕获的上游身体。 可用性失败保留了数字 HTTP 状态; HTTP 501 仍然不可重试,并指向EMSC 搜索. 其他错误类没有改变.

earthquake://event/{event_id} 资源

  • 通过一个USGS或EMSC event_id 从种子或搜索结果。 返回同一事件和可选 detail 产品作为 earthquake_get_event; 需要没有 include。 。 。 .
  • 用那个工具 event_deleted, (中文(简体) ), not_found, (中文(简体) ), source_unavailable,以及 source_timeout 错误合同.

特征

建造在 @cyanheads/mcp-ts-core: stdio和可流式的 HTTP 传输器,可插接式(none 编号 : jwt 编号 : oauth),可互换存储(in-memory, (中文(简体) ), filesystem, (中文(简体) ), Supabase, (中文(简体) ), Cloudflare KV/R2/D1),结构化记录,可选择的OpenTeleometry tracking.

安保总局/紧急安保委员会:

  • USGS FDSN/GeoJSON API 和 EMSC FDSN-WS API 的机型安全客户端,将两者都正常化为一个共享的地震域计划
  • 在每个上游呼叫中,自动重试后退和按要求计时;检测USGS的限速/CDN故障模式(HTML服务而不是GeoJSON),并将其映射到一个打出的服务不可用错误,而不是将其解析为数据. 一个不是预期文档的主体没有重试就以同样的方式失败,一个连接掉入了中体会被重试;既不向呼叫者传递解析器,也不传递运行时的文本
  • EMSC的"两个特征" evtype 代码根据已公布的事件类型/确定性术语解码为USGS发布的相同词汇,所以 event_type 两个来源都有一种意义
  • 仅限USGS过滤器(alert_level, (中文(简体) ), min_felt, (中文(简体) ), min_significance, (中文(简体) ), min_mmi, (中文(简体) ), min_cdi, (中文(简体) ), event_type, (中文(简体) ), product_type, (中文(简体) ), review_status)在 ignoredFilters 何时 source=emsc关于副秘书长, event_type="earthquake" 不包括采石场爆炸和其他非铁道记录.
  • 不需要API密钥或费率限制级——USGS和EMSC都是完全公开的,没有密钥的API

方便代理输出 :

  • 证明 - source: "usgs" | "emsc" 搜索和计数回复,加 source_catalog编号 :auth 字段命名目录和权威机构,因此代理可以互相权衡两个独立的解决方案
  • 歧视性产出合同 - event_type 和环管中心 event_certainty 保留已公布的分类,缺失的字段仍然未知; exceeds_limit, (中文(简体) ), countUnavailable,以及 truncated 旗帜允许调用者在数据上分行, 而不是解析表达词
  • 反应塑造——来源不公布的字段返回 null,绝不是虚构的零(tsunami, (中文(简体) ), status,以及 mmi 在 EMSC 事件上总是无效的;为 EMSC 查询而丢弃的 USGS 唯一的过滤器在 ignoredFilters 而不是默默无视
  • Graceful deform — 上游拒绝显示服务本身在错误消息中的解释(犯罪参数,被接受的格式),而不是赤裸状态代码,失败后继计数会降解为 countUnavailable 而不是失败整个搜索, 和失败的产品下载列出其 include 组为 fetch_failed 而不是失败事件搜索

开始

公共托管实例

可在 https://earthquake.caseyjhand.com/mcp 无需安装。 通过可流式HTTP将 MCP 客户端指向它 :

{
  "mcpServers": {
    "earthquake-mcp-server": {
      "type": "streamable-http",
      "url": "https://earthquake.caseyjhand.com/mcp"
    }
  }
}

自有/当地

在您的 MCP 客户端配置文件中添加以下内容 .

{
  "mcpServers": {
    "earthquake-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/earthquake-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或者用 npx( 不需要 Bun) :

{
  "mcpServers": {
    "earthquake-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/earthquake-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或与道克相会:

{
  "mcpServers": {
    "earthquake-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/earthquake-mcp-server:latest"]
    }
  }
}

对于可流式HTTP,设置传输并启动服务器:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp

先决条件

安装

  1. 清除仓库 :
git clone https://github.com/cyanheads/earthquake-mcp-server.git
  1. 导航到目录 :
cd earthquake-mcp-server
  1. 安装依赖性 :
bun install

配置

所有配置在启动时通过 Zod schemas 在 src/config/server-config.ts关键环境变量:

变量说明默认
MCP_TRANSPORT_TYPE运输: stdio 或者说 httpstdio
MCP_HTTP_PORTHTTP 服务器端口3010
MCP_HTTP_ENDPOINT_PATHMCP 服务器挂载的 HTTP 路径/mcp
MCP_PUBLIC_URL用于反向代理的公用 HTTP( S) 基址, 没有证书、 查询或片段无
MCP_SESSION_MODEHTTP 会话 : stateful, (中文(简体) ), stateless,或 auto (解为相. 覆盖 createApp() 声明; 居克和 .env.example 还有无国籍者.stateless (宣布为 src/index.ts(中文(简体) )
MCP_AUTH_MODE认证 : none, (中文(简体) ), jwt,或 oauthnone
MCP_JWT_EXPECTED_AUDIENCEJWT模式设定时需要的观众. JWT 模式记录未设置的启动警告 .无
MCP_JWT_EXPECTED_ISSUER设定时 JWT 模式所需的发行器无
MCP_LOG_LEVEL日志级别 (debug, (中文(简体) ), info, (中文(简体) ), warning, (中文(简体) ), error页:1info
MCP_GC_PRESSURE_INTERVAL_MSOpt-in Bun-只限强制-GC压力回路 (ms). 尝试 60000 如果在持续HTTP负载下观察到堆积增长.0 (残疾)
LOGS_DIR节点.js和Bun上的日志文件目录 。 从服务器的软件包根解析出相对路径 .<server-package-root>/logs
LOG_TOOL_FAILURE_PAYLOADS日志失败的工具参数和结果,由密钥名称编辑 。 自由形式值中的秘密依然存在.false
LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES每个登录故障有效载荷的UTF-8字节上限16384
STORAGE_PROVIDER_TYPE存储后端 : in-memory, (中文(简体) ), filesystem, (中文(简体) ), supabase, (中文(简体) ), cloudflare-kv/r2/d1in-memory
USGS_BASE_URLUSGS API 基础 URL. 覆盖测试或镜像. 产品文件(相位数据QuakeML,余震预报,PAGER JSON)只在此来源上取取出,所以一个镜像也必须为它们服务,内容 URL 重新写入其来源;否则 include 集团报告 fetch_failed。 。 。 .https://earthquake.usgs.gov
EMSC_BASE_URLEMSC API 基础 URL. 覆盖测试或镜像.https://www.seismicportal.eu
DEFAULT_LIMIT活动 earthquake_search_events 当调用省略时返回 limit (1-1 000美元)15
EARTHQUAKE_CLAMP_LIMITS覆盖搜索或种子 limit 1 000至1 000以上并附有通知. false 宣传并强制实施最多1000个计划.true
REQUEST_TIMEOUT_MS任意 HTTP 超时以毫秒计(1 000-120 000)。 每一条消息、搜索、计数和事件呼吁也在其请求和重复的50秒总期限内进行.10000
OTEL_ENABLED启用打开远程false
OTEL_EXPORTER_OTLP_ENDPOINT跟踪的基础 URL (N)/v1/traces)和指标(/v1/metrics); 信号特定端点变量覆盖它无
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTOpt- in OTLP 日志端点, 作为-is使用; 基准 URL 从未启用日志无

空值和未替换的整值 ${…} 占位符使用默认值。 见 .env.example 用于可选的覆盖.

运行服务器

地方发展

  • 构建和运行制作版本数字 :

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    
  • 运行检查和测试数字 :

    bun run devcheck  # Lints, formats, type-checks, and more
    bun run test      # Runs the test suite
    

夹克

docker build -t earthquake-mcp-server .
docker run --rm -p 3010:3010 earthquake-mcp-server

Dockerfile 默认为 HTTP 传输、 无国籍会话模式和日志到 /var/log/earthquake-mcp-server。默认情况下安装了 OpenTeleometry 端端依赖性 --build-arg OTEL_ENABLED=false 以略去它们.

项目结构

目录目的
src/mcp-server/tools工具定义*.tool.ts) (中文(简体) ). 四个工具跨越USGS和EMSC.
src/mcp-server/resources饲料,饲料续作,以及事件资源.
src/services/feed-snapshots.ts租户范围序列式饲料保留,并附有有限度的有效载荷和元数据核算.
src/services/usgsUSGS ComCat 服务 — GeoJSON 种子获取器, FDSN 查询 API 客户端, 以及事件 include 预测(原产地产品、相相数据QuakeML、余震预报、PAGER估计数).
src/services/emscEMSC地震门户网站服务——FDSN事件搜索,计数,并附带ID搜索.
src/config服务器特定环境变量与Zod解析并验证.
tests/单位和综合测试,反映 src/ 结构.

发展指南

见 CLAUDE.md 发展准则和建筑规则。 简本:

  • 搬运工投掷,框架渔获量——否 try/catch 在工具逻辑中
  • 使用 ctx.log 用于伐木, ctx.state 用于存储
  • 登记册中的新工具和资源 createApp() 数组
  • 验证上游数据,使数据与域类型相一致,并保存缺失的值而不是发明事实

捐款

问题值得欢迎。 提交前进行检查和测试:

bun run devcheck
bun run test

许可证

这个项目根据Apache 2.0许可证获得许可. 见 自由主义 详细文件.

版本与发布记录

@cyanheads/earthquake-mcp-server 共发布 30 个版本,首次发布于 2026/05/24;过去 12 个月发布了 30 个版本。

版本发布日期距今
0.5.2latest2026/11/14今天
0.5.12026/11/0410 天前
0.5.02026/10/2916 天前
0.4.12026/10/2421 天前
0.4.02026/10/1827 天前
0.3.82026/10/111 个月前

关于 @cyanheads/earthquake-mcp-server 的常见问题

@cyanheads/earthquake-mcp-server 是什么?

搜索USGS和EMSC地震数据——通过MCP实时输入,事件查询和地震计数. (原始内容存档于2012-10-12). STIO or Streamable HTTP.

如何安装 @cyanheads/earthquake-mcp-server?

在项目目录运行 npm install @cyanheads/earthquake-mcp-server,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 earthquake-mcp-server,可以用 npx earthquake-mcp-server 直接运行。

@cyanheads/earthquake-mcp-server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cyanheads/earthquake-mcp-server 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cyanheads/earthquake-mcp-server 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cyanheads/earthquake-mcp-server 可以商用吗?

@cyanheads/earthquake-mcp-server 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cyanheads/earthquake-mcp-server 的下载量有多少?

根据 npm 官方下载统计,@cyanheads/earthquake-mcp-server 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,036 次,日均约 68 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cyanheads/earthquake-mcp-server 还在维护吗?

最新版本 0.5.2 发布于 2026/11/14(今天);至今共发布 30 个版本,其中过去 12 个月发布了 30 个;首次发布于 2026/05/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。