PH Civic Data について
PH Civic Dataは、フィリピンの公共データを呼び出し可能なツールとして統合し、市民データの調査、地域比較、公共支出の確認に利用できます。統計、災害、天気、調達、環境を41のツールで扱い、APIキーは不要です。
主な機能
- 01PSAカタログと統計指標の検索
- 02地域人口と行政区データの取得
- 03地震・火山・天気データの確認
- 04調達とインフラ支出の検索
- 05環境・マクロ経済データの取得
- 06MCPプロンプトとリソース
活用シーン
- 01地域の人口・経済・リスク情報の整理
- 02複数地域の統計比較
- 03災害リスクの確認と天気予報の取得
- 04調達公告とインフラ支出の検索
MCP 対応
このMCPサーバーはstdio経由で41のツール、3つのプロンプト、2つのリソースを提供し、クライアントが公共データソースを照会できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ph-civic-data-mcp
エージェントから呼び出せるツールとして提供するフィリピンの市民データです。PSA OpenSTAT の統計カタログ全体、PSGC の地域コード、インフラ支出の説明責任、地震、天気、台風、調達、貧困、日射量、大気質、衛星植生データ、マクロ指標を収録しています。人口データはバランガイ単位まで対応しています。ツールは 41 個で、API キーは不要です。
フィリピンの市民データポータルは、スクレイピングされた HTML テーブル、PXWeb JSON、文書化されていない API など、さまざまな形式でオープンデータを公開しています。エージェントが利用できるよう、それらをまとめるものはありません。このサーバーは、標準入出力経由でそれを実現し、ホスティング費用はかからず、API キーも不要です。バランガイの人口、ある場所が活断層や火山の近くにあるかどうか、市が洪水対策にいくら支出したか、ある場所と別の場所を比較した結果などの質問に答えます。
すべてのデータは公開記録に基づいています。ヒューリスティックな指標は統計上のものにすぎません。具体的な疑惑には、独立した調査と別の情報源による裏付けが必要です。
インストール
以下のクライアントはすべて、同じパッケージ uvx ph-civic-data-mcp を標準入出力経由で実行します。
Claude Desktop。 macOS では ~/Library/Application Support/Claude/claude_desktop_config.json にある claude_desktop_config.json に、次の内容を追加します。
{
"mcpServers": {
"ph-civic-data": {
"command": "uvx",
"args": ["ph-civic-data-mcp"]
}
}
}
Claude Code。
claude mcp add ph-civic-data -- uvx ph-civic-data-mcp
Codex。 2026-09-03 に実環境での動作を確認済みです。
codex mcp add ph-civic-data -- uvx ph-civic-data-mcp
Cursor。 mcp.json に次の内容を追加します。
{
"mcpServers": {
"ph-civic-data": {
"command": "uvx",
"args": ["ph-civic-data-mcp"]
}
}
}
VS Code。 .vscode/mcp.json に次の内容を追加します。
{
"servers": {
"ph-civic-data": {
"type": "stdio",
"command": "uvx",
"args": ["ph-civic-data-mcp"]
}
}
}
Docker。 一度ビルドし、標準入出力には -i を指定して実行します。
docker build -t ph-civic-data-mcp .
イメージは非 root ユーザーとして実行され、ヘルスチェックも含まれています。

