mcpField
P
Prozorro

Prozorro

ローカル
github.com法務・行政11 週間前に更新

Prozorro について

Prozorroは、ウクライナの公共調達データを分析するMCPサーバーとコマンドラインツールです。指定地域のデータをローカルDBに同期し、APIキーやLLM呼び出しなしで入札、供給業者、競合、計画、リスクを分析できます。

主な機能

  1. 01地域と期間を指定した公開データの同期
  2. 02入札と今後の調達計画の検索
  3. 03買い手、供給業者、競合の分析
  4. 04市場指標の算出とリスク兆候の検出
  5. 05MCPサーバーまたはコマンドラインでの利用

活用シーン

  1. 01地域別の募集中入札と期限の確認
  2. 02入札前に調達計画を調査
  3. 03供給業者の落札実績と競合記録の比較
  4. 04確認が必要な調達パターンの発見

MCP 対応

ローカルサーバーはstdioまたはストリーミングHTTPで、調達検索と分析のツールをMCPクライアントに公開します。大半のツールはローカルDBを読み取り、stdioサーバーではデータ同期と保存済み検索の管理もできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"kotiniiqq-prozorro": {
"command": "uvx",
"args": [
"prozorro-mcp"
]
}
}
}
起動コマンドuvx prozorro-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiprozorro-mcp0.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

prozorro-mcp

Prozorro(ウクライナの公共調達システム)のMCPサーバーおよびコマンドラインツールです。選択した地域の公式オープンデータをローカルに保存します。その後、AI アシスタント (Claude、Cursor、VS Code Copilot など)やCLI単独で、次のような質問ができます。

  • 「リヴィウ州で試薬の入札を募集中の案件はどれですか?締め切りはいつですか?」
  • 「来月、私の地域の病院は何を購入する予定ですか?まだ入札になっていない計画を表示してください。」
  • 「この地域で小麦粉の入札を最も多く落札しているのは誰ですか?1キログラムあたりの価格はいくらですか?」
  • 「通常、どの事業者(EDRPOU 12345678)と競合していますか?その事業者に対する勝率はどのくらいですか?」
  • 「この発注者に懸念事項はありますか?入札者が1社だけの案件や、特定の供給業者に支出の大半が集中している案件などです。」

すべての数値はデータからコードで算出し、アシスタントはテキストを作成するだけです。APIキーは不要です。Prozorro APIは公開されており、このツールからLLMが呼び出されることはありません。

prozorro-mcp の処理の流れ

開発者以外の方向けのウクライナ語のステップ別ガイド:docs/guide.uk.md。

Prozorro MCP server

1分で試す(同梱デモ、同期不要)

uv(または通常の pip install prozorro-mcp)が必要です。

uvx prozorro-mcp search --demo --query борошно --status any

デモには、リヴィウ州の1週間分(2026年10月5日〜12日)の実際のスナップショットが含まれています。入札案件は5,479件で、そのうち1,120件に公開入札があり、今後の計画は1,619件です。連絡担当者の情報は削除されています。

Claude Desktop:ワンクリック拡張機能

prozorro-mcp.mcpbをダウンロードして開くか、設定 → 拡張機能にドラッグしてください。Claude DesktopがPythonとパッケージを自動でインストールするため、ほかにインストールするものはなく、設定ファイルを編集する必要もありません。インストール画面で、対象の州(例:Львівська, Волинська)と過去のデータを取得する日数を入力してください。

地域データはバックグラウンドでダウンロードされます。最初のダウンロードが完了するまでは、Claudeはデータの準備ができていないことを伝え、進行状況を表示します。設定を空欄のままにすると、Claudeが対象の州とダウンロードする日数を尋ねます。起動するたびに、前回からの変更分が取得されます。後から地域を追加するには、Claudeに 「過去2週間分のヴォルィーニ州をダウンロードして」 と尋ねてください。

ほかのAIクライアントへの接続

サーバーはstdio経由でローカル実行します。使用するクライアントを選んでください。

Claude Code

claude mcp add prozorro -- uvx prozorro-mcp serve

拡張機能を使わないClaude Desktop:設定 → 開発者 → 設定を編集。ファイルはWindowsでは %APPDATA%\Claude\claude_desktop_config.json、macOSでは ~/Library/Application Support/Claude/claude_desktop_config.jsonです。

{
  "mcpServers": {
    "prozorro": {
      "command": "uvx",
      "args": ["prozorro-mcp", "serve"]
    }
  }
}

Cursor(~/.cursor/mcp.json)、Windsurf、Cline、その他のクライアント:Claude Desktopと同じmcpServersブロックを使用します。

VS Code(.vscode/mcp.json):

{
  "servers": {
    "prozorro": {
      "type": "stdio",
      "command": "uvx",
      "args": ["prozorro-mcp", "serve"]
    }
  }
}

