gesetze-mcp
MCP-Server für deutsches (und optional österreichisches) Recht – ein FastMCP-Server, der KI-Agenten Zugriff auf Gesetzestexte (BGB, StGB, GG …), Gerichtsentscheidungen und einen kuratierten Einstieg nach Rechtsgebieten gibt.
Quellen: OpenLegalData (Kern), das amtliche gesetze-im-internet.de (Fallback für Normtexte), das Rechtsinformationsportal des Bundes (Zweitquelle für Suche und Rechtsprechung) und – nur bei aktiviertem Österreich – das RIS. Alle Quellen sind öffentlich; kein API-Key nötig.
Gebaut für die Anbindung an LangChain-basierte, modell-agnostische KI-Plattformen über stdio.
⚠️ Keine Rechtsberatung. Dieser Server liefert Informationen aus öffentlichen Rechtsquellen. 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
- 12 Tools (+ 5 für Österreich), 1 Resource (+ Template), 2 Prompts – kuratiert, mit deutschen Beschreibungen.
- Rechtsgebiets-Karte: „Was gilt zum Mietrecht in Bayern?" → einschlägige Gesetze mit Normbereichen, Suchbegriffe, Landesrecht-Hinweise und konkrete nächste Tool-Aufrufe – ohne Netz.
- Föderierte Volltextsuche: OpenLegalData + Rechtsinformationsportal des Bundes parallel, dedupliziert; fällt eine Quelle aus, liefert die andere weiter.
- Amtlicher Fallback: kennt OpenLegalData eine Norm nicht, kommt der Text direkt von gesetze-im-internet.de.
- Structured Output (Pydantic): jede Antwort ist typisiert und enthält ein
quelle-Objekt mitland(DE/AT), URL, Identifikatoren und Fassung. - Österreich als Opt-in:
at_*-Tools existieren nur, wennATaktiviert ist – deutsche Kunden können nie versehentlich österreichisches Recht bekommen. - Read-only, alle Tools mit
readOnlyHint/idempotentHint.
Tools
Deutschland (immer aktiv)
| Tool | Zweck |
|---|---|
rechtsgebiet_ueberblick |
Einstieg für Überblicksfragen: Gesetze, Normbereiche, Suchbegriffe, Landesrecht-Hinweise (Portal + Normnamen), nächste Schritte. |
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; Fallback gesetze-im-internet.de. |
normen_auflisten |
Normen eines Buches durchblättern/lokal nach Titel filtern. |
gesetz_volltextsuche |
Volltextsuche über Normtexte (OpenLegalData + Rechtsinformationsportal); bei wenigen Treffern Rechtsgebiets-Hinweis. |
gesetz_querverweise |
Verweise einer Norm (ausgehend / zitiert von Urteilen / von Normen). |
urteil_volltextsuche |
Volltextsuche über Gerichtsentscheidungen (OpenLegalData + Rechtsinformationsportal mit Leitsatz-Snippets). |
urteile_auflisten |
Urteile nach Metadaten filtern (Gericht, Az., ECLI, Datum). |
urteil_lesen |
Volltext einer Entscheidung – per case_id (OpenLegalData) oder dokumentnummer (Rechtsinformationsportal). |
urteil_querverweise |
Von einem Urteil zitierte Normen/Urteile (und umgekehrt). |
zitat_pruefen |
Zitat validieren/auflösen (§ 823 BGB, Aktenzeichen, ECLI). |
Österreich (nur mit GESETZE_MCP_LAENDER=DE,AT)
| Tool | Zweck |
|---|---|
at_gesetz_lesen |
Geltende Fassung eines Paragraphen (Kürzel wie EStG, UStG, BAO, ABGB, MRG); mit bundesland Landesrecht. |
at_normen_auflisten |
Paragraphen eines Gesetzes (100 je Seite). |
at_gesetz_volltextsuche |
Volltextsuche im geltenden Bundes-/Landesrecht. |
at_urteil_volltextsuche |
Judikatur (Justiz/VwGH/VfGH/BVwG/LVwG), neueste zuerst; Steuersachen: gericht="Vwgh". |
at_urteil_lesen |
Rechtssatz oder Entscheidungstext per RIS-Dokumentnummer. |
Resources: gesetzbuch://katalog (Katalog), gesetz://{gesetzbuch_code}/{section} (z. B. gesetz://BGB/823).
Prompts: norm_recherche, gesetz_erklaeren (mit eingebauten Quellen-/Disclaimer-Leitlinien).
Was nicht abgedeckt ist
- Deutsches Landesrecht (Bauordnungen, Schul-, Polizei-, Nachbarrecht) liegt in keiner der
Quellen.
rechtsgebiet_ueberblicknennt das amtliche Landesportal und die einschlägigen Landesnormen; der Agent sagt das offen und verweist auf das Portal. - EU-Recht (DSGVO, KI-Verordnung …) – über EUR-Lex prüfen; in der Karte als Hinweis hinterlegt.
- Österreich: Entscheidungen des Bundesfinanzgerichts und BMF-Richtlinien liegen in der Findok, nicht im RIS; Kollektivverträge sind keine Gesetze.
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)
Alle Variablen sind optional; ohne Konfiguration läuft der Server für Deutschland.
| Variable | Default | Zweck |
|---|---|---|
GESETZE_MCP_LAENDER |
DE |
Aktive Rechtsordnungen: DE, DE,AT oder AT. Nur mit AT existieren die at_*-Tools. |
GESETZE_MCP_STANDARD_LAND |
erstes Element | Rechtsordnung für unspezifische Fragen (wird dem Modell in den instructions genannt). |
GESETZE_MCP_RI_AKTIV |
true |
Rechtsinformationsportal des Bundes als Zweitquelle. |
GESETZE_MCP_GII_AKTIV |
true |
gesetze-im-internet.de als amtlicher Fallback für gesetz_lesen. |
GESETZE_MCP_RI_BASE_URL |
https://testphase.rechtsinformationen.bund.de |
|
GESETZE_MCP_RIS_BASE_URL |
https://data.bka.gv.at/ris/api/v2.6 |
|
GESETZE_MCP_RIS_DOKUMENT_BASE_URL |
https://ogd.ris.bka.gv.at |
|
GESETZE_MCP_GII_BASE_URL |
https://www.gesetze-im-internet.de |
|
OPENLEGALDATA_API_KEY |
– (optional) | API-Token (kostenloser Account auf de.openlegaldata.io). Lesezugriffe sind öffentlich, aber ohne Key gilt ein anonymes Tageslimit je IP-Adresse – alle Nutzer hinter derselben IP teilen es, danach sperrt OLD bis zu ~23 Std. Für den produktiven Betrieb empfohlen. |
OPENLEGALDATA_BASE_URL |
https://de.openlegaldata.io |
Basis-URL der API. |
OPENLEGALDATA_TIMEOUT |
30 |
HTTP-Timeout (Sekunden), gilt für alle Quellen. |
OPENLEGALDATA_AUTH_SCHEME |
Token |
Präfix des Authorization-Headers. |
Ausgehende Hosts (für Firewalls/Egress-Filter): de.openlegaldata.io,
www.gesetze-im-internet.de, testphase.rechtsinformationen.bund.de; bei aktivem AT zusätzlich
data.bka.gv.at und ogd.ris.bka.gv.at.
Anbindung an eine KI-Plattform (stdio)
Die Plattform startet den Server als Subprozess und reicht Konfiguration per ENV durch:
{
"mcpServers": {
"gesetze": {
"command": "uvx",
"args": ["gesetze-mcp"],
"env": { "GESETZE_MCP_LAENDER": "DE" }
}
}
}
Für einen Kunden in Österreich: "GESETZE_MCP_LAENDER": "DE,AT" (beide Rechtsordnungen) oder
"AT". Der Server nennt dem Modell die Standard-Rechtsordnung und verbietet das Vermischen.
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": {"GESETZE_MCP_LAENDER": "DE"},
}
}
)
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 bereits maschinenlesbar über seine instructions, ergänze sie
aber im Agenten-System-Prompt:
- Überblicksfragen zuerst mit
rechtsgebiet_ueberblickbeantworten, dann Normen lesen. - 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 land, zwei Links und allen
Identifikatoren (Gesetzbuch-Code, §/Art., Fassung; Gericht, Aktenzeichen, ECLI, Datum):
url— die lesbare Fundstelle zum Anklicken:- Gesetze DE → amtliche Fassung bei gesetze-im-internet.de (z. B.
…/bgb/__823.html). - Urteile DE → OpenLegalData-Entscheidungsseite (
…/case/<slug>) bzw. HTML des Rechtsinformationsportals (…/v1/case-law/<nr>.html). - Österreich → RIS-Dokument (
https://ogd.ris.bka.gv.at/Dokumente/…).
- Gesetze DE → amtliche Fassung bei gesetze-im-internet.de (z. B.
api_url— die maschinenlesbare Quelle (OpenLegalData-API, Portal-JSON oder RIS-Gesamtvorschrift).
Rollout einer neuen Version
uvx gesetze-mcp ohne Versions-Pin lädt bei jedem Kaltstart die neueste stabile Version von PyPI –
eine Veröffentlichung ist damit sofort bei allen so eingebundenen Kunden live. Deshalb:
- Pre-Release veröffentlichen (
0.x.0rc1); uvx ignoriert Pre-Releases ohne expliziten Pin. - Auf einer Staging-Instanz mit
uvx gesetze-mcp==0.x.0rc1testen (DE und DE,AT). - Erst dann die stabile Version veröffentlichen.
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 # gegen die echten APIs (DE)
GESETZE_MCP_LAENDER=DE,AT RUN_LIVE=1 uv run python -m pytest -m live # inkl. Österreich
uv run ruff check . && uv run ruff format --check .
uv run python -m mypy src
Die Rechtsgebiets-Karte liegt in src/gesetze_mcp/rechtsgebiete.json und ist bewusst kuratiert:
Ergänzungen brauchen Slug, Land, Stichwörter, Gesetze mit Normbereich und Zweck sowie Suchbegriffe.
Datenquellen & Lizenz
Daten von OpenLegalData (Open Data), gesetze-im-internet.de
(Bundesministerium der Justiz), dem Rechtsinformationsportal des Bundes (Testphase) und dem RIS
(Bundeskanzleramt Österreich, OGD). Code unter MIT-Lizenz (siehe LICENSE). Dieses Projekt
steht in keiner offiziellen Verbindung zu einer dieser Stellen.
English summary
gesetze-mcp is a FastMCP server giving AI agents access to German statutes (BGB, StGB, GG …),
court decisions and a curated entry point by area of law (“What applies to tenancy law in
Bavaria?”). Sources: OpenLegalData (core), the official gesetze-im-internet.de (fallback for statute
text), the federal legal information portal (second source for search and case law) and, only when
enabled via GESETZE_MCP_LAENDER=DE,AT, the Austrian RIS with five dedicated at_* tools. All
sources are public; no API key is required. Every result carries a verifiable quelle (jurisdiction,
source URL, identifiers) and a legal disclaimer (this is not legal advice). Run via
uvx gesetze-mcp over stdio and connect it to any LangChain/MCP-compatible, model-agnostic platform.
Metadata
Release files for gesetze-mcp 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gesetze_mcp-0.2.2.tar.gz | 253.2 kB | Without provenance | Details for gesetze_mcp-0.2.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gesetze_mcp-0.2.2-py3-none-any.whl | Python 3 | none | any | Details for gesetze_mcp-0.2.2-py3-none-any.whl |
Total release size: 340.8 kB
Release files / gesetze_mcp-0.2.2.tar.gz
| Download URL | gesetze_mcp-0.2.2.tar.gz |
|---|---|
| Size | 253.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a77c5ae5a8d47505994861e8b3ad6309ef8eb6aa9d92d5bfe8d9b6ee250c114
|
|
BLAKE2b-256 checksum How to use checksums |
d12bc47948687c7e375dc892f7f3e922911135e67bc8c29e261c0e86a81d532a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / gesetze_mcp-0.2.2-py3-none-any.whl
| Download URL | gesetze_mcp-0.2.2-py3-none-any.whl |
|---|---|
| Size | 87.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
45398abe657ac972651e7a27cb2724e8f1271668d6d76330d43a4bfeb45e5dc5
|
|
BLAKE2b-256 checksum How to use checksums |
505a009bcf4353d82ae2994727a0698bec23896d825609822a0b5540cd8eed97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Security for gesetze-mcp 0.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.