MCP-Server für deutsche Gesetze & Rechtsprechung über die OpenLegalData-API (German statutes & case law for AI agents).
Project description
gesetze-mcp
MCP-Server für deutsche Gesetze & Rechtsprechung – ein FastMCP-Server, der die offene OpenLegalData-API kapselt und KI-Agenten Zugriff auf Gesetzestexte (BGB, StGB, GG …) und Gerichtsentscheidungen gibt.
Gebaut für die Anbindung an LangChain-basierte, modell-agnostische KI-Plattformen über stdio.
⚠️ Keine Rechtsberatung. Dieser Server liefert Informationen aus OpenLegalData. KI-Antworten können fehlerhaft sein. Jede inhaltliche Aussage enthält eine Quelle (verifizierbare URL + Fundstelle) und einen rechtlichen Hinweis – bitte stets den Originaltext und dessen Fassung prüfen.
Highlights
- 11 Tools, 1 Resource (+ Template), 2 Prompts – kuratiert, mit deutschen Beschreibungen.
- Structured Output (Pydantic): jede Antwort ist typisiert und enthält ein
quelle-Objekt. - Verifizierbarkeit & Sicherheit: kanonische Quell-URLs, Aktualitäts-Warnungen, Disclaimer auf
mehreren Ebenen (Server-
instructions,rechtlicher_hinweis-Feld, Prompts). - Robuste Norm-Auflösung:
§ 823 BGBwird zuverlässig auf die neueste Fassung aufgelöst – inklusive lokaler Titel-/Paragraphensuche, die den (lückenhaften) Volltext-Index kompensiert. - Read-only, alle Tools mit
readOnlyHint/idempotentHint/openWorldHint.
Tools
| Tool | Zweck |
|---|---|
gesetzbuecher_auflisten |
Verfügbare Gesetzbücher finden (Code/Titel, neueste Fassung). |
gesetzbuch_details |
Alle Fassungen/Revisionen eines Gesetzbuchs. |
gesetz_lesen |
Volltext einer Norm – per law_id oder gesetzbuch_code + section. |
normen_auflisten |
Normen eines Buches durchblättern/lokal nach Titel filtern. |
gesetz_volltextsuche |
Volltextsuche über Normtexte (Elasticsearch). |
gesetz_querverweise |
Verweise einer Norm (ausgehend / zitiert von Urteilen / von Normen). |
urteil_volltextsuche |
Volltextsuche über Gerichtsentscheidungen. |
urteile_auflisten |
Urteile nach Metadaten filtern (Gericht, Az., ECLI, Datum). |
urteil_lesen |
Volltext einer Entscheidung. |
urteil_querverweise |
Von einem Urteil zitierte Normen/Urteile (und umgekehrt). |
zitat_pruefen |
Zitat validieren/auflösen (§ 823 BGB, Aktenzeichen, ECLI). |
Resources: gesetzbuch://katalog (Katalog), gesetz://{gesetzbuch_code}/{section} (z. B. gesetz://BGB/823).
Prompts: norm_recherche, gesetz_erklaeren (mit eingebauten Quellen-/Disclaimer-Leitlinien).
Installation
Der Server läuft am einfachsten via uv ohne Vorinstallation:
uvx gesetze-mcp
Oder klassisch:
pip install gesetze-mcp
gesetze-mcp # startet den stdio-Server
Konfiguration (Umgebungsvariablen)
| Variable | Default | Zweck |
|---|---|---|
OPENLEGALDATA_API_KEY |
– (optional) | API-Token. Lesezugriffe sind öffentlich – der Key ist nur für höhere Rate-Limits/Schreibzugriffe nötig. |
OPENLEGALDATA_BASE_URL |
https://de.openlegaldata.io |
Basis-URL der API. |
OPENLEGALDATA_TIMEOUT |
30 |
HTTP-Timeout (Sekunden). |
OPENLEGALDATA_AUTH_SCHEME |
Token |
Präfix des Authorization-Headers (z. B. Token oder Bearer). |
Anbindung an eine KI-Plattform (stdio)
Die Plattform startet den Server als Subprozess und reicht den Key per ENV durch:
{
"mcpServers": {
"gesetze": {
"command": "uvx",
"args": ["gesetze-mcp"],
"env": { "OPENLEGALDATA_API_KEY": "<dein-key>" }
}
}
}
LangChain / LangGraph
Mit langchain-mcp-adapters werden die
Tools modell-agnostisch in einen Agenten geladen:
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient(
{
"gesetze": {
"command": "uvx",
"args": ["gesetze-mcp"],
"transport": "stdio",
"env": {"OPENLEGALDATA_API_KEY": "<dein-key>"},
}
}
)
tools = await client.get_tools()
# tools -> an dein LangChain/LangGraph-Agenten-Setup übergeben
Empfohlene System-Prompt-Leitlinien für den Agenten
Der Server liefert diese Regeln zwar bereits maschinenlesbar über seine instructions, ergänze sie
aber im Agenten-System-Prompt:
- Immer Quelle/Fassung zitieren (Gesetzbuch + §/Art. bzw. Gericht + Az./ECLI, plus
quelle.url). - Keine Rechtsberatung – bei rechtlich relevanten Fragen auf qualifizierte Beratung verweisen.
- Nicht halluzinieren – wenn ein Tool nichts findet, das offen sagen und Suche/Originaltext anbieten.
Quellen & Verifizierbarkeit
Jede inhaltliche Antwort enthält ein quelle-Objekt mit zwei Links und allen Identifikatoren
(Gesetzbuch-Code, §/Art., Fassung; Gericht, Aktenzeichen, ECLI, Datum):
url— die lesbare Fundstelle zum Anklicken:- Gesetze → amtliche Fassung bei gesetze-im-internet.de
(Bundesrecht, z. B.
…/bgb/__823.html). Für nicht abbildbares Recht (Landes-/EU-Recht) fällturlauf die API-URL zurück. - Urteile → OpenLegalData-Entscheidungsseite (
…/case/<slug>).
- Gesetze → amtliche Fassung bei gesetze-im-internet.de
(Bundesrecht, z. B.
api_url— die maschinenlesbare OpenLegalData-API-URL (…/api/laws/<id>/bzw.…/api/cases/<id>/); das ist die Quelle der angezeigten Daten und dient der Verifikation.
Entwicklung
uv sync # Umgebung einrichten
uv run python -m pytest # Tests (Live-Tests werden übersprungen)
RUN_LIVE=1 uv run python -m pytest -m live # Tests gegen die echte API
uv run python -m ruff check . && uv run python -m ruff format --check .
uv run python -m mypy src
Datenquelle & Lizenz
Daten von OpenLegalData (Open Data). Code unter MIT-Lizenz
(siehe LICENSE). Dieses Projekt steht in keiner offiziellen Verbindung zu OpenLegalData.
English summary
gesetze-mcp is a FastMCP server wrapping the OpenLegalData API so AI
agents can query German statutes (BGB, StGB, GG …) and court decisions. It exposes 11 curated
tools, a catalog resource + a norm template, and two research prompts. Tool descriptions are in
German. Every result carries a verifiable quelle (source URL + identifiers) and a legal disclaimer
(this is not legal advice). Read access is public; an OPENLEGALDATA_API_KEY is optional. Run via
uvx gesetze-mcp over stdio and connect it to any LangChain/MCP-compatible, model-agnostic platform.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gesetze_mcp-0.1.1.tar.gz.
File metadata
- Download URL: gesetze_mcp-0.1.1.tar.gz
- Upload date:
- Size: 204.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a9dace56e2f5e324bc70930b429eab1a0e779e111c0ecbbf20d9bf12e38b44a
|
|
| MD5 |
82fe452350f3f8db0126c437d22fd54e
|
|
| BLAKE2b-256 |
a7c3bf82882fbf4f46b9016b732f8e1fbfd2010686f52eceb9ea0a38bb4eb742
|
File details
Details for the file gesetze_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: gesetze_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
546a12156ba4908e5d5acc643a00320e1b5e470024116f1e4ea569be74a0eb1e
|
|
| MD5 |
d7648b5662ff99d32c792da31231cdf1
|
|
| BLAKE2b-256 |
2beddda9580df7103c74a910bdf52f1ead7db3fcce4e8e9c76bd60312def2f8e
|