プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Prozorro

作者:kotiniiqqバージョン 0.1.1i★ –iパソコンで動く
レジストリ名io.github.kotiniiqq/prozorro-mcp

インストール

概要

作者による説明(英語の原文)

Ukrainian public procurement (Prozorro): open tenders, plans, competitors, red flags. No keys.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 法律・行政データ

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

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

ターミナルでこれを実行します

claude mcp add prozorro -- uvx prozorro-mcp serve

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

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

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

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

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月10日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント kotiniiqq で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

法律・行政データのほかのサーバーとの比較i

  • このカテゴリのほかの1773件のうち0%よりスターが多い
  • このカテゴリのほかの1773件のうち53%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1773件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Prozorroは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.1.1)がレジストリに届いたのは28 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:GetLawED — Verified South African Law, official.tokyo.jp, Lawstronaut

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

official.tokyo.jp

Human-verified guide to official procedures in Tokyo for foreign residents. Not a government site.

作者:dror-jpとても新しい↓ 6/週今日更新

パソコンで動く

Lawstronaut

Connect AI to millions of laws and court cases with the Lawstronaut MCP.

作者:Lawstronaut-FZCO初期今日更新

クラウドで動く✓ lawstronaut.com

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

prozorro-mcp

An MCP server and a command-line tool for Prozorro, Ukraine's public procurement system. It keeps a local copy of the official open data for the regions you choose. Then you can ask an AI assistant (Claude, Cursor, VS Code Copilot and others), or the CLI on its own, things like:

  • *"Which open tenders for laboratory reagents are in Lviv oblast, and when are the deadlines?"*
  • *"What will hospitals in my region buy next month? Show plans that are not tenders yet."*
  • *"Who wins most of the flour tenders here, and at what price per kilogram?"*
  • *"Who do we usually compete with (EDRPOU 12345678), and how often do we win against them?"*
  • *"Any red flags at this buyer: single bidders, one supplier taking most of the money?"*

Every number is computed by code from the data, and the assistant only writes the text. No API keys are needed: the Prozorro API is public, and nothing here calls an LLM.

Ukrainian step-by-step guide for non-developers: docs/guide.uk.md.

Try it in one minute (bundled demo, no sync)

You need uv (or plain pip install prozorro-mcp):

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

The demo is a real snapshot of Lviv oblast for one week (5–12 October 2026): 5,479 tenders, 1,120 of them with public bids, and 1,619 upcoming plans. Contact persons were removed.

Claude Desktop: one-click extension

Download prozorro-mcp.mcpb and open it (or drag it into Settings → Extensions). Claude Desktop installs Python and the package by itself, so there is nothing else to install and no config to edit. In the install dialog, type your oblasts (for example Львівська, Волинська) and the days of history.

Your regions download in the background; until the first download finishes, Claude says the data is not ready and shows the progress. If you leave the settings empty, Claude asks which oblast and how many days to download. Every start fetches what changed since the last one. To add a region later, ask Claude: *"download Volyn oblast for the last two weeks"*.

Connect it to other AI clients

The server runs locally over stdio. Pick your client:

Claude Code

claude mcp add prozorro -- uvx prozorro-mcp serve

Claude Desktop without the extension: Settings → Developer → Edit Config. The file is %APPDATA%\Claude\claude_desktop_config.json on Windows and ~/Library/Application Support/Claude/claude_desktop_config.json on macOS:

