cf-administrative-procedures-mcp
Remote MCP server for searching and aggregating Japan's administrative procedures survey data, powered by Cloudflare Workers and D1.
README
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 に置き換えれば素直に成立する。
構成
[ローカル / 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 ではなく httpUrl(url は 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 を参照。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。