Skip to main content

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 BGB wird 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:

  1. Immer Quelle/Fassung zitieren (Gesetzbuch + §/Art. bzw. Gericht + Az./ECLI, plus quelle.url).
  2. Keine Rechtsberatung – bei rechtlich relevanten Fragen auf qualifizierte Beratung verweisen.
  3. 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ällt url auf die API-URL zurück.
    • Urteile → OpenLegalData-Entscheidungsseite (…/case/<slug>).
  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gesetze_mcp-0.1.1.tar.gz (204.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gesetze_mcp-0.1.1-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

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

Hashes for gesetze_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4a9dace56e2f5e324bc70930b429eab1a0e779e111c0ecbbf20d9bf12e38b44a
MD5 82fe452350f3f8db0126c437d22fd54e
BLAKE2b-256 a7c3bf82882fbf4f46b9016b732f8e1fbfd2010686f52eceb9ea0a38bb4eb742

See more details on using hashes here.

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

Hashes for gesetze_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 546a12156ba4908e5d5acc643a00320e1b5e470024116f1e4ea569be74a0eb1e
MD5 d7648b5662ff99d32c792da31231cdf1
BLAKE2b-256 2beddda9580df7103c74a910bdf52f1ead7db3fcce4e8e9c76bd60312def2f8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page