Skip to main content

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 mit land (DE/AT), URL, Identifikatoren und Fassung.
  • Österreich als Opt-in: at_*-Tools existieren nur, wenn AT aktiviert 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_ueberblick nennt 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. Lesezugriffe sind öffentlich – der Key ist nur für höhere Rate-Limits nötig.
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:

  1. Überblicksfragen zuerst mit rechtsgebiet_ueberblick beantworten, dann Normen lesen.
  2. Immer Quelle/Fassung zitieren (Gesetzbuch + §/Art. bzw. Gericht + Az./ECLI, plus quelle.url).
  3. Keine Rechtsberatung – bei rechtlich relevanten Fragen auf qualifizierte Beratung verweisen.
  4. 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/…).
  • 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:

  1. Pre-Release veröffentlichen (0.x.0rc1); uvx ignoriert Pre-Releases ohne expliziten Pin.
  2. Auf einer Staging-Instanz mit uvx gesetze-mcp==0.x.0rc1 testen (DE und DE,AT).
  3. 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.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gesetze-mcp 0.2.1
File Size Uploaded Provenance Actions
gesetze_mcp-0.2.1.tar.gz 229.8 kB Without provenance Details for gesetze_mcp-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gesetze-mcp 0.2.1
File Interpreter ABI Platform Actions
gesetze_mcp-0.2.1-py3-none-any.whl Python 3 none any Details for gesetze_mcp-0.2.1-py3-none-any.whl

Total release size: 310.5 kB

Release files / gesetze_mcp-0.2.1.tar.gz

Download URL gesetze_mcp-0.2.1.tar.gz
Size 229.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9c144b0c699e1476c682f7f3e210634f8c848410c0061b2a7366e2e32deae4f0
BLAKE2b-256 checksum
How to use checksums
95da6aa9a4c103085d86867fb53f79109901fa77b46f5e4b11098abef1904dce
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.1-py3-none-any.whl

Download URL gesetze_mcp-0.2.1-py3-none-any.whl
Size 80.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a695ae23e77458f1ff20acee1cac3bf6c5382b13d05e726f68cfbe8d39e3dca9
BLAKE2b-256 checksum
How to use checksums
393d8eed9a7dedc35147886cc44de69c7856eaec4605ef593f697ebc8f833c53
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.1

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page