Claude Media
Claude CodeにCKAN MCPをつないでオープンデータを検索する手順

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 ckan

claude 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/data

APIのパスが /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 を使います。

この記事を共有:XはてブLinkedIn