Skip to main content
Glama
xmpuspus

ph-civic-data-mcp

ph-civic-data-mcp

フィリピン政府のデータ(地震、気象、台風、調達、人口、大気質)をAIエージェントで利用するための初のMCPサーバーです。

PyPI Python 3.11+ License: MIT

ph-civic-data-mcpは、コストゼロのstdioトランスポートMCPサーバーです。PHIVOLCSPAGASAPhilGEPSPSAAQICN/EMBからのライブデータを、Claude Desktop、Claude Code、Cursor、またはMCP互換クライアントが直接呼び出せるツールとして公開します。

デモ

以下の各GIFは、docs/live_demo.pyを実際にVHS録画したものです。このPyPIリリースからuvx ph-civic-data-mcpを起動し、実際のMCP stdioプロトコル経由で各ツールを呼び出しています。表示されているパネルには、サーバーから返された実際のJSONが含まれています。演出は一切ありません。

1回のセッションで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に基づく第7地域の人口は?"

  • "ビコル地域の貧困発生率は?"

  • "マニラの大気質は現在どうですか?"

  • "レイテ島のマルチハザードリスクプロファイルを教えて。"

ソース別デモ

PHIVOLCS — 地震 + 火山警戒レベル

phivolcs

PAGASA — 天気予報 + 台風追跡

pagasa

PhilGEPS — 調達検索 + 集計

philgeps

PSA — 人口(2020年国勢調査) + 貧困(2023年通年)

psa

AQICN — リアルタイム大気質

aqicn

ソース横断 — 並列マルチハザードリスクプロファイル

cross-source

デモの作成方法

docs/live_demo.pydocs/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トークンがない場合の天気予備

毎時

なし

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トークンは上海のデータしか返さず、フィリピンの都市では機能しません。本物のトークン(無料、1分以内)を登録する必要があります。

データの鮮度に関する警告

  • 人口: 2020年国勢調査。これより新しい全国データはまだ存在しません。

  • 貧困: 2023年通年貧困統計(最新のPSAリリース)。

  • 調達: PhilGEPSオープンデータは、外部からフィルタリング可能な検索を公開していません。このサーバーは最新の約100件の入札通知をスクレイピングし、クライアント側でフィルタリングします。6時間キャッシュされます。

  • 緊急時: リアルタイムの災害対応については、常にndrrmc.gov.phおよびPHIVOLCS/PAGASAの公式チャンネルを確認してください。このサーバーは研究用であり、人命に関わる決定のためのものではありません。

アーキテクチャ

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

  • 2つのHTTPクライアント: 標準 + verify=Falseを設定したPHIVOLCS_CLIENT(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トークンは制限されています。 非政府ユーザーは拒否される可能性があります。Open-Meteoへのフォールバックにより、ハード依存関係ではなくなっています。

  • AQICNトークンが必須です。 無料ですが申請が必要です。

  • 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まで歓迎します。

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