まずデモで試すには、"serve"の後に"--demo"を追加してください。設定を編集した後は、クライアントを再起動してください。

ブラウザー版のChatGPTとclaude.aiは、HTTPS経由のリモートサーバーにのみ接続できます。HTTPモードを参照してください。

自分のデータを同期する

uvx prozorro-mcp sync --region Львівська --days 7
  • 地域は、どの表記でも使用できます:Львів、львовская、Lviv、Kyiv city、Київська。複数指定する場合は、--region を繰り返します。軍事部隊は法律により住所が非公開のため、入札には地域がありません。--region "без регіону" を指定して追加してください。
  • 初回同期では、変更フィードを新しい変更から順にさかのぼって取得するため、現在受付中の入札は最初の数分で取り込まれ、期間の開始位置で停止します。データ量の多い州では、1週間分のデータの取得に約20分かかります(Lvivの場合、入札約5,500件と同数の計画で、ディスク上では約350 MB)。ほとんどの時間は公開 API の応答待ちで、API には一度に5件のリクエストを送信し、再試行も行いながら、負荷をかけないようにアクセスします。対象のカテゴリーだけに絞るには、--cpv 33(または --cpv реактиви)を指定します。
  • 次回以降の実行(オプションなしの prozorro-mcp sync)では、前回の実行以降に変更されたデータだけを取得します。Ctrl+C で安全に中断できます。コマンドを再実行すると、中断したところから続行します。
  • サーバーからの同期:prozorro-mcp serve --sync-on-start を実行すると、クライアントの起動時にバックグラウンドで変更分を取得します(対象範囲を広げるには --region と --days を追加します)。初回同期の前は、データツールは州と期間をユーザーに確認するよう求める no_data を返します。同期中の結果には sync_in_progress が付与されます。
  • ステータス:prozorro-mcp status で同期済みの範囲を確認できます。データは ~/.prozorro-mcp/data.db に保存されます。保存先を変更するには PROZORRO_MCP_DB を設定します。

AI クライアントなしで使う

同じ数値をテーブル、CSV(キリル文字を保ったまま Excel で開けます)、または JSON で取得できます。uv tool install prozorro-mcp でコマンドを一度インストールしてから、次を実行します。

prozorro-mcp search --cpv реактиви --region Львівська            # open tenders, nearest deadline first
prozorro-mcp plans --query "лабораторні" --budget-min 100000    # upcoming purchases
prozorro-mcp flags --buyer 05498849                             # red flags for one buyer
prozorro-mcp watch add "реактиви Львів" --cpv 33696 --region Львівська
prozorro-mcp digest --since 24h --format csv --out digest.csv   # what is new for your saved searches

ガイドに従って Task Scheduler または cron で毎朝 sync と digest を実行すれば、ウェブサイトを開かずに新しい入札の一覧を毎日確認できます。

ツール

11個のツールは、ローカルデータベースの読み取りのみを行います。各ツールには readOnlyHint: true、destructiveHint: false、idempotentHint: true、openWorldHint: false が設定されています。さらに3個のツールはローカルの stdio サーバーでのみ使用でき、HTTP モードでは使用できません。それぞれの動作に応じてマークされています。sync_data はデータをダウンロードし(readOnlyHint: false、openWorldHint: true)、watch_add は検索を保存し、watch_remove は検索を削除します(destructiveHint: true)。サーバーは、ユーザーの同意を得てからダウンロードを開始するようアシスタントに求めます。

ツール返される内容
coverage同期済みの地域、期間、件数、最終同期日時。追加分を同期するコマンドも表示します
find_entity名前の一部から、買い手と供給業者の EDRPOU コードを検索します
search_tenders単語、CPV、地域、ステータス、金額、締切、公開日で入札を検索します
get_tender1件の入札の品目、ロット、すべての入札、落札者、直接リンク付きの書類を返します
market_overview件数と金額、競争率、平均入札者数、単価のばらつき、主な買い手と落札者を返します
supplier_profile落札実績、買い手、CPV、落札率、値引率の中央値を返します
buyer_profile購入品目、購入先、手続きの内訳、単独入札率を返します
competitors同じ入札に参加する事業者と、直接対決のスコアを返します
upcoming_plansまだ入札が行われていない年間計画の品目を返します
red_flags以下の4つの警告項目を、それぞれ根拠とリンク付きで返します
watch_digest保存済みの検索条件に一致する新しい入札を返します
sync_data地域またはより長い期間のデータのバックグラウンドダウンロードを開始します。進行状況は coverage で確認できます
watch_add、watch_removeチャットから watch_digest 用の検索を保存または削除します

別の州や過去の期間など、同期されていないデータが必要な質問では、その旨と正確な sync コマンドが結果に表示されます。「何も存在しない」ように見える空のリストは返しません。

