german-legal-engine
# German Legal Engine (GLE) ⚖️
> **Souveräne juristische Recherche-, Subsumtions- und Fristen-Engine für autonome KI-Agenten**
> *Souveräne Open-Source-Distribution von Agentiqa*
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io/)
[](https://github.com/rzgrw/german-legal-engine)
---
## 🎯 Vision und Zweck
Bestehende Legal-Tech-Suchwerkzeuge und MCP-Wrapper für deutsches Recht (wie z. B. `german-legal-mcp`) agieren primär als **unstrukturierte Text-Scraper**: Sie liefern unstrukturierte 40-seitige Urteilsprotokolle zurück, ohne ein Verständnis für **juristische Subsumtion**, **Beweislastverteilung** oder **prozessuale Fristenberechnung** mitzubringen.
Die **German Legal Engine (GLE)** wurde von praktizierenden Rechtsanwälten und KI-Systemarchitekten von Grund auf konzipiert, um KI-Agenten im deutschen Rechtsraum eine verlässliche Entscheidungs- und Recherchebasis (*Ground Truth*) bereitzustellen:
1. **Deterministischer Normenabruf (Gesetzeswahrheit):** Wortlautgetreuer Abruf von Bundesgesetzen (BGB, ZPO, KSchG, StGB, RVG, HGB, etc.) direkt über *gesetze-im-internet.de* ohne Halluzinationen.
2. **Strukturierte Subsumtions-Modelle (Tatbestands-Graphen):** Zerlegung von Gesetzesnormen in konkrete Tatbestandsmerkmale, Tatsachenanforderungen und gesetzliche Beweislastverteilung (Kläger versus Beklagter).
3. **Mathematische Fristen-Engine (§§ 187–193 BGB & ZPO):** Exakte Berechnung zivil- und arbeitsgerichtlicher Fristen (Ereignistag, Fristbeginn, Fristende) inklusive automatischer Verschiebung bei Wochenenden und Feiertagen aller 16 Bundesländer (*Feiertagsgesetze*).
4. **Authentische Rechtsprechung (RII-Integration):** Volltextsuche und zitiersichere Nachweise höchstrichterlicher Entscheidungen (BGH, BAG, BVerfG, BVerwG) mit gezielter Randnummern-Extraktion (`[Rn. X]`).
5. **Einhaltung anwaltlicher Schriftsatzstandards (Zero-Dashes & Urteilsstil):** Automatische Bereinigung störender Gedankenstriche (`—`, `–`) in prozessual saubere Zitiersyntax.
---
## 🏗️ Architekturübersicht
```text
german-legal-engine/
├── README.md # Vollständige Dokumentation in deutscher Sprache
├── AGENT_INSTRUCTIONS.md # Technisches Briefing & Entwicklungsleitfaden für KI-Agenten
├── pyproject.toml # Modernes Packaging via Hatchling / pip / uv
├── LICENSE # MIT-Lizenz
├── src/
│ └── german_legal_engine/
│ ├── __init__.py # Öffentliche API-Exporte
│ ├── client.py # Einheitliches Python-SDK (LegalEngine)
│ ├── server.py # FastMCP-Server (stdio und sse) für Claude Desktop, Cursor etc.
│ ├── norms.py # Autarker Normen-Parser für gesetze-im-internet.de
│ ├── case_law.py # Rechtsprechungs-Client für BGH, BAG, BVerfG (100% Python)
│ ├── bayern.py # Nativer Scraper für bayerische Gerichte (gesetze-bayern.de)
│ ├── subsumption.py # Subsumtions-Blueprints (Merkmale & Beweislast)
│ ├── deadlines.py # Exakte Fristenmathematik gem. §§ 187-193 BGB
│ ├── sanitizer.py # Zero-Dashes Bereinigung & BGH-Zitierweise
│ └── cli.py # Komfortables Terminal-Tool (gle)
├── tests/
│ ├── test_deadlines.py # BGB-Fristen- und Feiertagstests
│ ├── test_subsumption.py # Subsumtions- und Bereinigungstests
│ ├── test_case_law.py # Rechtsprechungs- und Bayern-Tests
│ └── test_norms.py # Gesetzesabruf- und Slug-Tests
└── examples/
├── 01_statutory_lookup.py # Gesetzesabruf in der Praxis
├── 02_case_law_research.py # Recherche von Leitentscheidungen
└── 03_procedural_deadline.py # Fristenberechnung mit Feiertagsprüfung
```
---
## 🚀 Schnellstart
### Installation
```bash
# Repository klonen und im Editable-Modus installieren
git clone https://github.com/rzgrw/german-legal-engine.git
cd german-legal-engine
pip install -e .
```
---
### 1. Terminal-Nutzung über die CLI (`gle`)
Das mitgelieferte CLI-Werkzeug `gle` ermöglicht die sofortige Abfrage direkt im Terminal:
```bash
# 1. Gesetzestext wortlautgetreu abrufen (z. B. § 823 BGB, § 81 AufenthG)
gle norm BGB 823
# 2. Rechtsprechung durchsuchen (Bundesgerichte + bayerische Gerichte)
gle search "Mietkaution Rückzahlung" --limit 3 --source ALL
# 3. Volltext einer Entscheidung abrufen
gle decision Y-300-Z-BECKRS-B-2021-N-30750
# 4. Prozessuale Notfrist berechnen (§§ 187-193 BGB)
# Kündigungszugang am 03.10.2026 + 1 Woche Frist in Bayern (BY):
# Fällt regulär auf Samstag, den 10.10. -> automatische Verschiebung auf Montag, den 12.10.2026!
gle deadline 2026-10-03 1 wochen --state BY
# 5. Tatbestandsmerkmale und Beweislast analysieren
gle subsume BGB 280
```
---
### 2. Einbindung als Python-SDK
```python
from datetime import date
from german_legal_engine import LegalEngine
# 1. Gesetzliche Norm abrufen
norm = LegalEngine.get_norm("BGB", "551")
print(norm["title"])
print(norm["content_clean"])
# 2. Frist berechnen (inklusive Feiertagsverschiebung)
frist = LegalEngine.compute_deadline(
ereignis_datum=date(2026, 10, 3),
dauer_wert=1,
dauer_einheit="wochen",
state="BY"
)
print(frist["citation"])
# Ausgabe: "Fristablauf am 12.10.2026 um 24:00 Uhr gem. §§ 187 Abs. 1, 188 Abs. 2, 193 BGB"
# 3. Präzedenzfälle recherchieren
urteil = LegalEngine.search_precedents("Kündigungsschutz Wartezeit", limit=2)
for u in urteil:
print(f"- {u['citation']}: {u['title']}")
```
---
### 3. Model Context Protocol (MCP) Konfiguration
Die Engine stellt einen standardkonformen MCP-Server bereit, der sich nahtlos in **Claude Desktop**, **Claude Code**, **Cursor**, **OpenCode** und **Hermes Agent** einklinkt.
#### Konfiguration in Claude Desktop (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"german-legal-engine": {
"command": "python3",
"args": ["-m", "german_legal_engine.server"]
}
}
}
```
#### Bereitgestellte MCP-Tools:
* `get_norm(law, section)`: Liefert den amtlichen Volltext der gesuchten Rechtsnorm (Bund und Länder).
* `search_precedents(query, limit, court, source)`: Durchsucht amtliche Entscheidungen von Bundesgerichten (BGH, BAG, BVerfG) und bayerischen Gerichten (gesetze-bayern.de).
* `get_decision(doc_id)`: Ruft die amtliche Volltext-Entscheidung mit Randnummern ab.
* `compute_deadline(ereignis_datum, dauer_wert, dauer_einheit, state)`: Mathematisch exakte Fristenberechnung gem. §§ 187-193 BGB mit Feiertagskontrolle aller 16 Bundesländer.
* `get_subsumption_blueprint(law, section)`: Liefert strukturierte Tatbestandsmerkmale mit zugehöriger Darlegungs- und Beweislast (Arbeitshilfe, kein amtlicher Text).
* `anonymize_text(text)`: Schwärzt sensible personenbezogene Daten (IBAN, E-Mail, Telefon, Anschriften) gem. Art. 5 DSGVO.
* `prepare_pleading_dossier(norms, query)`: Erzeugt einen fertigen, zitatgesicherten Rechercheblock für Klageschriften und Schriftsätze.
---
## ⚖️ Rechtlicher Rahmen & Compliance (§ 5 UrhG & DSGVO)
Die German Legal Engine wurde unter strikter Beachtung des deutschen Urheber- und Datenschutzrechts konzipiert. Ausführliche Leitlinien finden sich in [COMPLIANCE.md](COMPLIANCE.md):
1. **Amtliche Werke gem. § 5 Abs. 1 UrhG:** Die Engine ruft ausschließlich Gesetze, Verordnungen und gerichtliche Entscheidungen aus amtlichen Bundes- und Landesquellen ab. Diese genießen als amtliche Werke keinen urheberrechtlichen Schutz.
2. **Ausschluss privater Normen (§ 5 Abs. 3 UrhG):** Das Framework verzichtet bewusst auf die Einbindung privater DIN/ISO-Normen oder urheberrechtlich geschützter Fachliteratur.
3. **Schutz von Datenbankrechten (§§ 87a, 87b UrhG) & § 44b UrhG:** Kein massenhaftes systematisches Scraping oder unautorisiertes Spiegeln fremder Datenbanken. Die Abfragen erfolgen rein punktuell on-demand mit vollständiger Quellenintegrität und Zeitstempel (*Source Provenance*).
4. **Datenschutz durch lokale Ausführung (DSGVO):** Die Engine läuft als lokale Open-Source-Runtime on-premise auf dem Rechner des Nutzers. Es existiert kein zentraler Server, der Mandantendaten, IP-Adressen oder vertrauliche Suchanfragen speichert oder verarbeitet.
5. **Integrierte PII-Redaktion:** Schnelle Schwärzung von Mandanten- und Kontodaten über `anonymize_text` vor der Weitergabe an LLM-Schnittstellen.
---
## 🏛️ Qualitätssicherung & Tests
Das Testset prüft die exakte Einhaltung der gesetzlichen Fristenlogik und Bereinigungsregeln:
```bash
# Tests ausführen
python3 -m unittest discover tests
```
---
## 📄 Lizenz
Dieses Projekt steht unter der freien **MIT-Lizenz**.
Copyright (c) 2026 Agentiqa Core Team.
TDQS
Scored across 6 tools
search_precedents (case law search) and get_decision (full text by ID) are related but clearly distinct actions, and get_norm cleanly separates statutes from case law. get_subsumption_blueprint and prepare_pleading_dossier both support drafting and could be momentarily confused, but their descriptions differentiate blueprint retrieval from dossier preparation.
All six tools follow a consistent verb_noun snake_case pattern: search_precedents, get_decision, compute_deadline, get_subsumption_blueprint, prepare_pleading_dossier, get_norm. No mixing of conventions.
Six tools is well-scoped for a focused legal engine covering case law, statutes, deadlines, and drafting. Each tool earns its place, though the surface is somewhat lean for the breadth of the legal domain.
The set covers the core legal research and drafting lifecycle: finding precedents, retrieving decisions and norms, computing deadlines, and preparing pleadings. Minor gaps exist (e.g., no explicit citation formatting or update/versioning, appeal lifecycle), but the primary workflows are covered.