mcpField
K
kio-orzeczenia-mcp

kio-orzeczenia-mcp

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

kio-orzeczenia-mcp について

kio-orzeczenia-mcpは、ポーランドの公共調達に関するKIO公開判例データベースを検索する概念実証のMCPサーバーです。法律調査向けに事件番号、URL、日付を含む引用情報を返します。データ取得には公式APIではなくサイトのHTMLを使います。

主な機能

  1. 01語句と日付によるKIO判決検索
  2. 02判決全文の取得
  3. 03PZP条文による判決検索
  4. 04PDFリンクと引用情報の取得
  5. 05コネクターの対応範囲と不足情報の提示

活用シーン

  1. 01公共調達の論点に関するKIO判決の調査
  2. 02指定したPZP条文を引用する判決の検索
  3. 03既知の判決について当事者と結果を確認

MCP 対応

KIO判決、最近の判決、PZP条文による検索、PDFリンク、対応範囲の情報を扱う6つのMCPツールを提供します。公開UZPデータベースからHTML経由で情報を取得します。

設定

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

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

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

パッケージ
pypikio-orzeczenia-mcp0.4.5

ツール

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

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

詳細

kio-orzeczenia-mcp

Urzad Zamowien Publicznych(公共調達局)の**Krajowa Izba Odwolawcza(KIO)(国家不服審査院)**の判例を扱う MCP サーバー(Model Context Protocol)です。公開データベース orzeczenia.uzp.gov.pl を利用します。

Claude/Cursor/VS Code の MCP エージェントが、検証可能な引用情報(署名+URL+日付)とともに KIO の裁定を利用できるようにします。

ステータス:POC v0.1.0 | ライセンス:Apache-2.0 | メンテナー:MateMatic

予備的な警告。 v0.1.0 コネクターは概念実証版です。公式の REST API は使用せず、HTML 経由で UZP の公開判例データベースからデータを取得します。法的免責事項の全文については、以下の「法的免責事項」セクションをご覧ください。本番環境にデプロイする前に、専用のスモークテストを実施し、UZP に通知する必要があります。


KIO とは

Krajowa Izba Odwolawcza(国家不服審査院)は、Urzad Zamowien Publicznych(公共調達局)に属する行政機関(準司法機関)です。KIO の委員は裁定にあたり独立しています(PZP 第471条)。KIO は、公共調達手続きにおける発注機関の決定に対する不服申し立てを審理します(2019年9月11日制定「公共調達法」)。UZP は、情報公開法に基づき KIO の裁定を公開しています。

KIO の裁定は、ポーランド共和国憲法第87条の意味における法源ではありません。公共調達を扱う法律事務所の実務で広く参照される資料です。

クイックスタート

# Clone and enter the directory
git clone https://github.com/matematicsolutions/kio-orzeczenia-mcp.git
cd kio-orzeczenia-mcp

# Virtualenv
python -m venv .venv
.\.venv\Scripts\Activate.ps1

# Install
pip install -e ".[dev]"

# Offline test (signature parser)
pytest tests/test_signature.py -v

# Smoke test (online - hits UZP, rate-limited 1 req/s)
pytest tests/test_smoke.py -v -m smoke

# Run the server (stdio)
python -m kio_orzeczenia_mcp.server

Claude Code への接続

~/.claude.json(またはプロジェクト内の .mcp.json)に追加します。

{
  "mcpServers": {
    "kio-orzeczenia": {
      "command": "python",
      "args": ["-m", "kio_orzeczenia_mcp.server"],
      "env": {
        "KIO_MCP_RATE_LIMIT": "1.0",
        "KIO_MCP_CACHE_DIR": "~/.matematic/cache/kio"
      }
    }
  }
}

Claude Code を再起動します。起動後、6つのツールが表示されます。

Smart App Control が有効な Windows 11 の場合

Smart App Control は署名のない実行ファイルをブロックします。これには uvx.exe、pip.exe と、インストール時に pip が作成する kio-orzeczenia-mcp.exe ランチャーが含まれます。python.org のインストーラーに含まれる python.exe と py.exe は Python Software Foundation の署名があるため、インタープリター経由でモジュールを実行できます。

