Skip to main content
Glama
xmpuspus

ph-civic-data-mcp

ph-civic-data-mcp

第一个用于菲律宾政府数据的 MCP 服务器——地震、天气、台风、采购、人口和空气质量——集成在你的 AI 代理中。

PyPI Python 3.11+ License: MIT

ph-civic-data-mcp 是一个零成本、基于 stdio 传输的 MCP 服务器,它将来自 PHIVOLCS(菲律宾火山地震研究所)、PAGASA(菲律宾大气地球物理和天文服务管理局)、PhilGEPS(菲律宾政府电子采购系统)、PSA(菲律宾统计局)和 AQICN/EMB 的实时数据作为工具公开,供 Claude Desktop、Claude Code、Cursor 或任何兼容 MCP 的客户端直接调用。

演示

下方的每个 GIF 都是 docs/live_demo.py 的真实 VHS 录制——它从该 PyPI 版本启动 uvx ph-civic-data-mcp,并通过真实的 MCP stdio 协议调用每个工具。你看到的面板包含了服务器返回的实际 JSON。没有任何预设。

一次会话中涵盖所有 5 个来源的 8 个工具的全面演示:

grand tour

以下是各来源的详细演示。要在本地重现其中任何一个:uv run python docs/live_demo_single.py <suite>

为什么存在这个项目

菲律宾公民数据门户发布了开放数据,但每个门户都有自己的模式——抓取的 HTML 表格、PXWeb JSON、无文档的 API。没有任何东西能将它们整合在一起供 AI 代理使用。这个服务器做到了。

截至 2026 年 4 月,GitHub 或 PyPI 上尚无先例。最接近的项目:panukatan/lindol (R 语言,仅限 PHIVOLCS),pagasa-parser (JS,仅限 PAGASA)。

安装

uvx ph-civic-data-mcp

或者通过 pip 安装:

pip install ph-civic-data-mcp

设置

Claude Desktop

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "ph-civic-data": {
      "command": "uvx",
      "args": ["ph-civic-data-mcp"],
      "env": {
        "AQICN_TOKEN": "your_free_token_from_aqicn.org",
        "PAGASA_API_TOKEN": "optional_pagasa_token"
      }
    }
  }
}

Claude Code

添加到 .claude/settings.json

{
  "mcpServers": {
    "ph-civic-data": {
      "command": "uvx",
      "args": ["ph-civic-data-mcp"],
      "env": {
        "AQICN_TOKEN": "your_token"
      }
    }
  }
}

或者通过 Claude Code CLI 安装:

claude mcp add ph-civic-data -- uvx ph-civic-data-mcp

Cursor、Zed 及其他 MCP 客户端

任何支持 stdio MCP 传输的客户端都可以使用。将命令指向 uvx ph-civic-data-mcp 并将 AQICN_TOKEN 作为环境变量传递。

你可以询问什么

设置完成后,询问你的代理:

  • “过去 24 小时内菲律宾发生了哪些地震?”

  • “塔尔火山现在活跃吗?”

  • “奎松市未来 3 天的天气预报是什么?”

  • “菲律宾现在有活跃的台风吗?”

  • “在 PhilGEPS 中搜索防洪合同。”

  • “根据 PSA,第七大区的人口是多少?”

  • “比科尔大区的贫困发生率是多少?”

  • “马尼拉现在的空气质量如何?”

  • “给我一份莱特岛的多灾种风险概况。”

各来源演示

PHIVOLCS — 地震 + 火山警戒级别

phivolcs

PAGASA — 天气预报 + 台风追踪

pagasa

PhilGEPS — 采购搜索 + 汇总

philgeps

PSA — 人口(2020 年普查)+ 贫困(2023 年全年)

psa

AQICN — 实时空气质量

aqicn

跨来源 — 并行多灾种风险概况

cross-source

演示是如何制作的

