Claude CodeにCKAN MCPをつないでオープンデータを検索する手順
CKAN MCP ServerをClaude Codeに追加し、データセット検索から表データの照会までを会話で行う手順。日本のe-Govデータポータルに向けるときの注意と、検索結果を鵜呑みにしない運用も扱います。
CKAN MCP Serverは、CKANという仕組みで作られたオープンデータのポータルに、Claudeが直接問い合わせられるようにするMCPサーバーです。データセットの検索、組織やタグの一覧、表データの照会、メタデータの読み取りを、自然な言葉の依頼から呼び出せます。
開発しているのはイタリアのonDataというコミュニティで、Anthropicの製品ではありません。認証は要らず、読み取り専用です。
この記事ではClaude Codeへの追加コマンド、使えるツール、日本のポータルに向けるときの落とし穴を順に書きます。
CKAN MCP Serverでできること
CKANは、世界の多くの公的オープンデータポータルが使うオープンソースのカタログ基盤です。ポータルごとに検索の癖があり、APIの使い方も知らないと引けません。CKAN MCP Serverは、その検索APIをMCPのツールとして包んだものです。
主なツールは次のとおりです。
| 用途 | ツール |
|---|---|
| データセット検索 | ツールckan_package_search(Solr構文)、ckan_find_relevant_datasets(関連度順) |
| 詳細の取得 | ツールckan_package_show、ckan_tag_list |
| 組織・グループ | ツールckan_organization_list / show / search、ckan_group_list / show / search |
| 表データの照会 | ツールckan_datastore_search、ckan_datastore_search_sql |
| ポータル探索・統計 | ツールckan_find_portals、ckan_catalog_stats、ckan_analyze_datasets |
| そのほか | ツールsparql_query、ckan_status_show、イタリアのdati.gov.it向けの品質指標ツール |
ckan_find_portalsは、世界のCKANポータルを集めたdatashades.infoの登録簿(約950件)から、国や言語、データセット数で絞って探すツールです。調べたい国のポータルのURLが分からないときの入口になります。
操作は、どのポータルに問い合わせるかを server_url 引数で毎回渡す形です。サーバーを1つ追加しておけば、依頼のたびに対象ポータルを変えられます。
Claude Codeに追加する
追加には2つの方法があります。どちらも認証は要りません。
公開エンドポイントを使う(インストール不要)
提供元が公開しているCloudflare Workers上のエンドポイントに接続します。
claude mcp add -s user -t http ckan \
https://ckan-mcp-server.andy-pr.workers.dev/mcpこのエンドポイントは、全利用者で共有する1日10万リクエストの枠があります。試すだけなら足りますが、繰り返し使う場合は手元に入れるほうが安全です。
手元で動かす(npx)
こちらは共有枠がなく、問い合わせは手元のマシンから対象ポータルへ直接飛びます。
claude mcp add -s user ckan npx @aborruso/ckan-mcp-server@latestどちらも -s user を付けるとユーザースコープになり、全プロジェクトで使えます。外すとローカルスコープ(追加したプロジェクトだけ・自分だけ)になります。特定のリポジトリの調査にだけ使うなら、スコープを付けずにそのフォルダで実行するほうが他の作業にツール定義が混ざりません。
追加後は、接続状態を確かめます。
claude mcp list
claude mcp get ckanclaude mcp list には、サーバーごとに接続済みか、認証が必要か、接続に失敗したかが出ます。失敗したときは claude mcp get ckan の Issue: 行に原因が出ます。claude mcp add 自体が管理設定に止められる場合は、claude mcp addがプラグイン以外で失敗する件が当たります。
Claude Desktopから使う場合は、設定の連携(Integrations)に同じURLを登録します。手元で動かす場合の設定ファイルは command に npx、args に @aborruso/ckan-mcp-server@latest を書く形です。
最初の検索:件数を先に取る
最初の依頼は、結果を読む前に件数を見るのが定石です。ckan_package_search は rows: 0 を渡すとデータセット本体を返さず、ヒット件数だけを返します。
Claude Codeには、たとえば次のように頼みます。
CKANのMCPで、イタリア国立ポータル(https://www.dati.gov.it/opendata)に
「大気汚染」を意味するイタリア語(inquinamento atmosferico)で
rows=0 の検索をして、件数だけ教えて。多ければ機関ごとの内訳(facet)も出して。提供元の例では、イタリア語の q: "popolazione" のような検索語と、facet_field: ["organization", "tags", "res_format"] を rows: 0 と組み合わせて、機関・タグ・形式ごとの件数だけを取っています。件数と内訳を見てから、絞り込みの条件を決める流れです。
イタリアのポータルの場合、URLは https://www.dati.gov.it/opendata で、https://dati.gov.it ではありません。提供元のトラブルシューティングにも書かれている注意点です。
絞り込みのSolr構文には罠がある
ckan_package_search の q と fq はSolr構文で、CKANの検索の中身そのものです。提供元のREADMEは、1つの罠を明記しています。
- 正しい:
fq: "res_format:(CSV OR JSON)" - 誤り:
fq: "res_format:CSV OR res_format:JSON"は黙って無視され、カタログ全体が返る
エラーにならず全件が返るので、件数が異様に多いときは条件が効いていない疑いがあります。「絞り込み後の件数が全体の件数と同じになっていないか」を、依頼の中で毎回確かめさせると事故が減ります。
日本のポータルに向ける
ここからが日本の読者に固有の話です。data.go.jpのAPIは、CKANの標準API形式に応答します。https://www.data.go.jp/data/api/3/action/... は https://data.e-gov.go.jp/data/api/3/action/... へリダイレクトされ、status_show の応答では、サイト名はe-Govデータポータル、CKANのバージョンは2.9.5と返ります。
CKANの標準APIなので、CKAN MCP Serverの対象になります。ただしリダイレクトの先のホスト名で指定するほうが安全です。
server_url: https://data.e-gov.go.jp/dataAPIのパスが /data/api/3/action なので、イタリアの例(/opendata の下に api/3/action)と同じ規則で /data までをサーバーURLにします。手元でHTTPトランスポート(TRANSPORT=http)を使う場合は、リダイレクトの各ホップも許可リストの対象です。許可リストの環境変数 CKAN_ALLOWED_DOMAINS にはリダイレクト先のホスト名を入れてください。標準のstdio(上の npx の追加方法)なら許可リストは要りません。
日本語の検索語は通るが、表データの照会は期待できない
e-Govデータポータルでは、日本語の検索語がそのまま使えます。q=人口 は4,889件にヒットし、全体は18,826件です(この数字は固定ではなく、掲載が増えるたびに変わります)。
問題は、見つかったデータの形です。fq=res_format:CSV でCSVを含むデータセットは1,157件あり、その先頭100件(資源140件)のサンプルでは、CKANのDataStoreが有効な資源(datastore_active: true)は0件です。サンプルの観察なので、国のポータル全体で使えないと言い切れるものではありません。
提供元は、DataStoreを「CSVやExcelを問い合わせ可能なデータベースに取り込む任意の拡張」と説明しています。有効な資源だけが ckan_datastore_search と ckan_datastore_search_sql の対象で、ポータルが有効にしていなければ使えません。
つまり日本の国のポータルで期待できるのは、次の用途です。
- データセットの検索と、メタデータ(提供機関、ライセンス、更新日、資源のURL)の読み取り
- 件数や機関別の集計(facet)
- 見つけたCSVやExcelのURLの取得
表の中身を条件で絞って取る操作は、DataStoreが有効なポータルでの機能です。日本では、見つけたファイルを別の手段で読む流れになります。その部分は、手元のファイルをClaude Codeで処理する話で、CKAN MCPの外側です。
運用の工夫:ツールの結果だけを根拠にさせる
CKAN MCP Serverのトラブルシューティングには、検索結果が0件のとき、一部のLLMが学習データの知識で答えを補ってしまうという注意があります。サーバーの不具合ではなく、LLMの振る舞いです。
Claude Codeでは、プロジェクトの CLAUDE.md に規約を書いておくと、毎回の依頼で繰り返さずに済みます。次の断片は、公式の例ではなく、上の注意を受けて書いた一例です。
## オープンデータ調査の規約
- データセットの名前・提供機関・件数は、CKANのツールが返した値だけを使う。
- ツールが0件を返したら、0件と報告する。推測で補わない。
- 報告には、データセット名、提供機関、ライセンス、更新日(metadata_modified)、
資源のURLを添える。
- 検索は、まず rows=0 で件数を確かめ、多ければ絞り込みの案を出す。サブエージェントや別のコマンドに調査を渡すときも、同じ文を引き継げば同じ基準で動きます。
出力の上限にも注意
CKAN MCP Serverのツール出力は、サーバー側で50,000文字が上限です。ckan_package_search の既定は1ページ10件で、最大1,000件まで指定できます。ckan_datastore_search は既定100行、最大32,000行です。上限を超えたテキストは切り詰められ、切り詰めの注記が付きます。JSONの場合は _truncated と _original_count が付くので、全件が返ったと思い込まずに確認できます。
Claude Code側にも別の上限があります。MCPツールの出力が1万トークンを超えると警告が出て、既定では2万5千トークンで打ち切られます。環境変数 MAX_MCP_OUTPUT_TOKENS で上限を変えられます。大量の結果が要るときは、1回で取らずに件数を区切ってページ送りで分けると、どちらの上限にも当たりにくくなります。
自治体の公開データの調査に使う例
自治体の担当者が「他の市が公開している公共施設データの形式を調べたい」場面を考えます。検索語は日本語で通るので、依頼は次のように書けます。
CKANのMCPで https://data.e-gov.go.jp/data を対象に、
「避難所」を含むデータセットの件数を rows=0 で確認して。
そのうえで上位10件の名前・提供機関・ライセンス・更新日・資源の形式を表にして。
CSVが付いているものに印を付けて。ここで得られるのは、見つけたデータの一覧と各資源のURLです。自分の自治体のデータを公開用の形式に整える作業は、別の手順になります。自治体標準オープンデータセットの形式に整える手順にある変換と検査のスクリプトが、その作業です。CKANの検索結果から、他の自治体が公開した形式の実例を拾い、自分の台帳を整える際の見本にする、という使い方ができます。
統計表のAPIを直接呼ぶなら、MCPを通さない方法もあります。e-Stat APIをClaude Codeで呼ぶ手順は、取得する表のIDを確かめながら進めます。CKANのカタログ検索で見つけたデータの出典として、e-Statの統計表が出てくることもあります。
使う前に押さえる制約
| 項目 | 内容 |
|---|---|
| 提供元 | 内容onDataコミュニティ。Anthropic製品ではない |
| 認証 | 内容不要(読み取り専用) |
| 公開エンドポイントの枠 | 内容全利用者共有で1日10万リクエスト |
| 対象 | 内容CKANのAPIを公開しているポータル。CKANでないサイトは対象外 |
| DataStore | 内容ポータルが有効にした資源のみ。fq=res_format:CSV の先頭100件(資源140件)のサンプルでは0件 |
| catalog.data.gov | 内容2025年にCKANから別のAPIへ移行したため、CKAN前提の呼び出しは使えない |
| プライバシー | 内容提供元は、個人データを収集せず、問い合わせ内容を保存もログ出力もしないと説明 |
CKANでないポータルは、ckan_package_search のようなCKANツールでは引けません。アメリカのcatalog.data.govは2025年にカタログを入れ替えており、CKAN MCP Serverの側は、404ではなく理由を説明する応答を返す作りになっています。
スキルも用意されています。提供元の skills/ckan-mcp は、国ごとに適切なポータルを選ぶ、結果が0件のとき別のポータルや欧州のdata.europa.euにフォールバックする、といった複数手順の判断を、Claudeに教えるものです。npx skills add でインストールする形で配布されています。日本のポータルを1つに決めて使う場合は、上の CLAUDE.md の規約で足ります。
まとめ
CKAN MCPは、ポータルのAPIを知らなくても、検索から資源URLの取得までを会話で進められるようにします。日本のe-Govデータポータルでは、日本語の検索語は通る一方、表データの条件照会(DataStore)は期待しにくく、使い道は「見つける」ところまでです。
サーバー選びで迷うなら、まず公開エンドポイントで rows: 0 の件数確認を試し、手応えがあれば手元のnpx版に切り替える順が無理がありません。結果の報告基準は CLAUDE.md に書いておくと、0件のときに推測で埋められる事故を避けられます。
よくある質問
CKANでないオープンデータポータルでも使えますか
使えません。CKANのAPIを公開していることが前提です。CKANかどうかは、/api/3/action/status_show が応答するかで確かめられます。
Claude Desktopでも使えますか
提供元は、Claude Desktopの設定からのカスタム連携として、同じURLを登録する手順を案内しています。Claude Codeでは上の claude mcp add を使います。