prawo-pl-mcp について
prawo-pl-mcp は、ポーランドおよび一部 EU の法律データコネクターを、少数の統一ツールにまとめる MCP サーバーです。複数のデータベースを横断して調べるユーザー向けに、パラメーターを統一し、コネクターを必要時に起動して長文書をページ分割します。
主な機能
- 01法律データソース横断検索
- 02ページ分割された文書取得
- 03ソース固有のネイティブツール呼び出し
- 04ソースと対応範囲の一覧
- 05コネクターパラメーターの統一
- 06初回利用時のコネクター起動
活用シーン
- 01ポーランドの判例や法令の検索
- 02企業登記や税務解釈の取得
- 03公共調達やデータ保護の決定確認
- 04一部 EU 法令や規則の検索
MCP 対応
MCP サーバーとして stdio 経由で独立したコネクターサーバーに MCP 呼び出しを中継し、必要に応じて起動します。統一された検索、文書、ソース一覧、対応範囲、ネイティブ呼び出しのツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
prawo-pl-mcp
ポーランドの法律データを扱う単一の MCP サーバーです。
判例法、法律、企業登記簿、税務裁定、公的調達、データ保護に関する決定に加え、EU の追加データも含む、10 個の独立したコネクターを5つのツールから利用できます。各コネクターは独自のリポジトリを持つ個別のパッケージのままで、このサーバーは必要に応じてコネクターを起動し、それぞれの規約の違いを吸収します。
「Prawo」はポーランド語で「法律」を意味します。この名前は、国別サーバーをその国の言語で命名するという yargi-mcp の方針にならっています。
アグリゲーターを採用する理由
コネクターはポーランドの法律データを幅広くカバーしていますが、データベースごとに個別の MCP サーバーとして利用する場合、最初の質問をする前に10個のインストールと10個の設定項目が必要です。yargi-mcp は、トルコの法律に対する解決策を示しました。16の機関を1つのサーバーにまとめています。prawo-pl-mcp もポーランドで同じことを実現します。
- ツールは42個ではなく5個です。
pl_list_sources、pl_search、pl_get_document、pl_call、pl_coverageを使います。ツールスキーマが少ないほど、LLM が作業を始める前に消費するコンテキストが少なくなります。 - 規約を統一しています。コネクターは個別に発展してきたため、あるものでは
dateFrom、別のものではdate_fromが使われ、リポジトリによってページ番号も0始まりまたは1始まりです。ここではpageは常に1始まりで、日付は常にdate_from/date_to(YYYY-MM-DD)です。内部で変換します。概念ごとに名前を1つに統一する方針は、アグリゲーター独自のツールにも適用されます。pageはpl_searchとpl_get_documentの両方でページを指定するパラメーターです(非推奨の別名page_numberも引き続き動作します)。また、pl_callではargumentsまたはその別名argsを指定します。 - ネイティブ名を一覧で確認できます。カタログの各エントリーには
native_paramsが含まれ、統一された各パラメーターがそのソースでどのネイティブパラメーターに対応するかを示します。そのため、コネクターを起動したり上流からのエラーを読んだりしなくても、article_number(eu-compliance)を確認できます。pl_callは、指定された名前をコネクター独自のスキーマと照合し、どの名前を意図していたのかを伝えます。 - 事前インストールは不要です。コネクターは
npx -y/uvxを介してサブプロセスとして実行され、特定のソースへの初回呼び出し時にダウンロードされ、その後は起動したままになります。起動できないソースがあっても、わかりやすいエラーが報告され、ほかのソースは引き続き動作します。 - ドキュメントはページ分割されます。判決文や法律の全文は、1ページあたり約5000文字の単位に分割されます(yargi-mcp の方式)。そのため、200ページの裁定でもコンテキストウィンドウを埋め尽くしません。サーバー側でページ分割するソース(
isap)では、pageがネイティブに渡され、pagination: "native"として報告されます。アグリゲーターは、すでに分割されたページを再分割せず、把握できないtotal_pagesを捏造することもありません。
対応範囲
| ソース ID | 内容 | 機関/データベース | コネクター | ランタイム |
|---|---|---|---|---|
saos | 判例法:一般裁判所、最高裁判所、憲法裁判所+判例引用情報 | SAOS | mcp-saos | npx |
nsa | 判例法:行政裁判所(NSA+16 WSA) | CBOSA | mcp-nsa | npx |
isap | 法令:Dziennik Ustaw+Monitor Polski、96,000件以上の法令 | Sejm ELI API | mcp-isap | npx |
krs | 会社登記:抄本、履歴、取締役会の構成 | KRS API (Ministry of Justice) | mcp-krs | npx |
eureka | 税務裁定:55万件以上の個別解釈 | EUREKA (Ministry of Finance) | mcp-eureka | npx |
kio | 公共調達:国家不服申立審査会の裁定 | orzeczenia.uzp.gov.pl | kio-orzeczenia-mcp | uvx |
uodo | GDPR の執行:ポーランドのデータ保護機関の決定、罰金、統計 | orzeczenia.uodo.gov.pl | uodo-orzeczenia-mcp | uvx |
eu-sparql | EU 法:CELEX による EUR-Lex、ECLI による CJEU、GDPRhub | Cellar SPARQL | mcp-eu-sparql | npx |
eu-compliance | 14 件の EU 規則をオフラインで利用(GDPR、AI Act、DORA、NIS2 など) | ローカル SQLite コーパス | mcp-eu-compliance | npx |
legalize | Git による法令管理:32 の法域、コミットごとにバージョン管理 | legalize-dev | legalize-mcp | uvx |
ポーランドのソースには group: pl、EU の追加ソースには group: eu のタグが付いています。pl_list_sources(group="pl") で絞り込めます。
ツール
| ツール | 機能 |
|---|---|
pl_list_sources | ソースのカタログ(サブプロセスは起動しません)。source_id を指定すると、コネクター 1 つ分のツールスキーマをリアルタイムで取得します。 |
pl_search | 正規化されたパラメーターで任意のソースを検索します。ソース固有のフィルターは extra で指定します。 |
pl_get_document | 識別子(判決 ID、ELI、KRS 番号、署名など)で文書全体をページネーション形式で取得します。 |
pl_call | 任意のコネクターのネイティブツールを呼び出します。判例引用情報、データ保護機関の統計、取締役会の構成、規則の比較などに対応します。 |
pl_coverage | このコネクターの対応範囲、各種別のデータ取得時期、そして明示的に非対応の範囲を宣言します。各ギャップには代替手段が示されています。 |
LLM がたどる一般的なフローは(サーバーの instructions に明記されています)、
pl_list_sources → pl_search → pl_get_document で、各コネクターが提供する
専門ツールには pl_call を使用します。
インストール
Python ≥ 3.11 と、使用するソースのランタイムが必要です。npx ソースには Node.js ≥ 18、
uvx ソースには uv が必要です。ランタイムが不足している場合、
該当するソースは source_unavailable を返し、ほかのソースは引き続き動作します。
Claude Code
claude mcp add pl-legal -- uvx prawo-pl-mcp
Claude Desktop/任意の MCP クライアント(stdio)
{
"mcpServers": {
"pl-legal": {
"command": "uvx",
"args": ["prawo-pl-mcp"]
}
}
}
リモート(Streamable HTTP)
uvicorn prawo_pl_mcp.asgi:app --host 0.0.0.0 --port 8000
デフォルトでは公開されています(公開、読み取り専用データ)。すべてのリクエストで
X-API-Key: <key> または Authorization: Bearer <key> を必須にするには、
PRAWO_PL_MCP_API_KEY を設定してください。
設定
| 環境変数 | デフォルト | 意味 |
|---|---|---|
PRAWO_PL_MCP_CMD_<ID> | - | ソースの起動コマンドを上書きします。たとえば、ローカルのチェックアウトでは PRAWO_PL_MCP_CMD_SAOS="node C:/dev/mcp-saos/dist/index.js" のように指定します。<ID> = ソース ID。大文字にし、- → _ にします。 |
PRAWO_PL_MCP_INIT_TIMEOUT | 180 | コネクターの初回起動に許可される秒数です(パッケージのダウンロードを含みます)。 |
PRAWO_PL_MCP_TIMEOUT | 90 | 起動後、ツール呼び出しごとに許可される秒数です。 |
PRAWO_PL_MCP_AUDIT_DIR | ~/.matematic/audit | JSONL 監査ログの出力先です。 |
PRAWO_PL_MCP_API_KEY | - | ASGI モードのみ:この API キーを必須にします(デュアルチャネル)。 |
アーキテクチャ
アグリゲーターは薄いプロキシです (ADR 0001)。コネクターはインポート、 同梱、フォークされません。アグリゲーターは他のクライアントと同様に、 stdio 経由でコネクターと MCP で通信します。このレイヤーは、ソースレジストリ (コネクターごとに 1 つの dataclass エントリー)、遅延サブプロセスプール、 パラメーター変換器、ページネーターで構成されています。ソースを追加するには、 レジストリーにエントリーを追加します。
LLM client ──MCP──▶ prawo-pl-mcp ──MCP/stdio──▶ npx @matematicsolutions/mcp-saos
│ ──MCP/stdio──▶ uvx kio-orzeczenia-mcp
│ ──MCP/stdio──▶ ... (spawned on first use)
└─ registry + param mapping + 5000-char pagination
すべての呼び出しは JSONL 監査ログに記録されます(タイムスタンプ、ツール、ソース、パラメーターのハッシュ、 レイテンシ。ドキュメントの内容は記録されません)。
開発
git clone https://github.com/matematicsolutions/prawo-pl-mcp && cd prawo-pl-mcp
uv sync --extra dev
uv run pytest # offline tests: registry, dispatch mapping, pagination, drift
uv run prawo-pl-mcp # stdio server
ライセンス
Apache-2.0。各コネクターには独自のライセンス(MIT または Apache-2.0)、 独自のレート制限、上流データベースに対する独自の利用規約があります。アグリゲーターは ページネーション以外のキャッシュや変換を行わないため、各コネクターの制約が そのまま適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。