Odel
Public Data Catalog

Public Data Catalog

@yhay81PythonMITUpdated 4w ago

Reviewed public-data search and execution with provenance and verifiable integrity receipts.

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

PDC — 公的データセット検索

English

CI Recipe probes License: MIT

知りたいことから日本の公的データを探し、何が分かるか・誰が提供しているか・どの形式で使えるか・利用条件は何かを分かりやすく比べるサービスです。

公開サービス: PDC — 公的データセット検索 · ブランドガイド

e-Govデータポータルと統計ダッシュボードの公式メタデータをその場で検索し、タイトル一致、説明、形式、利用しやすさから候補を整理します。「観光客数」から「延べ宿泊者数」を探すように、一般的な言葉を公式統計の用語へ読み替えた検索にも対応します。データを複製して検索しているわけではありません。

通常のWebサービスが主役です。ブラウザから無料・登録不要で検索でき、同じ検索をMCPから自動化することもできます。既存の検証済み取得レシピと実行レシートは互換機能として残しています。

ブラウザで調べる

pdc.yhay81.com を開き、「都道府県別の人口推移」「消費者物価指数」「空き家」のように入力します。検索結果には次の情報が表示されます。

  • このデータで分かること
  • 提供している省庁・統計調査
  • 対象期間、地域、単位
  • CSV、Excel、JSON、PDFなどの形式
  • 公式の詳細ページ、元データ、利用条件
  • なぜ候補になったか

JSONで組み込む場合は GET /api/search?q=人口 を利用できます。検索結果は候補であり、利用前に公式ページで対象期間・内容・利用条件を確認してください。

まず1分で試す

依存パッケージは不要です。Python 3.11以上で実行できます。

git clone --depth 1 https://github.com/yhay81/public-data-catalog.git
cd public-data-catalog
python3 scripts/recipe_tool.py run tokyo-population-2023 --format text

2026年7月24日の検証では、統計ダッシュボードから次のような短い結果を取得します。