docs/live_demo.py + docs/live_demo_single.py 打开一个指向 uvx ph-civic-data-mcp(解析为该 PyPI 版本)的 MCP StdioTransport,调用工具,并使用 Rich 渲染响应(面板、表格、语法高亮的 JSON、实时加载动画)。vhs 驱动真实的终端并录制会话。磁带文件提交在 docs/*.tape 下。

数据源

来源

数据

更新频率

认证

PHIVOLCS

地震、公告、火山警报

5 分钟(地震),30 分钟(火山)

PAGASA

10 天天气、活跃台风、警报

每小时

可选 PAGASA_API_TOKEN

Open-Meteo

无 PAGASA token 时的天气备选

每小时

PhilGEPS

政府采购公告(最新约 100 条)

6 小时(缓存)

PSA OpenSTAT

人口(2020 年普查)、贫困(2023 年)

定期

AQICN

菲律宾城市的实时空气质量

15 分钟

必需 AQICN_TOKEN (免费)

所有工具

工具

描述

关键参数

get_latest_earthquakes

近期菲律宾地震

min_magnitude, limit, region

get_earthquake_bulletin

单次事件的完整 PHIVOLCS 公告

bulletin_url

get_volcano_status

每个受监测菲律宾火山的警戒级别

volcano_name

get_weather_forecast

1-10 天预报(PAGASA 或 Open-Meteo)

location, days

get_active_typhoons

菲律宾责任区 (PAR) 内/附近的活跃热带气旋

get_weather_alerts

活跃的 PAGASA 警告

region

search_procurement

在 PhilGEPS 公告中进行关键词搜索

keyword, agency, region, date_from/to, limit

get_procurement_summary

汇总采购统计数据

agency, region, year

get_population_stats

2020 年普查人口

region

get_poverty_stats

2023 年全年贫困发生率

region

get_air_quality

实时 AQI + 污染物

city

assess_area_risk

多灾种概况(并行 PHIVOLCS + PAGASA + AQICN)

location

环境变量

变量

必需

说明

AQICN_TOKEN

(用于 get_air_quality)

免费:https://aqicn.org/data-platform/token/ (1,000 次请求/分钟,即时获取)

PAGASA_API_TOKEN

可选

需要正式的 PAGASA 请求。没有它,天气会自动回退到 Open-Meteo。

注意:AQICN 的 demo token 仅返回上海的数据,不适用于菲律宾城市。你必须注册一个真实的 token(免费,<1 分钟)。

数据新鲜度警告

  • 人口: 2020 年普查。目前尚无更新的全国数据。

  • 贫困: 2023 年全年贫困统计数据(PSA 最新发布)。

  • 采购: PhilGEPS 开放数据不提供外部可过滤的搜索。此服务器抓取最新的约 100 条招标公告并在客户端进行过滤。缓存 6 小时。

  • 紧急情况: 对于实时灾难响应,请务必查看 ndrrmc.gov.ph 和官方 PHIVOLCS/PAGASA 渠道。此服务器仅用于研究,不用于生命安全决策。

架构

  • Python 3.11+, fastmcp>=3.0.0,<4.0.0

  • 两个 HTTP 客户端:标准客户端 + PHIVOLCS_CLIENT(设置 verify=False,因为 PHIVOLCS 的 SSL 证书链损坏)。SSL 验证绝不会全局禁用。

  • 每个来源的内存 TTL 缓存;无磁盘写入。

  • 仅 stdio 传输(零托管成本)。

  • PSA 表格路径通过 PXWeb 浏览 API 发现,从不硬编码。

开发

git clone https://github.com/xmpuspus/ph-civic-data-mcp
cd ph-civic-data-mcp
uv sync --extra dev

# MCP Inspector
fastmcp dev src/ph_civic_data_mcp/server.py

# Tests (run against live APIs)
uv run pytest tests/ -v

# Build
uv run python -m build
uv run twine check dist/*

局限性

  • PAGASA token 受限。 非政府用户可能会被拒绝。Open-Meteo 回退消除了对此的硬依赖。

  • 需要 AQICN token。 免费但必须申请。

  • PhilGEPS 不是实时的。 公共门户不提供可过滤的 API;此服务器基于最新的约 100 条公告进行客户端过滤。

  • 紧急情况: 请引导用户使用官方渠道;这是一个研究工具。

路线图 (v0.2.0)

  • 通过 NDRRMC 监控仪表板实现 get_active_disasters / get_situational_report

  • 通过 HazardHunterPH ArcGIS REST API 实现 assess_hazard(lat, lng) — 基于坐标的洪水/地震/滑坡风险评估

先前工作

两者都不是 Python、多源或 MCP 项目。本项目向两者致敬。

许可证

MIT。Xavier Puspus。与 PHIVOLCS、PAGASA、PhilGEPS、PSA 或 EMB 无关联。

贡献

欢迎在 github.com/xmpuspus/ph-civic-data-mcp 提交问题和 PR。

Latest Blog Posts

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/xmpuspus/ph-civic-data-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server