python -m pip install kio-orzeczenia-mcp
python -m kio_orzeczenia_mcp

同じ理由で pip.exe もブロックされるため、pip install ではなく python -m pip でインストールしてください。python が PATH にない場合は、Windows ランチャー py -3 -m kio_orzeczenia_mcp を使用してください。

{ "mcpServers": { "kio-orzeczenia-mcp": { "command": "python", "args": ["-m", "kio_orzeczenia_mcp"] } } }

この回避策として Smart App Control を無効にしないでください。Windows を再インストールしない限り、再び有効にすることはできません。

6つの MCP ツール

1. kio_search(query: SearchQuery) -> SearchResult

KIO の判例を検索します。すべてのフィールドは省略可能です。

// Arguments:
{
  "phrase": "razaco niska cena",
  "signature": null,
  "date_from": "2024-01-01",
  "date_to": "2024-12-31",
  "pzp_article": "226",
  "subject_index": null,
  "inflection": true,
  "page": 1,
  "size": 20
}

{total, page, items: [OrzeczenieSummary]} を返します。

2. kio_get_orzeczenie(signature_or_id: str | int) -> Orzeczenie

個別の裁定の全文を取得します。

// Arguments:
"KIO 2924/21"   // string -> first search by signature to resolve internal_id (+1 req)
15903           // int -> directly GET /Home/Details/15903 + /Home/ContentHtml/15903

content_text、sentence、reasoning(パーサーが抽出できる場合)、pzp_articles、subject_index、doc_type、outcome、chamber_composition、parties を含む Orzeczenie 全体を返します。

issue_date は null の場合があります。UZP には、一部の古い記録に発行日がありません。プレースホルダーの日付で置き換えることはありません。

3. kio_recent(days: int = 30, limit: int = 20) -> list[OrzeczenieSummary]

過去 N 日間の最新の裁定を、日付の降順で返します。

// Arguments:
{ "days": 30, "limit": 20 }
4. kio_by_pzp_article(article: str, limit: int = 20) -> list[OrzeczenieSummary]

特定の PZP 条文を引用する裁定を返します。UZP サーバー側の Art フィルターを使用します。このフィルターは規定辞書に対して照合し、書式に依存します("art. 226 ust. 1 pkt 5" はヒットしますが、単なる "226" はヒットしません)。結果が空の場合、ツールは全文検索にフォールバックします。

// Arguments:
{ "article": "art. 226 ust. 1 pkt 5", "limit": 20 }
{ "article": "224 ust. 1", "limit": 50 }   // "art. " prefix added automatically
5. kio_get_pdf_url(signature_or_id: str | int) -> dict

PDF の URL を返します(UZP が Qt 4.8.7 を使用して .docx から変換したもの)。バイトデータは取得せず、リンクを返します。

// Returns:
{
  "pdf_url": "https://orzeczenia.uzp.gov.pl/Home/PdfContent/15903?Kind=KIO",
  "signature": "KIO 2924/21",
  "internal_id": 15903,
  "human_readable_citation": "Wyrok KIO z 2021-10-28, sygn. KIO 2924/21"
}

6. kio_coverage() -> Coverage

このコネクターが対象とする内容、その情報源、および対象外の内容を明示します。 各対象外項目には、固定の ID とフォールバックが設定されています。裁定が 「存在しない」とユーザーに伝える前に呼び出してください。存在しないのは判例ではなく、このコネクターの対象範囲かもしれません。

使用例 3 件(自然言語)

例 1:「過去 1 年間の異常に低い価格に関する KIO の裁定」

エージェントが kio_search を呼び出します。

{
  "phrase": "razaco niska cena",
  "date_from": "2025-05-20",
  "date_to": "2026-05-20",
  "inflection": true,
  "size": 50
}

結果:裁判所への提出書類にそのまま挿入できる human_readable_citation を含む、OrzeczenieSummary の一覧です。

例 2:「PZP 第 226 条第 1 項第 5 号を引用している KIO の裁定」

