mcpField
B
BMKG Gempa & Cuaca

BMKG Gempa & Cuaca

本地服务
github.com/EzkielynaGroup地图与出行02 天前更新

关于 BMKG Gempa & Cuaca

BMKG Gempa & Cuaca 是从 BMKG 开放数据提供印度尼西亚地震信息和村级天气预报的 MCP 服务。它仅提供只读访问,无需 API 密钥,并在回复中注明数据来源。

主要功能

  1. 01获取最新地震详情
  2. 02列出近期有感地震和 M 5.0 以上地震
  3. 03获取村级逐 3 小时天气预报
  4. 04标注 BMKG 来源和获取时间
  5. 05缓存响应 60 秒

适用场景

  1. 01查询印度尼西亚近期地震
  2. 02查看各地区报告的震感强度
  3. 03获取村庄未来几天的天气预报

MCP 相关

向 MCP 客户端提供只读地震数据和村级天气预报工具。数据通过 BMKG 开放接口获取,无需 API 密钥。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ezkielynagroup-mcp-bmkg": {
"command": "npx",
"args": [
"-y",
"mcp-bmkg"
],
"env": {
"MCP_BMKG_TIMEOUT_MS": "<MCP_BMKG_TIMEOUT_MS>",
"MCP_BMKG_CACHE_MS": "<MCP_BMKG_CACHE_MS>",
"MCP_BMKG_BASE_URL": "<MCP_BMKG_BASE_URL>"
}
}
}
}
启动命令npx -y mcp-bmkg
需要配置的环境变量
MCP_BMKG_TIMEOUT_MSTimeout per BMKG request in ms (default 10000)
MCP_BMKG_CACHE_MSCache lifetime per URL in ms (default 60000)
MCP_BMKG_BASE_URLOverride base URL for both BMKG hosts (tests or mirrors)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-bmkg1.0.0

工具

4

收录的工具列表 · 更新于 2 天前

此工具无需参数。

详细介绍

mcp-bmkg

一个 MCP 服务,为你的 AI 助手提供 BMKG 开放数据中的印度尼西亚地震数据和村级天气预报。无需 API 密钥、无需账号、仅需一个文件、零依赖。

示例:“今天印度尼西亚发生过强震吗?明天下午 Kemayoran(31.71.03.1001)的天气怎么样?”

🇮🇩 印尼语:请查看下方章节。

  • 适用于 Claude Desktop、Claude Code、Cursor、OpenCode,以及任何可运行本地 stdio 服务的 MCP 客户端。
  • 使用印尼语作答,并附带使用英文键名的 JSON 块(便于代码和 Agent 使用)。
  • 每个回答都会以 “Sumber: BMKG” 结尾,并标注 WIB 时区的获取时间,这是 BMKG 开放数据条款的要求。
  • 缓存时间为 60 秒,每次请求超时为 10 秒,因此远低于 BMKG 每个 IP 每分钟 60 次请求的限制。

工具

工具返回内容输入
gempa_terbaruBMKG 以“Gempabumi Terbaru”发布的最新地震:时间(WIB + UTC)、震级、深度、坐标、最近区域、海啸可能性、震感区域(MMI)和烈度图链接。通常为 M 5.0 及以上,但 BMKG 也会通过此数据源发布有震感的较小地震。无
gempa_dirasakan最近 15 次有震感的地震,以及各区域的 MMI 烈度。limit(1-15)、min_magnitude
gempa_m5最近 15 次 M 5.0 及以上的地震,以及海啸可能性。limit(1-15)、min_magnitude
prakiraan_cuaca最多 3 天内某个 kelurahan/desa 的每 3 小时天气预报:天气(印尼语 + 英语)、气温、湿度、风、云量、能见度。adm4(必填,例如 31.71.03.1001)、days(1-3)

所有工具均为只读且免费。以下是 gempa_m5 返回的 JSON 示例(已缩短):

{
  "dataset": "gempaterkini",
  "count": 1,
  "earthquakes": [
    { "datetime_utc": "2026-11-10T15:51:37+00:00", "time_local": "22:51:37 WIB", "magnitude": 5.1, "depth_km": 10,
      "latitude": -0.93, "longitude": 128.6, "region": "116 km TimurLaut HALMAHERASELATAN-MALUT", "potential": "Tidak berpotensi tsunami" }
  ],
  "source": "BMKG",
  "fetched_at_wib": "2026-11-11 23:17:52 WIB"
}

安装

需要 Node.js 18+(node -v)。使用 npx 无需安装其他内容:应用会运行 npx -y mcp-bmkg。

Claude Desktop:Settings → Developer → Edit Config(claude_desktop_config.json),然后完全退出并重新打开 Claude Desktop。

{
  "mcpServers": {
    "bmkg": {
      "command": "npx",
      "args": ["-y", "mcp-bmkg"]
    }
  }
}

Claude Code

claude mcp add bmkg -- npx -y mcp-bmkg

