procurement-notices-mcp
by koizumikento
README.md
# procurement-notices-mcp
官公需情報ポータルで、国や自治体などの入札公告を探せます。発注機関や期間で絞り込んで、原文リンクや公告本文の抜粋を確認できます。
[uv](https://docs.astral.sh/uv/) と Git が必要です。Python 3.12以上に対応しています。APIキーは不要です。
## MCPクライアントに登録する
### Codex
```sh
codex mcp add procurement-notices-mcp -- uvx --python 3.12 --from git+https://github.com/koizumikento/procurement-notices-mcp.git@main procurement-notices-mcp
codex mcp list
```
新しいセッションで `/mcp` を開いて接続を確認できます。デスクトップ版ではMCP設定画面で、下のJSON例と同じコマンド・引数を指定できます。
### Claude Desktop / Cursor
- Claude Desktop(Windows) `%APPDATA%/Claude/claude_desktop_config.json`
- Claude Desktop(macOS) `~/Library/Application Support/Claude/claude_desktop_config.json`
- Cursor `.cursor/mcp.json`(プロジェクト内)
設定ファイルの `mcpServers` に項目を追加して、クライアントを再起動してください。`uvx` が見つからない場合は実行ファイルの絶対パスを指定します。
```json
{
"mcpServers": {
"procurement-notices-mcp": {
"command": "uvx",
"args": [
"--python",
"3.12",
"--from",
"git+https://github.com/koizumikento/procurement-notices-mcp.git@main",
"procurement-notices-mcp"
]
}
}
}
```
> 防災に関する東京都の入札公告を探して、発注機関と原文を教えて。
## MCPツール
### `search_notices`
次の検索条件のうち、キーワード・件名・発注機関・都道府県のいずれか1つ以上を指定します。`limit` は返す件数で、1〜50件です(既定10件)。
| 引数 | 条件 |
| --- | --- |
| `query` / `project_name` / `organization_name` | キーワード / 件名 / 発注機関名 |
| `prefecture_code` | 2桁の都道府県コード。東京都は `"13"` |
| `category` | `1` 物品、`2` 工事、`3` 役務 |
| `procedure_type` | `1` 一般競争入札、`2` 簡易公募型競争入札、`3` 簡易公募型指名競争入札 |
| `qualification` | 入札資格の等級。例 `["A", "B"]` |
| `issue_period` / `tender_start_period` / `opening_period` / `delivery_deadline_period` | 公告日(不明なら取得日) / 入札開始日 / 開札日 / 納入期限日の期間 |
期間には単日 `2026-04-01`、両端を含む期間 `2026-04-01/2026-04-30`、開始日以降 `2026-04-01/`、終了日以前 `/2026-04-30` を指定できます。条件はポータル側で適用します。データが未整備の項目もあるため、日付や資格などの条件を追加すると、該当項目が空欄の公告が検索から外れる場合があります。
`include_details=true` にすると、1件ごとに公告本文の先頭2,000文字と、ポータルに収録された添付リンクを先頭10件まで返します。省略した場合は `body_truncated` または `attachments_truncated` が `true` になります。元の公告や添付ファイルは取得しません。
`published_at` はポータルの公告日で、公告日が分からない場合は取得日です。`collected_at` はポータルが取得した日時です。`tender_start_at` は入札開始日です。申請の締切や参加条件は公告原文で確認してください。
## CLIで使う
```sh
uvx --python 3.12 --from git+https://github.com/koizumikento/procurement-notices-mcp.git@main procurement-notices-mcp search-notices --query 防災 --prefecture-code 13 --limit 3
uvx --python 3.12 --from git+https://github.com/koizumikento/procurement-notices-mcp.git@main procurement-notices-mcp search-notices --organization-name 法務省 --issue-period 2026-04-01/2026-04-30 --procedure-type 1 --include-details --limit 3
```
結果は標準出力にUTF-8のJSONで返ります。
## Pythonから呼び出す
```sh
git clone https://github.com/koizumikento/procurement-notices-mcp.git
cd procurement-notices-mcp
uv sync --locked
```
```python
import asyncio
from procurement_notices_mcp import search_notices
print(asyncio.run(search_notices(
"防災", prefecture_code="13", issue_period="2026-04-01/", limit=3
)))
```
既にイベントループがある場合は関数を直接 `await` してください。
## 出典と利用条件
コードはMIT Licenseです。中小企業庁の官公需情報ポータルサイト検索APIを利用しています。[公式仕様](https://www.kkj.go.jp/doc/ja/api_guide.pdf)・[提供元と利用規約](https://www.kkj.go.jp/s/?tc=1)
## 開発
```sh
uv sync --locked
uv run ruff check .
uv run ty check
uv run pytest
uv build
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo recent community issues