ph-civic-data-mcp

ph-civic-data-mcp

An MCP server providing real-time access to Philippine government data including earthquakes, weather, typhoons, procurement, population, and air quality. It enables AI agents to query multiple official Philippine data sources through a unified interface for research and analysis purposes.

Category
访问服务器

README

ph-civic-data-mcp

<!-- mcp-name: io.github.xmpuspus/ph-civic-data-mcp -->

The first multi-source MCP server for Philippine civic data: earthquakes, weather, typhoons, procurement, population, and poverty, in your AI agent.

PyPI Python 3.11+ License: MIT Glama AAA MCP Registry

ph-civic-data-mcp is a zero-cost, stdio-transport MCP server that exposes live data from PHIVOLCS, PAGASA, PhilGEPS, and PSA as tools that Claude Desktop, Claude Code, Cursor, or any MCP-compatible client can call directly.

This is how easy it is to set up

One JSON file. One claude command. Your agent just correlated live Philippine weather with 2020 Census population data in a single turn.

setup

The recording above isn't scripted. It's vhs docs/demo_setup.tape, which spawns Claude Code with --mcp-config pointing at this server, and Claude fans out in parallel to get_weather_forecast (Open-Meteo) and get_population_stats (PSA PXWeb), then correlates them. The temperatures (30.4 / 30.9 / 31.0 °C max over Apr 19-21) and NCR population (13,484,462) in the streamed answer are what the live sources returned at the moment of the recording.

Works the same way in Claude Desktop, Cursor, Zed, VS Code, or any MCP-compatible client. One "command": "uvx", one "args": ["ph-civic-data-mcp"], done.

Demo

Every GIF below is a real VHS recording of docs/live_demo.py. It spawns uvx ph-civic-data-mcp from this PyPI release and calls each tool over the real MCP stdio protocol. The panels you see contain the actual JSON returned by the server. Nothing is staged.

A grand tour hitting 7 tools across all 4 sources in one session:

grand tour

Per-source walkthroughs below. To reproduce any of them locally: uv run python docs/live_demo_single.py <suite>.

Why this exists

Philippine civic-data portals publish open data, but each in its own schema — scraped HTML tables, PXWeb JSON, undocumented APIs. Nothing ties them together for an AI agent. This server does.

A handful of other Philippine civic-data MCP servers exist (PSGC administrative geography, holidays, DHSUD license-to-sell, DepEd schools), each covering one dataset. None expose hazard feeds, weather, procurement, or statistical data, and none combine sources. This server does both. See the Prior art section below for the full list.

Install

uvx ph-civic-data-mcp

Or via pip:

pip install ph-civic-data-mcp

Setup

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

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

Claude Code

Add to .claude/settings.json:

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

Or install via the Claude Code CLI:

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

Cursor, Zed, other MCP clients

Any client that supports the stdio MCP transport works. Point the command at uvx ph-civic-data-mcp. No API keys required for the default configuration.

What you can ask

After setup, ask your agent:

  • "How hot is Metro Manila this week and how many people are affected?"
  • "What earthquakes happened in the Philippines in the last 24 hours?"
  • "Is Taal volcano active right now?"
  • "What's the 3-day weather forecast for Quezon City?"
  • "Are there active typhoons in the Philippines right now?"
  • "Search PhilGEPS for flood control contracts."
  • "What is the population of Region VII based on the PSA?"
  • "What is the poverty incidence in the Bicol Region?"
  • "Give me a multi-hazard risk profile for Leyte."

Per-source demos

PHIVOLCS — earthquakes + volcano alert levels

phivolcs

PAGASA — weather forecast + typhoon tracking

pagasa

PhilGEPS — procurement search + aggregation

philgeps

PSA — population (2020 Census) + poverty (2023 Full-Year)

psa

Cross-source — parallel multi-hazard risk profile

cross-source

How the demos are produced