エージェントが kio_by_pzp_article を呼び出します。

{ "article": "226 ust. 1 pkt 5", "limit": 30 }
例 3:「KIO 2924/21 の裁定について、当事者は誰で、異議申し立ては認められたか」

エージェントが kio_get_orzeczenie を呼び出します。

"KIO 2924/21"

結果:parties、sentence、reasoning を含む完全な Orzeczenie です。


制限事項(POC)

  1. 署名から internal_id へのマッピングには検索が必要です - 署名でクエリすると、リクエストが 1 件追加されます
  2. サーバー側の PZP 条文フィルターは辞書ベースです - Art は UZP の条文辞書のエントリーと照合されるため、書式が重要です("art. 226 ust. 1 pkt 5"。"226" ではありません)。一致しない場合は、より広範で検証が必要なフレーズ検索にフォールバックします
  3. PDF は取得しません - UZP のページへのリンクのみです(製品上の判断)
  4. sentence/reasoning パーサーは簡易的です - POC では content_text をプレーンテキストとして返します。セクションへの分割は v1.0 で対応します
  5. レート制限は 1 req/s です - 大量の一覧は時間がかかる場合があります。裁定は変更されないため、7 日間のキャッシュでこれを軽減します
  6. UZP が 1 ページあたりに返す結果は常に 10 件です - size > 10 の場合、連続するページをクライアント側で結合します。ページが 1 つ増えるごとにリクエストも 1 件増えます
  7. スクレイピングであり、API ではありません - UZP は 2026 年 7 月に検索エンジンを再構築し、すべてのエンドポイントが移動しました(DISCOVERY.md を参照)。UZP 側の変更後は pytest -m smoke を実行してください。tests/test_parser_regression.py がオフラインでパーサーを保護します

キャッシュ

  • 裁定(変更なし):7 日間
  • 検索結果の一覧:6 時間
  • PZP 辞書(実装後):30 日間

キャッシュの場所:~/.matematic/cache/kio/(KIO_MCP_CACHE_DIR で設定可能)。

監査ログ

場所:~/.matematic/audit/kio-orzeczenia-mcp.jsonl

JSONL 形式(ツール呼び出しごとに 1 エントリー)。CONSTITUTION.md 第 3 条を参照してください。

記録されない内容:裁定の全文(content_text、reasoning)。署名とメタデータのみを記録します。

法的免責事項

データは、2001 年 9 月 6 日制定の公共情報へのアクセスに関する法律および 2019 年 9 月 11 日制定の公共調達法に基づいて公開されている、UZP の公開判例データベース(orzeczenia.uzp.gov.pl)から取得しています。

このコネクターは、以下のとおりです。

  • ソースデータを改変しません。
  • UZP が公開している内容を超えて、手続きの当事者を匿名解除しません。
  • 技術的な保護措置を回避しません。
  • User-Agent ヘッダー matematic-kio-mcp/{version} (+https://matematic.co) で自身を識別します。

リリース前のブロッカー。 GitHub でリポジトリを公開する前に、コネクターの開始について UZP([email protected])に通知する予定です。通知内容は User-Agent、クエリ制限、アクセスの性質です。ステータス:TODO。

UZP またはその他の関係者から異議があった場合の連絡先:[email protected]。

ライセンス

Apache-2.0。LICENSE を参照してください。

プロジェクト憲章

CONSTITUTION.md を参照してください。ガバナンス原則 4 項目(公開データ、レート制限、監査ログ、引用)が記載されています。

ポーランド法に関するその他のオープンコネクター

このリポジトリの対象範囲を補完する、MateMatic によるオープンソースコネクター:

  • mcp-saos - SAOS(最高裁判所、最高行政裁判所、通常裁判所)
  • mcp-eu-sparql - Cellar SPARQL 経由の EU 法
  • mcp-isap - 法律公報、Monitor Polski、各省庁の官報(Sejm ELI API)

法的情報源の外部カタログ:worldwidelaw/legal-sources(一括収集スクリプト、MIT)。

コメント

MCP は初めてですか?

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

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