添加 --scope user,即可在每个项目中使用。运行 claude mcp list 进行检查。

Cursor:~/.cursor/mcp.json(所有项目)或 .cursor/mcp.json(单个项目),使用与 Claude Desktop 相同的 JSON。

OpenCode:项目中的 opencode.json,或 ~/.config/opencode/opencode.json。

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bmkg": {
      "type": "local",
      "command": ["npx", "-y", "mcp-bmkg"],
      "enabled": true
    }
  }
}

Windows:如果应用无法启动 npx,请使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "mcp-bmkg"]。

从源码安装:运行 git clone https://github.com/EzkielynaGroup/mcp-bmkg.git,然后使用 "command": "node" 和 "args": ["/full/path/to/mcp-bmkg.mjs"]。

配置(可选)

变量默认值备注
MCP_BMKG_TIMEOUT_MS10000每次请求的超时时间(1000-120000)
MCP_BMKG_CACHE_MS60000每个 URL 的缓存时长;0 会禁用缓存
MCP_BMKG_BASE_URL未设置两个 BMKG 主机共用的基础 URL,可用于测试或镜像。未设置时使用 https://data.bmkg.go.id(地震)和 https://api.bmkg.go.id(天气预报)

查找 adm4 村庄代码

prakiraan_cuaca 需要 kelurahan/desa 的 Kemendagri 第 4 级区域代码,格式为 PP.KK.CC.DDDD(省、县/市、区、村)。BMKG 的天气预报页面引用了 Keputusan Menteri Dalam Negeri Nomor 100.1.1-6117 Tahun 2022 中的这些代码,并给出了示例:31.71.03.1001 = Kelurahan Kemayoran,雅加达中部。

此服务不附带代码查询功能:完整列表包含 80,000 多个村庄,而且 BMKG 没有为其提供搜索端点。查找代码的方式:

  1. **最简单:**添加配套服务 mcp-wilayah-indonesia(npx -y mcp-wilayah-indonesia,离线运行)。它的 cari_wilayah 工具可以按名称查找村庄并返回 bmkg_adm4,这样你就可以询问“cuaca besok di Kemayoran”,由助手串联调用这两个服务。
  2. Kemendagri 的区域代码决定(附件列出了每个村庄及其代码)。
  3. GitHub 上重新发布 Kemendagri 列表的社区数据集(搜索“kode wilayah kemendagri”)。请检查其许可证以及采用的是哪一年的决定。
  4. Statistics Indonesia(BPS)使用自己的代码,这些代码并不总是与 Kemendagri 代码一致。请勿混用。

如果代码有误,或 BMKG 没有该代码对应的天气预报,工具会明确提示(“Kode wilayah tidak ditemukan”),而不会猜测。

数据来源和条款

所有数据均实时来自 **BMKG(Badan Meteorologi, Klimatologi, dan Geofisika)**开放数据,已于 2026 年 11 月 11 日核查:

数据端点更新频率(据 BMKG)
最新地震https://data.bmkg.go.id/DataMKG/TEWS/autogempa.json每次地震发生时
最新 15 次震级 M 5.0 以上的地震https://data.bmkg.go.id/DataMKG/TEWS/gempaterkini.json每次地震发生时
最新 15 次有震感的地震https://data.bmkg.go.id/DataMKG/TEWS/gempadirasakan.json每次地震发生时
震动图https://data.bmkg.go.id/DataMKG/TEWS/<Shakemap>每次地震发生时
村庄天气预报https://api.bmkg.go.id/publik/prakiraan-cuaca?adm4=<code>每天两次,每 3 小时一次,预报未来 3 天

条款来自 data.bmkg.go.id 和天气预报页面:用户必须注明 BMKG 为数据来源,并在自己的应用中显示该来源:"Wajib untuk mencantumkan BMKG ... sebagai sumber data dan menampilkannya pada aplikasi/sistem Anda." 每个 IP 的访问上限为每分钟 60 次。因此,此服务会在每个答复末尾添加“Sumber: BMKG”,并将响应缓存 60 秒。如果你向其他人展示结果,请保留此来源标注。

此服务不会再分发 BMKG 数据,而是在收到请求时获取数据。test/fixtures/ 中记录的响应(BMKG 数据,2026 年 11 月 11 日)仅用于离线测试,不属于 npm 包。本项目独立开发,与 BMKG 无关联。

BMKG 未说明预报字段 tp 的含义。此服务会将其作为 precipitation_mm 传递,这是我们对该字段的理解(未经核实)。

安全性和限制

  • 只读。不写入任何文件,不使用任何密钥或账户。
  • 在发起任何请求前,会在本地验证 adm4(00.00.00.0000);无效输入不会发送给 BMKG。
  • 每个请求都有超时限制(默认 10 秒),超过 2 MB 的响应会被拒绝,每个答复最多包含 15 条地震记录和 40 条天气预报记录。
  • 错误会以简短的印尼语和英语消息返回(超时、速率限制、未找到代码、BMKG 服务不可用),绝不会返回堆栈跟踪。
  • 日志写入 stderr;stdout 仅传递 MCP 消息。
  • 遇到紧急情况,请遵循 BMKG 官方渠道和当地主管部门的指引。此工具仅转发 BMKG 数据,不会自行添加警告。