この録画は vhs docs/demo_setup.tape で作成しました。このサーバーを指す --mcp-config を指定して Claude Code を起動し、Claude が get_weather_forecast と get_population_stats を並行して呼び出し、その結果を関連付けています。気温と人口は、録画時にライブソースから取得した値です。人口についての応答は、2024 年国勢調査(2024 年 7 月 1 日時点の NCR:14,001,751 人)に基づいています。
どんなことを質問できますか?
ph-civic-data-mcp は、19 の公開情報源にわたる 41 個のツールを提供します。場所に関する質問には、まず get_area_profile をお試しください。地名を一度 PSGC コードに解決し、人口統計、経済、調達、ハザード、3 日間の予報を 1 回のターンでまとめます。インフラ関連の通知は、住民 10 万人あたりの数値に換算済みです。
地域情報をひと目で確認する
- 「タクロバンの概要を教えてください。」
get_area_profile - 「QC の PSGC コードは何ですか?」
resolve_ph_location - 「サンボアンガ市の人口は何人ですか?」
get_population_stats - 「東ビサヤ地方の貧困率はどのくらいですか?」
get_poverty_stats - 「現在、アルバイ州は安全ですか?」
assess_area_risk - 「セブ州の市を一覧表示してください。」
list_admin_units - 「このバランガイより上位の行政区画をすべて表示してください。」
get_location_hierarchy
2つ以上の地域を比較する
- 「人口と貧困率について、セブ市とダバオ市を比較してください。」
compare_areas - 「サンボアンガの就業率は、カガヤン・デ・オロと比べてどうですか?」
compare_areas - 「5都市の比較結果を CSV ファイルとしてエクスポートしてください。」
compare_areas
地域周辺の災害を確認する
- 「過去1日以内にレガスピ周辺で地震はありましたか?」
get_latest_earthquakes - 「その地震について、PHIVOLCS の速報全文を読んでください。」
get_earthquake_bulletin - 「マヨン山の現在の警戒レベルは何ですか?」
get_volcano_status - 「現在、フィリピン周辺で台風が発生していますか?」
get_active_typhoons - 「その地震を USGS の世界地震情報と照合してください。」
get_usgs_earthquakes_ph - 「今週のカガヤン・デ・オロの河川洪水予測はどうなっていますか?」
get_flood_forecast - 「1990年以降にサマール島付近を通過した台風を教えてください。」
get_historical_typhoons_ph
調達と支出を検索する
- 「道路補修に関する PhilGEPS の公告をすべて検索してください。」
search_procurement - 「パンパンガ州の治水プロジェクトを PhilGEPS で検索してください。」
search_infra_projects - 「2025年のビコル地方のインフラ支出を要約してください。」
summarize_infra_spending - 「第VII地域の調達活動はどのくらいありますか?」
get_procurement_summary - 「詳しく確認する価値があるセブ州の PhilGEPS 公告を特定してください。」
flag_infra_anomalies - 「フラグが付いたプロジェクトの公告全文を取得してください。」
get_infra_project
PSA 統計カタログを検索する
- 「出生率に言及している PSA の表を探してください。」
search_psa_catalog - 「OpenSTAT の貧困に関する項目を順に案内してください。」
browse_psa_catalog - 「この貧困統計表にはどのようなディメンションがありますか?」
describe_psa_dataset - 「2023年の島嶼グループ別貧困発生率を取得してください。」
query_psa_dataset - 「現在のインフレ率はどのくらいですか?」
get_inflation_stats - 「全国の失業率はどのくらいですか?」
get_labor_stats - 「最新年の PSA の健康指標を取得してください。」
get_health_indicators - 「稲作に該当する PSIC コードは何ですか?」
search_psic_codes
query_psa_dataset ではすべてのディメンションに明示的な値コードが必要です。"all" と "*" は受け付けず、クエリは最大1000セルに制限されます。PSA は全キューブのリクエストに HTTP 403 を返すため、まず describe_psa_dataset を使う方法しかありません。
天候と環境を確認する
- 「イロイロの5日間予報を教えてください。」
get_weather_forecast - 「ビコル地方で有効な気象警報はありますか?」
get_weather_alerts - 「パラワンの日射量はどのくらいですか?」
get_solar_and_climate - 「今日のマニラの大気質はどうですか?」
get_air_quality - 「今年、ミンダナオ島の植生はどのように変化しましたか?」
get_vegetation_index - 「最新の PAGASA 気象情報を一覧表示してください。」
list_pagasa_advisory_files - 「フィリピンの一人当たり GDP の推移を教えてください。」
get_world_bank_indicator
2025年の選挙結果を確認する
- 「イロコス・ノルテ州アダムスの投票区まで、選挙データの階層をたどってください。」
browse_election_results - 「投票区 28010001 の得票数を表示してください。」
get_election_return
アーカイブは2025-05-16に固定されているため、これら2つのツールは固定された公開記録を読み取ります。ツールはデータを取得しますが、解釈はしません。
新しい法律を追跡し、オープンデータセットを探す
- 「今週、Official Gazette は何を公開しましたか?」
get_official_gazette_feed - 「HDX でフィリピンの洪水に関するデータセットを探してください。」
search_hdx_datasets
HDX の各データセットには個別のライセンスがあります。再利用する前に license_id を確認してください。
ツールではなくプロンプトから始める
3つの MCP プロンプトが複数ステップの作業をあらかじめ記述するため、クライアントはスラッシュコマンドや開始点として提供できます。
area_briefing(location)は、場所に関する詳細なブリーフィングを作成します。infra_accountability_scan(area)は、調達レビューの手順を順に進めます。psa_data_explorer(topic)は、検索、説明、クエリのループを実行します。
サーバー自体に関する質問に答えるツールが1つあります。get_data_freshness
は、実行中のバージョン、ツール数、キャッシュ期間とライセンスを含むすべてのソース、
ホストごとのヘルス状態、キャッシュの経過時間を報告します。
クライアントがツールを呼び出さずに読み取れるコンテキストを、2つの MCP リソースが提供します。
data://ph-civic/source-catalogは、ソース、鮮度、ライセンスの一覧です。data://ph-civic/civic-framingは、説明責任に関する出力の言語ルールです。
41個すべてのツールの完全なシグネチャ、引数、制限については、 docs/tool-reference.md をご覧ください。
ある場所の詳細なプロフィールを取得する
get_area_profile("Tacloban") は解決された識別情報を返し、次に
地域全体の人口ではなく、国全体の人口と並べてタクロバン自身の人口を報告します。
{
"resolved": {
"name": "City of Tacloban",
"psgc_code": "083747000",
"level": "city"
},
"demographics": {
"population": 259353,
"population_year": 2024,
"population_census": "2024 Census of Population",
"population_reference": "PSA 2024 Census of Population, reference date 2024-07-01.",
"population_geography_level": "highly_urbanized_city",
"population_psgc_code": "0831600000",
"poverty_incidence_pct": 20.6,
"poverty_reference_year": 2023
},
"national_reference": {
"population": 112729484,
"population_year": 2024,
"poverty_incidence_pct": 10.9,
"poverty_year": 2023,
"population_share_pct": 0.23,
"poverty_gap_pct_points": 9.7
},
"blocks": {
"resolve": "success",
"population": "success",
"poverty": "success",
"hazard": "success",
"weather": "success",
"national_population": "success",
"national_poverty": "success",
"infra": "success"
},
"upstream_error": false,
"caveats": []
}
2026-09-03 にライブデータを取得しました。以前のバージョンが報告していた約460万人の Region VIII の数値に代わり、タクロバン自身の人口である259,353人が表示されます。 人口の数値がどの地域に属するものかエージェントが推測する必要がないよう、 人口統計の各項目には、それぞれの国勢調査、基準日、地理レベルが明記されています。
サービス停止時にも空のリストではなくエンベロープを返す
リストを返すツールは、成功時には実際のリストを返します。上流で障害が発生した場合は、 代わりにエンベロープを返します。
{ "results": [], "upstream_error": true, "caveats": ["ConnectError: ..."] }
これは「ソースに接続できなかった」という意味であり、「地震がない」や「通知がない」
という意味ではありません。失敗はキャッシュに保存されないため、再試行には意味があり、
caveats エントリーには例外クラス名ではなく実際のエラーが含まれます。
すべての単一値ツールは、data_status に次の5つの値のいずれかを設定します。
data_status | 意味 |
|---|---|
success | ソースが出所情報とともに値を返しました。 |
empty | ソースは応答しましたが、このリクエストに該当する行はありません。 |
unavailable | ソースが応答しなかったか、読み取り不能な本文を送信しました。 |
indeterminate | ソースは応答しましたが、サーバーは結果を信頼できません。 |
invalid_request | 呼び出し元が不正な引数を送信しました。caveats に記載された引数を修正してください。 |
upstream_error と validation_error は data_status から導出されるため、
呼び出し元はどちらのフィールドに基づいても分岐できます。get_area_profile は
blocks 内のブロックごとにステータスを報告し、失敗したすべてのブロックを
caveats にまとめるため、数値が null であるのに caveats のリストが空という状態にはなりません。
すべてのレスポンスには source と data_retrieved_at が含まれます。
ソースと鮮度
以下の表は、server.py の SOURCE_CATALOG から
scripts/render_source_matrix.py を通じて直接生成されるため、
サーバーが実際に報告する内容との食い違いは生じません。
| ソース | 提供される情報 | 更新頻度 | キャッシュ TTL | ライセンス |
|---|---|---|---|---|
| PSGC | 地域コードと名称。地方自治体からバランガイまで | PSA が新しい PSGC バージョンを公開した際に更新(年次または四半期ごと) | 24 h | パブリックドメイン(PSA Philippine Standard Geographic Code) |
| PHIVOLCS 地震 | 地震イベントと詳細な速報 | 5 分ごとに表を更新。速報はイベントごとに公開 | 5 min | 公開情報、PHIVOLCS の公開速報ページ |
| PHIVOLCS 火山 | 監視対象の火山ごとの警戒レベルと速報 | 活火山ごとに毎日速報を公開 | 30 min | 公開情報、PHIVOLCS の公開速報ページ |
| PAGASA 予報 | 10 日間の天気予報。Open-Meteo によるフォールバックあり | 1 日 2 回発表。Open-Meteo は 1 時間ごとに更新 | 1 h | Open-Meteo CC-BY 4.0/PAGASA の利用条件 |
| PAGASA 台風 | 発生中の台風速報と気象警報 | 台風発生中は 3〜6 時間ごとに速報 | 10 min | 公開情報、PAGASA の速報ページ |
| PhilGEPS 公告/インフラ | 調達公告、インフラ関連のサブセット、支出概要 | 最新の入札公告約 100 件。6 時間ごとに更新 | 6 h | 公開情報、PhilGEPS の公開公告一覧 |
| PSA OpenSTAT | 人口、貧困、CPI、労働、保健、および統計カタログ全体 | テーブルごとに基準時点が異なります。人口:2024 年人口センサス(基準日 2024-07-01)、年別の 2010 年、2015 年、2020 年のデータ。貧困:2023 年。CPI/インフレ率:最新の公表月(遅延あり)。労働力調査:最新の公表四半期。保健(1D):指標ごと | 24 h | PSA オープンデータ利用条件 |
| 地域プロフィール(自動構成) | 以下の各ソースからリアルタイムに構成した地域プロフィール | PSGC + PSA + PhilGEPS + PHIVOLCS + PAGASA からリアルタイムに構成。各項目には独自の基準期間が付与されます | 1 h | 公開情報、PSA OpenSTAT、PSGC、PhilGEPS、PHIVOLCS、PAGASA |
| NASA POWER | 任意の地点の日別日射量と気候データ | 毎日更新、約 3 日の遅延 | 24 h | パブリックドメイン(NASA) |
| Open-Meteo 大気質 | PM2.5、PM10、NO2、SO2、O3、CO、および AQI | 1 時間ごと | 15 min | Open-Meteo CC-BY 4.0 |
| Open-Meteo 洪水予報 | 最寄りの河川グリッドセルの日別河川流量予測(GloFAS モデル) | GloFAS モデルの実行は毎日 | 1 h | Open-Meteo CC-BY 4.0 |
| NASA MODIS NDVI | 任意の地点の NDVI および EVI 植生指数 | 16 日間の合成データ、約 14 日の遅延 | 24 h | パブリックドメイン(NASA/ORNL) |
| USGS FDSN | PHIVOLCS と照合したフィリピン地域の地震 | リアルタイムの全世界フィード | 10 min | パブリックドメイン(USGS) |
| NOAA IBTrACS | フィリピン責任区域(AOR)を通過した過去の熱帯低気圧の経路 | 年次更新 | 24 h | パブリックドメイン(NOAA) |
| World Bank Open Data | フィリピンのマクロ経済指標 | 年次。遅延は指標によって異なります | 24 h | World Bank Open Data CC-BY 4.0 |
| HDX | 人道支援データセットの検索。ライセンスはデータセットごと | dataset ごとの metadata_modified に基づきます。カタログはクエリごとに最新の状態で検索されます | 6 h | HDX(Humanitarian Data Exchange)CKAN API。ライセンスはデータセットごと |
| Official Gazette RSS | 布告、覚書通達、その他の政府発行文書 | 新しい発行文書は当日中に掲載。フィードはリクエストごとに再構築 | 20 min | 公開情報、Official Gazette の政府記録、RA 8293 section 176 の既定条件 |
| PAGASA 公開ファイル | 勧告、速報、高潮に関する PDF ファイルの生データ一覧 | weather_advisory は約 6 時間ごとに更新。速報はサイクロン発生中のみ。stormsurge は 2019-12-02 以降公開されていません | 15 min | PAGASA 公開ファイル(pubfiles.pagasa.dost.gov.ph)、政府記録 |
| PSIC | コードの接頭辞または説明による産業分類コードの検索 | PSIC の改訂は数年単位で行われます | 24 h | PSA Philippine Standard Industrial Classification(PSIC)、CC BY 4.0 |
| COMELEC 2025 年選挙結果 | 地方自治体からバランガイまでの投票所別得票数 | アーカイブは 2025-05-16 10:00:09 AM に凍結。固定された公開記録であり、ライブフィードではありません | 24 h | 公開情報、COMELEC 2025 年選挙結果アーカイブ |
環境変数はPAGASA_API_TOKENのみで、設定は任意です。 | ||||
| PAGASAでは正式な申請を経て取得する必要があります。トークンがない場合、予報には | ||||
| Open-Meteoを使用します。41個すべてのツールは、トークンなしで動作します。 |
明記しておくべき、3つのデータ時点:
- 人口データは、デフォルトで2024年人口センサスを参照します。
psgc_codeを指定すると、バランガイレベルまで取得できます。PSAは2026年にOpenSTAT上のセンサスフォルダーを移動したため、サーバーはコールドスタートのたびにタイトルからフォルダーを特定し、すべての結果にセンサス名、基準日、地理レベルを記載します。2010年、2015年、または2020年のデータにはyearを、市、自治体、またはバランガイのデータにはpsgc_codeを指定してください。 - 貧困データは2023年通年分です。 PSAは3年ごとに公開しています。
- 調達データはリアルタイムではありません。 公開ポータルにはフィルター可能なAPIがないため、このサーバーは最新の約100件の通知を読み込み、ローカルでフィルターを適用します。10万人あたりの率を算出するには、サンプルに少なくとも500件の通知が必要です。そのため、件数がしきい値に達しない場合、
get_area_profileはその数値を表示せず、理由をcaveatsに記載します。
OpenSTATのupdatedフィールドは、データ時点ではなくサーバーの現在時刻を示します。データ時点はテーブル自体の時間ディメンションを確認してください。各レスポンスに記載されています。
フラグが付いた通知は調査の出発点であり、証拠ではありません
flag_infra_anomalies、summarize_infra_spending、および調達検索の結果は、調査の出発点であり、不正行為の証拠ではありません。フラグが付いた項目にはすべて免責事項が付属し、サーバーはエージェントに、根拠を示せる表現を使うよう指示します。
high_cost_no_published_progressは、実際に確認する内容を表す名前です。公開リストにはどの通知についても進捗データが掲載されていないため、これは費用しきい値に基づく透明性フラグであり、プロジェクトごとの進捗確認ではありません。
**緊急時はndrrmc.gov.phおよびPHIVOLCSとPAGASAの公式チャンネルを利用してください。**これは人命の安全を守るためのシステムではなく、調査用ツールです。
開発
git clone https://github.com/xmpuspus/ph-civic-data-mcp
cd ph-civic-data-mcp
uv sync --extra dev
# Offline tests, exactly what CI runs
uv run pytest -m "not live"
# Live tests against real upstreams; the weekly workflow runs these every Monday
uv run pytest -m live
# Lint and format check
uv run ruff check .
uv run ruff format --check .
# Build and validate
uv build
uvx twine check dist/*
CIでは、Python 3.11、3.12、3.13、3.14でオフラインテストを実行するほか、Ruff lint、Ruff format、ビルド、および新しいプロセスでのインポート時に41個すべてのツールが公開されることを確認します。CIアクションの参照先は可変タグではなく、コミットSHAに固定されています。
上記のdocker buildステップでは、ヘルスチェックを備えた非rootイメージが生成されます。サーバーはfastmcp>=4.0.0,<5.0.0に固定しており、現在はMCP SDK 2.1.1上の4.0.2を使用しています。
詳細情報
- 41個すべてのツールについてはdocs/tool-reference.md
- リリース履歴についてはCHANGELOG.md
- ディレクトリへの掲載についてはdocs/SUBMISSIONS.md
- FastMCP 4へのアップグレード判断についてはdocs/fastmcp-4-evaluation.md
- 課題とプルリクエスト:github.com/xmpuspus/ph-civic-data-mcp
MITライセンス。Xavier Puspusが開発しました。PSA、PHIVOLCS、PAGASA、PhilGEPS、DPWH、NASA、NOAA、またはWorld Bankとは提携していません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。