kanpou-mcp
MCP server for searching Japanese government procurement notices via the Kanpou API. Enables LLMs to search by date, keyword, or detailed criteria.
README
官報API MCPサーバー
官公需情報ポータルサイトAPI(官報API)をLLMやAIエージェントがツールとして使用できるようにするMCP(Model Context Protocol)サーバーです。
機能
このMCPサーバーは以下のツールを提供します:
- search_procurements - 詳細な検索条件で入札情報を検索
- get_procurements_by_date - 指定した日付の入札情報を取得
- search_by_keyword - キーワードで入札情報を検索
インストール
cd mcp-kanpo-api
npm install
npm run build
使用方法
MCPクライアントでの設定
MCPクライアント(例: Claude Desktop、Cursor等)の設定ファイルに以下を追加してください:
Claude Desktopの場合 (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"kanpo-api": {
"command": "node",
"args": ["/path/to/mcp-kanpo-api/dist/index.js"]
}
}
}
Cursorの場合 (.cursor/mcp.json または設定ファイル):
{
"mcpServers": {
"kanpo-api": {
"command": "node",
"args": ["/path/to/mcp-kanpo-api/dist/index.js"]
}
}
}
開発モード
開発中は tsx を使用して直接実行できます:
npm run dev # stdio版
npm run dev:http # HTTP版
HTTPサーバー版の使用方法
n8nなどのHTTPクライアントから使用する場合は、HTTPサーバー版を起動します:
npm run start:http
デフォルトで http://localhost:3000 で起動します。ポート番号は環境変数 PORT で変更できます:
PORT=8080 npm run start:http
利用可能なエンドポイント
GET /- ヘルスチェックGET /api/tools- 利用可能なツール一覧POST /api/tools/search_procurements- 入札情報検索POST /api/tools/get_procurements_by_date- 日付指定取得POST /api/tools/search_by_keyword- キーワード検索
使用例
# 日付指定で取得
curl -X POST http://localhost:3000/api/tools/get_procurements_by_date \
-H "Content-Type: application/json" \
-d '{"date": "2025-11-07", "count": 50}'
# キーワード検索
curl -X POST http://localhost:3000/api/tools/search_by_keyword \
-H "Content-Type: application/json" \
-d '{"keyword": "情報システム", "count": 20}'
ngrokでの公開
ngrokを使用してHTTPサーバーを外部公開できます:
# 1. HTTPサーバーを起動
npm run start:http
# 2. 別のターミナルでngrokを起動
ngrok http 3000
# 3. ngrokが提供するURL(例: https://xxxx-xxxx-xxxx.ngrok-free.app)をn8nで使用
自然言語での使用方法
このMCPサーバーは、LLM/AIエージェント(Claude、GPT-4等)が自然言語の命令を理解して、適切なツールを自動的に呼び出すことを想定しています。
使用例:
- 「2025年11月7日の入札情報を取得して」→
get_procurements_by_dateツールが自動的に呼び出されます - 「情報システムというキーワードで検索して」→
search_by_keywordツールが自動的に呼び出されます - 「東京都の物品カテゴリーの入札情報を検索して」→
search_procurementsツールが自動的に呼び出されます - 「11月の役務カテゴリーの入札情報を検索して」→
search_procurementsツールが自動的に呼び出されます
LLM/AIエージェントは、あなたの自然言語の命令を理解し、適切なツールとパラメータを選択して実行します。
利用可能なツール
1. search_procurements
詳細な検索条件で入札情報を検索します。
パラメータ:
query(string, 任意): 検索文字列(AND、OR、NOT演算子使用可能)projectName(string, 任意): 件名で絞り込みorganizationName(string, 任意): 機関名で絞り込みlgCode(string, 任意): 都道府県コード(JIS X0401準拠)category(number, 任意): カテゴリー(1=物品, 2=工事, 3=役務)procedureType(number, 任意): 公示種別(1=一般競争入札, 2=簡易公募型競争入札, 3=簡易公募型指名競争入札)certification(string, 任意): 入札資格(A, B, C, D)cftIssueDate(string, 任意): 公告日(形式: YYYY-MM-DD/ または /YYYY-MM-DD または YYYY-MM-DD/YYYY-MM-DD)tenderSubmissionDeadline(string, 任意): 入札開始日openingTendersEvent(string, 任意): 開札日periodEndTime(string, 任意): 納入期限日count(number, 任意): 返却件数(デフォルト: 100、最大: 1000)
注意: query、projectName、organizationName、lgCodeのいずれか一つを指定することを推奨します。すべてが指定されない場合は、デフォルトでQuery="*"が使用されます。
2. get_procurements_by_date
指定した日付の入札情報を取得します。内部ではquery="入札"とcftIssueDateを指定して検索を実行します。
パラメータ:
date(string, 必須): 日付(形式: YYYY-MM-DD)count(number, 任意): 返却件数(デフォルト: 100、最大: 1000)
例:
{
"date": "2025-11-07",
"count": 50
}
3. search_by_keyword
キーワードで入札情報を検索します。
パラメータ:
keyword(string, 必須): 検索キーワードcount(number, 任意): 返却件数(デフォルト: 100、最大: 1000)
例:
{
"keyword": "情報システム",
"count": 20
}
レスポンス形式
MCP版(stdio)
すべてのツールは以下の形式でレスポンスを返します:
{
"searchHits": 262,
"results": [
{
"resultId": 1,
"key": "...",
"externalDocumentURI": "https://...",
"projectName": "第2069号小中学校児童生徒用机・いす",
"date": "2025-11-07T19:08:01+09:00",
"fileType": "pdf",
"fileSize": 134411,
"lgCode": "19",
"prefectureName": "山梨県",
"cityCode": "192015",
"cityName": "甲府市",
"organizationName": "山梨県甲府市",
"cftIssueDate": "2025-11-07T00:00:00+09:00",
"category": "物品",
"procedureType": "一般競争入札",
"projectDescription": "...",
"attachments": [
{
"name": "入札説明書(PDF:132KB)",
"uri": "https://..."
}
]
}
]
}
HTTP版
HTTPサーバー版は以下の形式でレスポンスを返します:
{
"success": true,
"data": {
"searchHits": 262,
"results": [
{
"resultId": 1,
"projectName": "第2069号小中学校児童生徒用机・いす",
"organizationName": "山梨県甲府市",
"cftIssueDate": "2025-11-07T00:00:00+09:00",
"category": "物品",
"procedureType": "一般競争入札",
...
}
]
}
}
エラーの場合:
{
"success": false,
"error": "エラーメッセージ"
}
注意事項
- このAPIは官公需情報ポータルサイトのAPIを使用しています
- 登録・認証は不要で誰でも利用可能です
- 利用規約を遵守してください
- APIのレスポンスはXML形式ですが、このMCPサーバーはJSON形式に変換して返します
参考資料
ライセンス
MIT
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。