常见问题

有没有免费的印度尼西亚地震数据 API? 有。BMKG 在 data.bmkg.go.id 免费提供最新地震、最新 15 起 M 5.0+ 地震和最新 15 起有震感的地震的 JSON 数据,无需密钥。此服务将这些数据源封装起来,供 AI 助手使用。

如何在 Claude 或 Cursor 中获取按村庄划分的 BMKG 天气预报? 添加此服务(npx -y mcp-bmkg),然后使用村庄的 Kemendagri adm4 代码查询天气预报,例如“prakiraan cuaca 31.71.03.1001 besok”。

使用 BMKG 数据时需要注明来源吗? 需要。BMKG 的开放数据页面要求用户在应用或系统中注明 BMKG 为数据来源。此服务的每个回答都会包含“Sumber: BMKG”。

BMKG 数据多久更新一次? 地震数据源会在每次事件发生时更新;村庄天气预报每天生成两次,以 3 小时为间隔,覆盖 3 天。此服务会将每个 URL 缓存 60 秒。

gempa_terbaru 只显示 M 5.0+ 地震吗? 不一定。它会镜像 BMKG 的“Gempabumi Terbaru”数据源;如果较小的地震有震感,也可能显示。要查看 M 5.0+ 地震列表,请使用 gempa_m5。

开发

node --test test/

测试会通过 stdio 启动服务,并针对 BMKG 端点的本地模拟服务运行;该模拟服务提供已记录的固定测试数据,无需联网。测试覆盖所有工具,以及超时、速率限制、错误代码、无效 JSON 和缓存。


印尼语

用于获取 BMKG 开放数据中的地震和按村庄划分的天气预报 的 MCP 服务。无需 API 密钥,只需 Node.js 18+。示例:“今天有强震吗?Kemayoran(31.71.03.1001)明天中午的天气怎么样?”

工具

  • gempa_terbaru:BMKG 最新地震数据(WIB/UTC 时间、震级、深度、坐标、区域、海啸潜势、有震感的区域、震感地图链接)。通常为 M 5.0+,但 BMKG 也会用此数据源发布有震感的较小地震。
  • gempa_dirasakan:最近 15 起有震感的地震,包含 MMI 烈度。可选参数 limit、min_magnitude。
  • gempa_m5:最近 15 起 M 5.0+ 地震,包含海啸潜势。可选参数 limit、min_magnitude。
  • prakiraan_cuaca:单个村庄未来最多 3 天的天气预报,每 3 小时更新一次。必须提供 adm4,可选参数 days(1-3)。

安装:将 npx -y mcp-bmkg 添加到您的应用中(上文提供了 Claude Desktop、Claude Code、Cursor、OpenCode 的配置示例)。在 Windows 上,如果无法直接运行 npx,请使用 cmd /c npx -y mcp-bmkg。

adm4 代码:Kemendagri 的 IV 级行政区划代码(村庄),格式为 00.00.00.0000,例如 31.71.03.1001(Kemayoran)。BMKG 依据 Kemendagri 第 100.1.1-6117 号 2022 年决定。此服务不包含代码列表(村庄超过 80,000 个)。最简单的方式是同时安装 mcp-wilayah-indonesia(npx -y mcp-wilayah-indonesia,可离线使用);其 cari_wilayah 工具可以按名称搜索村庄并提供 bmkg_adm4。也可以在 Kemendagri 决定的附件或转录该附件的社区数据集中查找(请核查许可)。BPS 代码不同,请勿混用。

来源和条款:所有数据均直接来自 BMKG(data.bmkg.go.id 和 api.bmkg.go.id)。BMKG 要求用户注明 BMKG 为数据来源,并在应用中展示;每个 IP 的访问上限为每分钟 60 次。因此,每个回答末尾都会附上“Sumber: BMKG”和数据获取时间(WIB),回答会缓存 60 秒。本项目独立运营,与 BMKG 无关联。BMKG 未说明天气预报中的 tp 字段含义;我们将其显示为 precipitation_mm(尚未验证)。

限制:仅读取数据,不保存文件,无需密钥。超时时间为 10 秒,缓存时间为 60 秒。遇到紧急情况时,请关注 BMKG 和当地政府发布的信息渠道。


由 Ezkielyna 制作,这是一个面向印度尼西亚开发者的独立 AI API 网关(QRIS):ezkielyna.store。

许可证

代码采用 MIT 许可证。数据归 BMKG 所有,并根据 BMKG 的开放数据条款在运行时获取(注明数据来源为“BMKG”)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。