質問: 2023年の東京都の総人口は何人か。
結果:
- 総人口: 14086000 人
- 地域コード: 13000
- 時間コード: 2023CY00
- 速報・確報コード: 0
...
情報源: statistics-dashboard-api
出典表記: 出典:統計ダッシュボード(https://dashboard.e-stat.go.jp/)
ライセンス: https://dashboard.e-stat.go.jp/static/terms

値は公式ソース側で改訂される可能性があります。実行結果には、取得日時、実際のリクエストURL、解釈上の注意、出典、ライセンスも含まれます。

AIエージェントから使う

公開MCPサーバーは、現在標準のStreamable HTTPで接続できます。

# Codex
codex mcp add public-data-catalog \
  --url https://pdc.yhay81.com/mcp

# Claude Code
claude mcp add --transport http public-data-catalog \
  https://pdc.yhay81.com/mcp

公開するツールは、e-Govと統計ダッシュボードを検索する search_data、従来のレビュー済み契約を実行する execute、実行レシートの整合性を確認する verify の3つです。任意URL、任意SQL、任意コードは実行しません。Cloudflare Workers上の参照サービスなので可用性保証はありません。

クライアント別接続ガイドには、画面からの設定、1分確認、切断、トラブルシューティングまでをまとめています。ローカルMCPとして使う場合はNode.js 24以上で npm ci && npm run mcp を実行します。実装と接続境界は アーキテクチャ、実証済み範囲は 互換性マトリクス、MCP Registry用の機械可読情報は server.json にあります。

使い方

# 利用できる質問を見る
python3 scripts/recipe_tool.py list

# AIや別ツールから読めるJSON一覧
python3 scripts/recipe_tool.py list --json

# 1つのレシピを実行する
python3 scripts/recipe_tool.py run japan-unemployment-rate-2023

# 検証済み範囲内で年を指定する
python3 scripts/recipe_tool.py run tokyo-population-by-year --param year=2025

# 人が読みやすい短い形式
python3 scripts/recipe_tool.py run japan-unemployment-rate-2023 --format text

# 全レシピの応答契約を確認する
python3 scripts/recipe_tool.py check

# 保存したJSON結果の整合性を確認する
python3 scripts/recipe_tool.py verify result.json

run の既定出力は、AIや後続処理で扱える完全なJSONです。成功結果には応答と抽出結果のSHA-256を束ねた整合性確認用の実行レシートが付きます。--format text は値・解釈・出典・ライセンスを人が素早く確認するための表示です。

検証済みレシピ

ID質問情報源認証
tokyo-population-by-year2015–2025年から指定した年の東京都の総人口は何人か統計ダッシュボード不要
tokyo-population-20232023年の東京都の総人口は何人か統計ダッシュボード不要
japan-unemployment-rate-20232023年の日本の完全失業率は何%か統計ダッシュボード不要
egov-population-dataset-searche-Govで人口データセットと取得先を特定できるかe-Govデータポータル不要
world-bank-japan-population-2023世界銀行による2023年の日本の総人口は何人かWorld Bank不要
usgs-noto-earthquake-2024USGSは能登半島地震をどう記録しているかUSGS不要

レシピの構造と安全上の制約は docs/recipe-format.md、現在の検証状況は docs/status.md にあります。初見での再現性を検証する場合は 外部実行テスト手順 を使い、テスト結果フォーム から成功も失敗も共有してください。AIエージェントを評価する場合は、全6レシピを網羅した 9つの評価シナリオ と採点器を利用できます。

情報源プロファイル

公開検索の保守対象は statistics-dashboard-apiegov-data-portal の2件です。以下のうち、それ以外は過去の検証資産として paused にしており、現在のWeb検索には使用しません。

ID分野地域認証主な形式
estat-api日本の公的統計日本要登録・アプリIDJSON / XML / CSV
statistics-dashboard-api日本の主要統計日本・世界不要JSON / JSON-stat / XML / CSV
open-meteo天気・気候世界不要(無料枠)JSON / CSV / XLSX
world-bank-indicators開発・経済統計世界不要JSON / XML
gbif-api生物多様性・出現記録世界多くの検索は不要JSON
us-census-api人口・経済・住宅統計米国任意のAPIキーJSON
openalex-api学術文献・研究者・機関世界APIキー(無料)JSON
egov-data-portal日本政府オープンデータ日本カタログAPIは原則不要JSON / CSV / XML
usgs-earthquake-api地震・災害観測世界不要GeoJSON / CSV / XML
overpass-api地理空間・地図要素世界不要(共有インスタンス)JSON / XML / CSV
copernicus-climate-data-store気候再解析・環境世界登録・APIトークンGRIB / NetCDF / CSV / Zarr
europe-pmc-api生命科学文献・注釈世界不要JSON / XML
open-food-facts-api食品・栄養・成分世界読み取りは不要JSON / CSV / JSONL

catalog.json が情報源プロファイルの正本で、構造は catalog.schema.json で定義しています。レシピは recipes/ の各JSONファイルが正本です。エージェントや静的配布向けの統合バンドル generated/catalog.bundle.json と、標準カタログ連携向けの DCAT 3 JSON-LD はそこから決定的に生成します。

設計原則

  • 問いから始める — 分野の穴埋めだけを理由に情報源を増やしません。
  • 最小取得 — 大量データをミラーせず、問いに必要な範囲だけを取得します。
  • 根拠を残す — 値と一緒に、出典、ライセンス、単位、コード、確認日を返します。
  • 失敗を検出する — HTTP 200だけでなく、主要フィールドと識別子まで確認します。
  • 安全に限定する — 初期レシピはHTTPSのGET、明示的なホスト、最大1 MBに制限します。

「公開されている」と「無条件に再利用できる」は同じではありません。データセット単位・レコード単位の条件、出典表示、商用利用制限、APIのレート制限を必ず確認してください。

検証

依存パッケージなしで、カタログとレシピの構造、URL、ID、列挙値、出典の対応、秘密情報らしきクエリパラメータを検査できます。

python3 scripts/validate_catalog.py
python3 scripts/evaluate_agent_traces.py --check-set
python3 -m unittest discover -s tests -v
python3 scripts/recipe_tool.py check
npm ci
npm run artifacts:check
npm run typecheck
npm test

通常のプルリクエストでは構造と単体テストだけを実行し、外部APIへのprobeは週次および手動実行に分けています。

貢献

新しい情報源の名前ではなく、「再現可能にしたい具体的な問い」をIssueまたはプルリクエストで提案してください。

  1. CONTRIBUTING.mdレシピ仕様 を読む
  2. 公式ドキュメントと利用条件を確認する
  3. 1つの問いに対する、小さく読み取り専用のレシピを追加する
  4. ローカル検証と対象レシピのprobeを実行する
  5. 結果、根拠、注意点をプルリクエストに残す

目的と非目標は PURPOSE.md、競合との役割分担と採用戦略は docs/strategy.md、今後のゲートは docs/roadmap.md にあります。利用上の質問や問題の報告先は SUPPORT.md を参照してください。

ライセンス

このリポジトリの構造化メタデータと文書はMIT Licenseで提供します。カタログに登録された各サービス・データの利用条件は、各項目の license と公式ソースに従ってください。