docs/live_demo.py and docs/live_demo_single.py open an MCP StdioTransport pointing at uvx ph-civic-data-mcp (which resolves to this PyPI release), call the tools, and render the responses with Rich (panels, tables, syntax-highlighted JSON, live spinners). vhs drives a real terminal and records the session. Tapes are committed under docs/*.tape.

Data sources

Source Data Update frequency Auth
PHIVOLCS Earthquakes, bulletins, volcano alerts 5 min (earthquakes), 30 min (volcanoes) None
PAGASA 10-day weather, active typhoons, alerts Hourly Optional PAGASA_API_TOKEN
Open-Meteo Weather fallback when PAGASA token absent Hourly None
PhilGEPS Government procurement notices (latest ~100) 6 h (cached) None
PSA OpenSTAT Population (2020 Census), poverty (2023) Periodic None

All tools

Tool Description Key params
get_latest_earthquakes Recent PH earthquakes min_magnitude, limit, region
get_earthquake_bulletin Full PHIVOLCS bulletin for one event bulletin_url
get_volcano_status Alert level per monitored PH volcano volcano_name
get_weather_forecast 1–10 day forecast (PAGASA or Open-Meteo) location, days
get_active_typhoons Active tropical cyclones in/near PAR
get_weather_alerts Active PAGASA warnings region
search_procurement Keyword search on PhilGEPS notices keyword, agency, region, date_from/to, limit
get_procurement_summary Aggregate procurement stats agency, region, year
get_population_stats 2020 Census population region
get_poverty_stats 2023 Full-Year poverty incidence region
assess_area_risk Multi-hazard profile (parallel PHIVOLCS + PAGASA) location

Environment variables

Variable Required Notes
PAGASA_API_TOKEN Optional Requires formal PAGASA request. Without it, weather auto-falls-back to Open-Meteo.

No mandatory API keys. The server boots and all 11 tools work without any token.

Data freshness warnings

  • Population: 2020 Census. No later national data exists yet.
  • Poverty: 2023 Full-Year poverty statistics (latest PSA release).
  • Procurement: PhilGEPS open data does not expose filterable search externally. This server scrapes the latest ~100 bid notices and filters client-side. Cached 6h.
  • Emergencies: for real-time disaster response, always check ndrrmc.gov.ph and official PHIVOLCS/PAGASA channels. This server is for research, not life-safety decisions.

Architecture

  • Python 3.11+, fastmcp>=3.0.0,<4.0.0
  • Two HTTP clients: standard + PHIVOLCS_CLIENT with verify=False (PHIVOLCS has a broken SSL cert chain). SSL verification is never disabled globally.
  • In-memory TTL caches per source; no disk writes.
  • stdio transport only (zero hosting cost).
  • PSA table paths are discovered via the PXWeb browse API, never hardcoded.

Development

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/*

Limitations

  • PAGASA token is gated. Non-government users may be denied. Open-Meteo fallback removes this as a hard dependency.
  • PhilGEPS is not real-time. Public portal exposes no filterable API; this server operates on the latest ~100 notices with client-side filtering.
  • Emergencies: direct users to official channels; this is a research tool.

Roadmap (v0.2.0)

  • get_active_disasters / get_situational_report via NDRRMC monitoring dashboard
  • assess_hazard(lat, lng) via HazardHunterPH ArcGIS REST API — per-coordinate flood/earthquake/landslide risk

Prior art

Other Philippine civic-data MCP servers, each single-dataset:

Non-MCP libraries that inspired this project:

ph-civic-data-mcp is the first MCP that unifies multiple Philippine civic-data sources (PHIVOLCS, PAGASA, PhilGEPS, PSA) behind one interface, and the first to expose hazards, weather, procurement, and statistical data as MCP tools. Credit to all of the above.

License

MIT. Xavier Puspus. Not affiliated with PHIVOLCS, PAGASA, PhilGEPS, or PSA.

Contributing

Issues and PRs welcome at github.com/xmpuspus/ph-civic-data-mcp.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选