数値の定義

  • 公開中の入札:ステータスが active.tendering または active.enquiries で、最終同期時点で締切を過ぎていないものです。Prozorroではステータスの変更が遅れることがあります。
  • 競争的な手続き:公開入札、基準額未満、価格提示、競争的対話、フレームワーク選定などの種類です。reporting(直接契約)と negotiation は競争的な手続きではありません。全リストは src/prozorro_mcp/models.py にあります。
  • 決定済み入札:有効な落札がある入札です。
  • 単価:落札額 ÷ 数量です。品目がちょうど1つの入札のみを対象に計算し、CPVコード全体と単位ごとに集計するため、キログラムとトンを比較することはありません。それ以外の入札は excluded としてカウントされます。
  • 落札率:落札した決定済み入札数 ÷ 応札した決定済み入札数です。応札内容はオークション後にのみ公開されます。
  • 割引率:(予定額 − 落札額)÷ 予定額です。ロットのない競争的な入札が対象です。
注意すべき兆候

フラグは詳しく確認する理由であり、不正行為の証拠ではありません。

フラグルール(デフォルト値はパラメーターです)
single_bidder応札者1社のみで終了した競争的な手続き
supplier_concentration少なくとも5件の落札があり、買い手の落札総額の50%超を1社の供給業者が獲得
price_above_median比較可能な入札(CPVと単位が同じもの)が少なくとも5件あり、単価が中央値を30%以上上回る
short_tender_period入札期間が7日未満(公開入札)、15日未満(EU)、3日未満(基準額未満、価格提示)。これは経験則であり、法的な適合性確認ではありません。戒厳令の規則は頻繁に変更されます

評価

キーやネットワークなしで実行でき、すべてコードで計算されます:prozorro-mcp eval --suite all。最新の結果はevals/RESULTS.mdにあります。

  • フラグ:中央値を上回る割合が29%と30%の場合や、金額がちょうど半分の場合など、閾値に近い陰性例を含む35件のラベル付きケースがあります。すべてのフラグで適合率と再現率は1.0です。
  • 地域とCPVの語句:94種類の表記のうち、98.9%を認識します。認識できなかった1件は結果に示されています。
  • 照合:分析結果の買い手別およびカテゴリー別の合計を、デモスナップショットの生JSONを独立して再集計した結果と照合します。集計は35件で、不一致は0件です。

HTTP モード

prozorro-mcp serve --http --host 127.0.0.1 --port 8000      # MCP endpoint: http://127.0.0.1:8000/mcp

同じツールをストリーミング可能なHTTP経由で提供します。ChatGPTまたはclaude.aiからアクセスするには、HTTPS対応のリバースプロキシ(Caddy、nginx)の背後に配置してください。バージョン1には認証機能がありません。データは公開されており、読み取り専用です。公開する前にプロキシでレート制限を設定してください。

制限事項

  • ローカルコピー:必要なデータを同期してください。ウクライナ全域の1か月分は公開APIへのリクエストが約10万件となるため、ローカルでの通常の利用を想定したものではありません。
  • 期間は最終更新を意味します:同期では、直近N日間に変更された入札を取得します。引き続き更新されている古い入札も含まれます。
  • 非公開の住所:軍事部隊の入札にはProzorro上で地域情報がありません(--region "без регіону"を参照)。
  • CPVの語句検索は公式のДК 021名称と照合します。語句の範囲が広すぎる場合は、コードの接頭辞を指定してください。ツールは使用したカテゴリーを表示します。

開発

python -m venv .venv && .venv/bin/pip install -e ".[dev]"    # Windows: .venv\Scripts\pip
pytest -q          # 228 tests, no network: recorded API responses and built tenders
ruff check .
python scripts/capture_fixtures.py    # refresh the recorded API responses
python scripts/build_demo.py          # rebuild the demo snapshot (live sync, about 20 minutes)
python scripts/build_mcpb.py          # the Claude Desktop extension (needs Node for the official packer)

コードは役割ごとに分かれています:api(フィードクライアント)→ sync → store(SQLite)→ analytics(すべての数値)→ server(MCP)と cli。normalizeは地域とCPVを処理します。

ロードマップ

  • v2:契約変更によって価格が上昇した契約を対象とするprice_raised_after_signingフラグ。契約変更の同期が必要です。
  • 今後:ChatGPTとclaude.ai向けのホスト型HTTPインスタンス、別サービスとしてのTelegramまたはメール通知、EDR登録簿に基づく企業所有者情報。
  • 予定なし:「落札の可能性」や「推奨入札」。事実を装った推測になってしまいます。

お問い合わせ

ご意見、アイデア、求人、カスタムプロジェクト(n8n、MCP、AI自動化):[email protected]。バグ報告や機能リクエストはIssuesで歓迎します。

データとクレジット

入札データと計画データは、公開されているProzorro APIから取得しています。ДК 021 (CPV)の名称と地域リストは、ProzorroUKR/standards(Apache-2.0)から取得しています。詳しくはNOTICEをご覧ください。

MIT License.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。