Skip to main content
Glama
ochanuco

cf-administrative-procedures-mcp

by ochanuco

cf-administrative-procedures-mcp

デジタル庁の行政手続等の棚卸調査結果を検索・集計するリモート MCP サーバー。Cloudflare Workers + D1 で動く。

digital-go-jp/administrative-procedures-mcp(Python / polars / stdio)の非公式派生。デジタル庁とは無関係。

なぜ移植するのか

上流は polars(Rust ネイティブ拡張)に依存しており、Workers では動かない。Python Workers が受け付けるのは PyEmscripten wheel か Pyodide 同梱パッケージのみで、polars は PyPI に emscripten wheel を出していない。

一方で上流の MCP ツール契約は完全に SQL の形をしている。

query_records(dataset_id, q, search_fields, select, where, order_by, limit, cursor)
  → SELECT {select} FROM t WHERE {where} AND {q} ORDER BY {order_by} LIMIT {limit}

summarize_records(dataset_id, metrics, group_by, where, having, explode, limit)
  → SELECT {group_by}, {agg} FROM t WHERE {where} GROUP BY {group_by} HAVING {having}

where の演算子は7種のみ(文字列=部分一致 / 配列=IN / $gte / $lte / $ne / $not_contains / $not_empty)。polars を D1 に置き換えれば素直に成立する。

Related MCP server: houan-mcp

構成

[ローカル / CI]                                   [Cloudflare]

XLSX (14.7MB, 75,071行 x 38列)
  └ prepare_dataset.py ── 上流の Python をそのまま使用
      └ data.parquet
          └ polars + sqlite3
              └ dump.sql ──wrangler d1 import──→ D1
                                                  ↑
                                         Hono + createMcpHandler
                                         (ステートレス, Durable Objects 不要)

XLSX のヘッダ2行処理や表記ゆれ吸収という一番泥臭い部分は、上流の Python 資産をビルド側で使い回す。TypeScript で新規に書くのは Worker 側だけ。

設計判断

全文検索に FTS5 を使わない。 上流は str.contains(..., literal=True) の部分一致でしかなく、FTS5 のデフォルトトークナイザ(unicode61)は日本語を分かち書きできない。LIKE '%...%' にすれば上流と挙動が一致する。75,071行の全走査は D1 の Paid 枠(25B rows read/月)に対して月33万クエリ相当で、実用上問題にならない。

inspect_dataset の品質統計は事前計算する。 null 率・ユニーク数などはビルド時に算出して meta テーブルへ入れ、実行時ロジックを持たない。

explode(multi_value 展開)は ingest 時に解決する。 手続ID x 値 の正規化テーブルを作り、実行時は JOIN で済ませる。

Durable Objects を使わない。 Agents SDK の createMcpHandler がステートレスな Streamable HTTP に対応したため、読み取り専用のこのサーバーには DO が要らない。バインディングは D1 ひとつ。

使う

トランスポートは Streamable HTTP、エンドポイントは /mcp。提供ツールは上流と同じ4つ(list_datasets / inspect_dataset / query_records / summarize_records)。

自分でデプロイした Worker の URL を <your-worker-url> に読み替えて登録する。

# Claude Code
claude mcp add -s user admin-procedures -t http <your-worker-url>/mcp

# Codex CLI
codex mcp add admin-procedures --url <your-worker-url>/mcp

Gemini CLI は ~/.gemini/settings.json に書く。Streamable HTTP のキーは url ではなく httpUrlurl は SSE 扱いになる)。

{
  "mcpServers": {
    "admin-procedures": { "httpUrl": "<your-worker-url>/mcp" }
  }
}

このリポジトリは稼働中のインスタンスを公開していない。使うには自分の Cloudflare アカウントへデプロイすること。

開発

npm install
npm run build:data     # Parquet → SQLite + dataset.json
npm run import:d1      # D1 へ投入
npm run typecheck
npm run dev            # wrangler dev(--remote で実 D1)
npm run smoke          # MCP エンドポイントの疎通確認

データの取得は上流の CLI に任せる:

git clone https://github.com/digital-go-jp/administrative-procedures-mcp.git build/upstream
cd build/upstream && uv sync --extra excel && uv run apcli fetch procedures-survey-r6

ライセンス

MIT。上流および同梱データの帰属は NOTICE を参照。

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    MCP server for Japan's e-Stat (Government Statistics Portal). Search statistical datasets, retrieve data tables, and access metadata from official Japanese government statistics.
    8
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for the Japan National Tax Agency Corporate Number API, enabling corporate number lookup and search via local AI clients.
    3
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/ochanuco/cf-administrative-procedures-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server