legal-text-mcp-de について
legal-text-mcp-deは、ドイツ連邦・州およびEUの法令を、構造化メタデータと出典情報付きで提供します。法令を検索・取得するMCPクライアントや開発者向けで、法律文書を提供しますが、法的助言は行いません。
主な機能
- 01法令一覧と個別条文の取得
- 02法令検索と引用の解決
- 03読み取り専用 legal:// リソース
- 04出典URL、取得日時、ハッシュの記録
- 05HTTP APIとCLIの提供
活用シーン
- 01引用から条文を検索
- 02テーマや語句で法令を検索
- 03MCPクライアントに法令文書を読み込み
- 04出典情報とコーパス範囲の確認
MCP 対応
MCPクライアント向けにツール、読み取り専用の legal:// リソース、定義済みプロンプトを提供します。設定済みデータセットを使い、streamable HTTPに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx legal-text-mcp-deDATASET_PATHPath to a normalised corpus directory or a corpus archive (legal-texts-de-*.tar.zst). Defaults to the bundled fixture; production deployments should mount /data/corpus/latest.tar.zst.STRICT_DATASETSet to 'true' to refuse to start if the dataset cannot be loaded (recommended for hosted deployments).ANTHROPIC_API_KEYシークレットOptional. Required only for the smart `research_topic` tool which uses LLM-assisted synthesis. Without it, the tool degrades gracefully to a ranked-search fallback.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
legal-text-mcp-de
LLM エージェント向けの、引用に適したドイツ法令テキスト基盤です。 MCP、HTTP API、typer シェル CLI を通じて、連邦・州・EU の約 8 500 件の法律を提供します。すべて同じランタイム上で動作し、gesetze-im-internet.de および EUR-Lex / Cellar に由来する暗号学的な来歴情報を備えています。
これはローカルまたはサーバー側の基盤です。SaaS、課金、アカウント、テナントモデルはなく、法的助言も提供しません。ランタイムは、高速な CI で使用するコミット済みのフィクスチャパッケージか、Git の外部で構築した生成済みの本番コーパスパッケージのいずれかを読み込みます。ドイツ連邦法の公式テキストは gesetze-im-internet.de から、GDPR などの EU 法令は EUR-Lex / Cellar から取得します。
法的助言は提供しません。 このソフトウェアはテキストと構造化メタデータを返します。法律を解釈したり、法律について助言したり、法的結論を出したりすることはありません。メンテナーは、法的な意思決定の場面での使用について、一切の責任を負いません。
以前の内部ドキュメントは docs-legacy/summary.md にアーカイブされています。
ステータス
| ライフサイクル | 安定版 v2.1.3(typer-CLI マイナー版 v2.1.0 の最新パッチ)— MCP ネイティブのドメインサーバーと typer CLI |
| バージョニング | SemVer 2.0.0(安定性に関する契約は v1.0.0 から開始) |
| ライセンス | Apache License 2.0 — LICENSE と NOTICE を参照 |
| 上流 | floleuerer/deutsche-gesetze-mcp をベースにしています(MIT、維持) |
機能
- 法律の一覧表示、条文の取得、引用の解決、全文検索、ソースの来歴確認を行う MCP ツール。
- 同じランタイム上で動作する HTTP API(FastAPI)。構造化された
/health、/ready、/laws、/search、OpenAPI エンドポイントを備えています。 - 来歴を最優先する設計:すべての法律と条文に、ソース URL、取得日時、コンテンツハッシュ、通過したパーサーの経路が記録されます。
- 2 種類のコーパスモード:決定論的なテストと CI 向けのコミット済みフィクスチャパッケージ、または公式ソースからランタイムで構築する生成済みの本番パッケージ。
- 編集済みコンテンツの同梱なし:このリポジトリで提供するのはツールであり、法令テキストではありません。テキストはランタイムで公式ソースから読み込まれます。
インストール
明示的なデータセットを指定した pip または uvx
pip install legal-text-mcp-de==2.1.3
DATASET_PATH=/path/to/dataset legal-text-mcp-de serve
# Or:
DATASET_PATH=/path/to/dataset uvx legal-text-mcp-de==2.1.3 serve
- パッケージと標準 Docker イメージには、ランタイムのみが含まれます。
DATASET_PATHは、laws.json、norms.json、search-index.jsonを含む正規化済みデータセットディレクトリを指す必要があります。- 公開コーパスの OCI リファレンスと
-fullイメージは現在DENIEDを返します。検証済みの公開コーパスダウンロードはありません。 - CLI と HTTP ランタイムは、使用可能なデータセットを自動で準備しません。
.tar.zstバンドルは、ランタイムへの直接指定には対応していません。 - 連邦コーパスガイドに従って、公式ソースから登録済みの連邦法 9 件を構築してください。これには現在のソースチェックアウトが必要で、v2.1.3 より後に追加された修正が含まれます。
prepare_data.build_corpus --sources bundは実装されていません。そのアーカイブ出力は、配信用データセット形式とは別のものです。
データセットをマウントして Docker を使用する
docker run -p 8001:8001 \
-v /absolute/path/to/dataset:/data/legal-texts:ro \
ghcr.io/klein-business/legal-text-mcp-de:2.1.3 \
uv run --frozen --no-sync legal-text-mcp-de http
- 選択したランタイムバージョンと互換性のあるデータセットを使用してください。
/healthはプロセスを確認し、/readyは HTTP API がデータセットを提供できるかを確認します。- 新たに構築した連邦データについては、ガイドのソースイメージ構築手順に従ってください。
モード 5 — 公開ホストサービス
// claude_desktop_config.json
{
"mcpServers": {
"legal-de": {
"url": "https://mcp.klein.business/legal/de",
"transport": "streamable-http"
}
}
}
CLI
legal-text-mcp-de には、すべてのサブコマンドを備えた CLI が同梱されています。引数なしで実行すると --help が表示されます。よく使うコマンド:
legal-text-mcp-de serve # start the MCP server (replaces the v2.0 bare invocation)
legal-text-mcp-de http # start the FastAPI HTTP API
legal-text-mcp-de laws --query DSGVO # list laws
legal-text-mcp-de norm BGB "§ 433" # fetch a single norm
legal-text-mcp-de search Werbung # full-text search
legal-text-mcp-de corpus info # inspect locally cached bundle metadata
legal-text-mcp-de version # version + Python + platform
機械可読な出力を得るには、サブコマンドの前に --json または --output yaml を指定してください。data フィールドには HTTP レスポンスの形式でデータが含まれます。サブコマンドの全一覧は CLI リファレンス を参照してください。
v2.1.0 での破壊的変更: 引数なしで
legal-text-mcp-deを実行すると、--helpが表示されるようになりました。v2.0 の動作(MCP サーバーの起動)を維持するには、serveを追加してください。
クイックスタート
MCP クライアントの互換性
- テスト済みには、記録されたクライアントのバージョンとトランスポート、成功した
tools/list、および成功したツール呼び出しが1回必要です。 - 設定例だけではテストの証拠になりません。以下のクライアント実行は引き続き [UNVERIFIED] です。プロトコルレベルの CI では、デスクトップクライアントとの互換性は確認できません。
| クライアント | テスト状況 | stdio | streamable-HTTP | セットアップ/証拠の報告依頼 |
|---|---|---|---|---|
| Claude Desktop | 保留中 | [UNVERIFIED] | [UNVERIFIED] | クイックスタート |
| Cursor | 保留中 | [UNVERIFIED] | [UNVERIFIED] | クイックスタート |
| Continue | 保留中 | [UNVERIFIED] | [UNVERIFIED] | クライアントテストを報告 |
| Cline | 保留中 | [UNVERIFIED] | [UNVERIFIED] | クライアントテストを報告 |
| Zed | 保留中 | [UNVERIFIED] | [UNVERIFIED] | クライアントテストを報告 |
コミット済みのフィクスチャコーパスで MCP サーバーを実行する
uv sync --all-groups
DATASET_PATH=tests/fixtures/normalized \
STRICT_STARTUP=true \
uv run legal-text-mcp-de serve
デフォルトのトランスポートは、http://localhost:8001/mcp の
ストリーミング可能な HTTP です。CLI では stdio を利用できません。詳しくは
stdio トランスポートの状況を参照してください。
開発用ショートカット。
Justfileでは、一般的なuvの呼び出し(just install、just test、just lint、just run、just api、just docs)をラップしています。brew install justで インストールしてください。Justfile は任意です。CI ではuvを直接使用します。
HTTP API を実行する
v2.1 以降は、新しい CLI を使うのが最も簡単です。
DATASET_PATH=tests/fixtures/normalized \
STRICT_STARTUP=true \
uv run legal-text-mcp-de http
デフォルトのポートは 8001 です(settings.port/PORT 環境変数から取得)。変更するには
--port <N> を使用してください。
または、uvicorn から直接実行することもできます(同等の方法で、同じ FastAPI アプリを使用します)。
DATASET_PATH=tests/fixtures/normalized \
STRICT_STARTUP=true \
uv run uvicorn legal_text_mcp_de.http_api:app --host 127.0.0.1 --port 8001
HTTP レイヤーでは、多層防御として MAX_REQUEST_BODY_BYTES(デフォルトは 1048576、つまり 1 MiB)による
リクエスト本文サイズの上限を適用します。上限を超えるリクエストには 413 Payload Too Large が返されます。これに加えて、運用担当者がリバースプロキシ側でも
上限を適用することが想定されています。
Docker
Docker イメージには法令テキストデータが含まれていません。検証済みの
パッケージを /data/legal-texts にマウントしてください。
docker run --rm -p 8001:8001 \
-v /path/to/legal-text-package:/data/legal-texts:ro \
ghcr.io/klein-business/legal-text-mcp-de:2.1.3 serve
- 最小限の HTTP モード Compose の例については、
examples/docker-compose/http/を参照してください。 - コミット済みで CI テスト済みの本番スタック(Caddy の背後で動作する MCP + HTTP。Compose プロファイルで切り替え可能)については、
examples/docker-compose/production/を参照してください。
MCP リソース
v2.0 以降、コーパスは読み取り専用の legal:// URI として公開され、任意の MCP クライアントが LLM のコンテキストに直接読み込めます。例:
legal://laws— ページ分割されたインデックスlegal://laws/bgb— BGB のヘッダーと条文インデックスlegal://laws/bgb/norms/par:433— § 433 BGB の Markdownlegal://corpus/coverage— コーパスの収録内容
URI の一覧は docs/concepts/mcp-native.md を参照してください。
MCP プロンプト(スラッシュコマンド)
厳選された5つのワークフローが、MCP クライアントでスラッシュコマンドとして表示されます。
| スラッシュコマンド | 引数 | 目的 |
|---|---|---|
/rechtsfrage | frage、rechtsgebiet? | 正確な条文引用を付けて、ドイツ法に関する質問に回答します |
/zitation-checken | citation | 引用(例:§ 433 Abs. 1 BGB)と Stand-Datum を確認します |
/norm-erklaeren | code、norm | 相互参照を引用しながら、平易な言葉で説明します |
/recherche | topic | スマートツール research_topic を使って複数ステップの調査を行います |
/dsgvo-check | aktivitaet | 処理活動について、GDPR 第5条、第6条、第7条、第9条、第13条、第14条を順に確認します |
スマートツール
research_topic は、呼び出しごとに2回の LLM サンプリング呼び出しを実行する複数ステップの調査ツールです。
- 候補となる条文をコーパスから検索します
- LLM が関連性に基づいて候補を順位付けします
- 関連条文のグラフを読み込みます
- LLM が構造化された調査レポートを作成します
クライアントがサンプリングに対応していない場合、順位付けされた候補だけを含む簡易版レポートを返します。
データソース
| ソース | 対象範囲 | 再利用に関する位置付け |
|---|---|---|
gesetze-im-internet.de | ドイツ連邦法 | §5 (1) UrhG に基づき、パブリックドメイン相当 |
EUR-Lex / Cellar (publications.europa.eu) | EU 法令(GDPR、AI Act、Data Act、…) | 欧州委員会決定 2011/833/EU に基づき、出典を明記すれば再利用可能 |
これらのソースのテキストは、このリポジトリにコミットされていません。 生成コーパスのパイプラインがビルド時にデータを取得し、出典情報をマニフェストに保存します。
MCP ツール
機能の全容については、MCP ツールのリファレンスを参照してください。主な機能は次のとおりです。
list_laws(query?)— 読み込み済みの法律を、任意のメタデータフィルターを指定して一覧表示します。get_law(code)— 法律のメタデータと、正規化された条文の概要を返します。get_norm(code, norm)— 構造化された条文を 1 件返します。search_laws(query, codes?)— 正規化されたテキストを検索します。resolve_citation(...)— 法的解釈を行わず、構造化された引用を解決します。get_source_metadata(code?)、get_source_limitations(...)、get_corpus_coverage()、get_related_norms(code, norm)。
MCP ツールは JSON 互換のオブジェクトを返します。JSON 文字列を二重にシリアライズして返すことはありません。
HTTP API
| メソッド | パス | 用途 |
|---|---|---|
GET | /health | 稼働状況 |
GET | /ready | 準備状況 |
GET | /laws | 法律の一覧 |
GET | /laws/{code} | 法律の詳細 |
GET | /laws/{code}/norms/{norm} | 条文の詳細 |
GET | /laws/{code}/norms/{norm}/relationships | 関係メタデータ |
GET | /corpus/coverage | コーパスの対象範囲の概要 |
GET | /corpus/source-limitations | ソースの制限に関するクエリ |
GET | /search | 検索 |
GET | /openapi.json | OpenAPI ドキュメント |
条文と項を組み合わせたパスは、URL エンコードする必要があります。
/laws/egbgb/norms/art%3A246a%2Fpar%3A1
ドキュメント
ドキュメントの全文は klein-business.github.io/legal-text-mcp-deで公開されています。
クイックリンク:
信頼できる一次資料はリポジトリにあります:README.md、 CHANGELOG.md、SECURITY.md、 CONTRIBUTING.md、GOVERNANCE.md、 NOTICE、LICENSE。
開発
uv sync --all-groups
uv run --group dev pytest
フィクスチャに基づくリリースゲートの全体:
uv run --group dev python scripts/verify_release.py
公開切り替えの準備状況を確認するゲート:
uv run --group dev python scripts/verify_pre_flip.py
Justfile は、よく使うターゲット(just test、
just lint、just docs、just run、just api)をラップして、簡単に実行できるようにします。
コントリビューション
ガイドライン、行動規範、セキュリティポリシーについては、CONTRIBUTING.mdを参照してください。
すべてのコントリビューションは開発者原産地証明書に準拠する必要があります
(git commit -sで署名してください)。
検証
v1.0.0 以降のすべてのリリースには署名が付与され、SBOM と
SLSA-3 の来歴情報が含まれています。以下の例ではv2.1.3を使用しています。実際に取得したタグに置き換えてください。
Cosign イメージ署名
cosign verify ghcr.io/klein-business/legal-text-mcp-de:2.1.3 \
--certificate-identity-regexp 'https://github.com/klein-business/.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
SBOM および SLSA アテステーションの検証については、cosign による検証を参照してください。
ライセンスと謝辞
このプロジェクトはApache License 2.0のライセンスに基づいています。 必要な帰属表示については、NOTICEをご覧ください。
floleuerer/deutsche-gesetze-mcp から派生しています(Copyright (c) 2025 Florian Leuerer、MIT)。上流のライセンス条件は licenses/MIT-floleuerer.txtに保持されています。
MCP Registry:io.github.klein-business/legal-text-mcp-de ·
registry.modelcontextprotocol.io
mcp-name: io.github.klein-business/legal-text-mcp-de
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。