{

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

Cursor (~/.cursor/mcp.json) and Windsurf, Cline and other clients: the same mcpServers block as Claude Desktop.

VS Code (.vscode/mcp.json):

{

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

To try it on the demo first, add "--demo" after "serve". Restart the client after editing the config.

ChatGPT and claude.ai in the browser only connect to remote servers over HTTPS. See HTTP mode.

Sync your own data

uvx prozorro-mcp sync --region Львівська --days 7
  • Regions work in any spelling: Львів, львовская, Lviv, Kyiv city, Київська. Repeat --region for several. Military units hide their address by law, so their tenders have no region. Add them with --region "без регіону".
  • First sync walks the change feed backwards, newest change first, so tenders that are open right now arrive in the first minutes, and stops at the start of the period. A busy oblast takes about 20 minutes per week of data (Lviv: about 5,500 tenders and as many plans, roughly 350 MB on disk), mostly waiting on the public API, which is used politely with 5 requests at a time and retries. --cpv 33 (or --cpv реактиви) keeps only your categories.
  • Next runs (prozorro-mcp sync with no options) fetch only what changed since the last run. Ctrl+C is safe: run the command again and it continues from where it stopped.
  • From the server: prozorro-mcp serve --sync-on-start fetches what changed in the background when the client starts it (add --region and --days to widen the coverage). Before the first sync, the data tools return no_data with a request to ask the user for an oblast and a period; during a sync, results carry sync_in_progress.
  • Status: prozorro-mcp status shows what is covered. Data lives in ~/.prozorro-mcp/data.db; set PROZORRO_MCP_DB to move it.

Use it without an AI client

The same numbers, as a table, CSV (opens in Excel with Cyrillic intact) or JSON. Install the command once with uv tool install prozorro-mcp, and then:

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

Run sync and digest every morning with Task Scheduler or cron (the guide shows how), and you have a daily list of new tenders without opening any website.

Tools

Eleven tools only read the local database. Each one declares readOnlyHint: true, destructiveHint: false, idempotentHint: true and openWorldHint: false. Three more exist only in the local stdio server, not in HTTP mode, and are marked for what they do: sync_data downloads data (readOnlyHint: false, openWorldHint: true), watch_add saves a search and watch_remove deletes one (destructiveHint: true). The server asks the assistant to start a download only after the user agrees.

toolwhat it returns
coveragesynced regions, period, counts, last sync; the command to add more
find_entityEDRPOU codes of buyers and suppliers by part of a name
search_tenderstenders by words, CPV, region, status, amount, deadline, publication date
get_tenderone tender: items, lots, every bid, the winner, documents with direct links
market_overviewcount and value, competitive share, average bidders, unit-price spread, top buyers and winners
supplier_profilewins, buyers, CPVs, win rate, median discount
buyer_profilewhat it buys, from whom, procedure mix, single-bidder share
competitorswho bids in the same tenders and the head-to-head score
upcoming_plansannual-plan items with no tender yet
red_flagsthe four flags below, each with evidence and a link
watch_digestnew tenders for your saved searches
sync_datastarts a background download of regions or a longer period; coverage shows the progress
watch_add, watch_removesave or delete a search for watch_digest, right from the chat

When a question needs data that is not synced, for example another oblast or an older period, the result says so and gives the exact sync command. It does not return an empty list that looks like "nothing exists".

How the numbers are defined

  • Open tender: status active.tendering or active.enquiries, and the deadline has not passed as of the last sync. Prozorro sometimes changes the status late.
  • Competitive procedure: open, below-threshold, price quotation, competitive dialogue, framework selection and similar types. reporting (a direct contract) and negotiation are not competitive. The full list is in src/prozorro_mcp/models.py.
  • Decided tender: one that has an active award.
  • Unit price: award ÷ quantity. It is computed only for tenders with exactly one item, and grouped by the full CPV code and unit, so kilograms are never compared with tonnes. Other tenders are counted as excluded.
  • Win rate: decided tenders won ÷ decided tenders bid in. Bids become public only after the auction.
  • Discount: (expected value − award) ÷ expected value, for competitive tenders without lots.
Red flags

A flag is a reason to look closer, not proof of wrongdoing.

flagrule (defaults are parameters)
single_biddera competitive procedure that ended with one bidder
supplier_concentrationone supplier got more than 50% of a buyer's awarded money, with at least 5 awards
price_above_medianunit price at least 30% above the median of at least 5 comparable tenders (same CPV and unit)
short_tender_periodtendering shorter than 7 days (open), 15 (EU), 3 (below-threshold, price quotation). This is a heuristic, not a legal check: martial-law rules change often

Evals

They run without keys or network, all computed by code: prozorro-mcp eval --suite all. The latest results are in evals/RESULTS.md.

  • Flags: 35 labelled cases, including near-threshold negatives such as 29% vs 30% above the median or exactly half the money. Precision and recall are 1.0 for every flag.
  • Regions and CPV words: 94 spellings, 98.9% recognized. The one miss is shown in the results.
  • Reconcile: buyer and category totals from the analytics are checked against an independent recount over the raw JSON of the demo snapshot. 35 aggregates, 0 mismatches.

HTTP mode

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

The same tools are served over streamable HTTP. To reach it from ChatGPT or claude.ai, put it behind a reverse proxy with HTTPS (Caddy, nginx). Version 1 has no authentication: the data is public and read-only. Add rate limits at the proxy before exposing it.

Limits

  • Local copy: you sync what you need. All of Ukraine for a month is about 100k requests to the public API, and that is not the intended local use.
  • The period means last modification: a sync covers tenders changed in the last N days. Old tenders that are still being updated come along.
  • Hidden addresses: tenders of military units have no region in Prozorro (see --region "без регіону").
  • CPV by words matches the official ДК 021 names. When the words are too broad, pass a code prefix. Tools echo the categories they used.

Development

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)

The code is split by job: api (feed client) → sync → store (SQLite) → analytics (every number) → server (MCP) and cli. normalize handles regions and CPV.

Roadmap

  • v2: a price_raised_after_signing flag, for contracts whose price grew through amendments. This needs a sync of contract changes.
  • Later: a hosted HTTP instance for ChatGPT and claude.ai; Telegram or e-mail alerts as a separate service; owners of companies from the EDR register.
  • Not planned: a "chance to win" or "recommended bid". It would be a gu

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く