entscheidsuche-mcp
MCP-Server für die offene Schweizer Rechtsprechung (Beta) —
Volltextsuche und Volltextzugriff auf publizierte Gerichtsentscheide
aller Schweizer Instanzen (Bundesgerichte, kantonale Gerichte,
Verwaltungsbehörden, Strafbefehle) in Deutsch, Französisch und
Italienisch — über das Model Context Protocol.
MCP Server for Swiss case law (beta). Search and retrieve published
court decisions from all Swiss instances (federal courts, all 26 cantons,
administrative authorities, penal orders) in German, French, and Italian.
Operated as open Swiss legal data infrastructure by the non-profit
association entscheidsuche.ch, tax-exempt
in Switzerland since 2020.
Öffentlicher Endpunkt: https://mcp.entscheidsuche.ch/mcp
(Streamable HTTP, ohne Authentifizierung)
Landing Page für Endnutzer: mcp.entscheidsuche.ch —
dort steht alles Nötige zur Einrichtung in Claude.ai, ChatGPT, Cursor,
VS Code, Claude Desktop und anderen Clients. Dieses Repository richtet
sich primär an Entwickler, Drittanwendungen und Selbst-Betreiber.
[Lizenz Code]
[Daten]
[Status]
[Betrieb]
Inhalt
Über den MCP-Server
Schweizer Gerichtsentscheide sind formal öffentlich, faktisch aber über
mehr als 26 kantonale Portale, mehrere Bundesgerichte und unterschiedlich
strukturierte Veröffentlichungsformate verteilt. Der Verein
entscheidsuche.ch sammelt diese Entscheide seit 2017 ein, indexiert
sie volltextlich und macht sie zugänglich. Eine Lizenz gibt es nicht, da
Gerichtsentscheide nicht dem Urheberrecht unterstehen. Dieser
MCP-Server bringt diesen Bestand zu KI-Assistenten und programmatischen
Clients.
Was den Server unterscheidet
- Betrieben vom gemeinnützigen Verein entscheidsuche.ch (gegründet
2017 in Landquart GR, seit 2020 in Bern als gemeinnütziger Zweck
steuerbefreit) — kollektiv getragene Schweizer Rechtsdaten-Infrastruktur,
kein Bastelprojekt
- Eigener Datenbestand: tägliche Scrapes direkt aus den
Originalquellen aller Schweizer Gerichte. Enthält auch Entscheide,
die von Behörden nicht oder nicht in geeigneter Form publiziert
werden und über die Upload-Funktion (seit 2021) eingereicht wurden,
darunter Strafbefehle
- Drei Amtssprachen (DE / FR / IT) mit gezieltem Sprachfilter und
sprachübergreifender Suche
- Offen — keine Authentifizierung, kein API-Key, lizenzfrei
Tools
Vollständige Schnittstellenbeschreibung mit allen Parametern, Filtern,
Rückgabe-Schemata und Beispielen: docs/API.md.
Suchsyntax — Cheatsheet
Standardverknüpfung zwischen Wörtern ist AND. Gesucht wird in
title, abstract, meta, attachment.content und reference.
language und sort sind optional. Ohne language erfolgt keine
Spracheinschränkung — der Server liefert das erste vorhandene
Sprachfeld zurück (de → fr → it). Ohne sort wird nach Relevanz
sortiert. Zur expliziten Sprachfilterung dient language_filter.
Erlaubte Sprachen: de, fr, it.
Schnelleinbindung in MCP-Clients
Ausführliche, client-spezifische Anleitungen mit Voraussetzungen
(Tarif-Anforderungen für claude.ai und ChatGPT, Konfigurations-Pfade)
stehen auf der Landing Page und in
docs/CLIENTS.md. Im Wesentlichen:
Claude Code (CLI)
Cursor / Windsurf / VS Code / Generisch (mcp.json)
Claude Desktop (stdio-only, daher über die mcp-remote-Bridge):
MCP Inspector zum Testen
Hinweis: Nicht jede Client-Anleitung ist vollständig durchgespielt;
Tarife, Tool-Listen und Konfigurations-Pfade ändern sich bei Anthropic,
OpenAI und anderen Anbietern regelmässig. Bei Abweichungen gilt die
offizielle Doku des jeweiligen Clients — Rückmeldungen bitte als
Issue oder PR.
Lokale Entwicklung
Konfiguration (Umgebungsvariablen)
Vollständige Liste in .env.example. Die wichtigsten:
Schnelltest mit curl
Komfortabler ist ein echter MCP-Client (MCP Inspector, Claude Code) —
der übernimmt die Streamable-HTTP-Session-Verwaltung automatisch.
Eigene Instanz deployen (Debian)
Das Repository enthält eine systemd-Unit, einen nginx-vHost und ein
Installations-Script. Damit kann jeder einen eigenen MCP-Endpoint
gegen den gleichen Elasticsearch-Index betreiben.
Das Script legt den Systemnutzer entscheidsuche an, baut ein venv,
kopiert .env.example nach /etc/entscheidsuche-mcp.env, installiert
die systemd-Unit und den nginx-vHost.
Status prüfen:
Nutzungsstatistik (/statistik)
Der MCP-Server liefert unter /statistik eine selbst-enthaltene
HTML-Seite mit Tageszahlen, Top-Tools, KI-Client-Klassifizierung
(clientInfo.name), Stunden-Sparklines und Methoden-Verteilung.
Wird bei jedem Aufruf live generiert; Vortage werden in einem
JSON-Cache (/var/lib/entscheidsuche-mcp/stats-cache.json) fixiert.
Basic Auth via Env-Variablen (in /etc/entscheidsuche-mcp.env):
Sind beide leer, ist /statistik ungeschützt zugänglich (Dev-Modus).
Der Authorization-Header wird vom nginx-vHost unverändert an den
Python-Server durchgereicht; die Prüfung passiert dort per
hmac.compare_digest gegen die Env-Variablen.
Inhalte sind reine Aggregate. Mit ESC_ACCESS_LOG_ARGS_MAX=0 (Default
im .env.example) werden Tool-Argumente — also die Suchqueries der
Nutzer — gar nicht erst geloggt.
Datenquelle: /var/log/entscheidsuche-mcp/access.log (geschrieben von
der entscheidsuche_mcp.access-Middleware). Logrotation z. B. via
/etc/logrotate.d/entscheidsuche-mcp einrichten:
copytruncate ist wichtig, damit der Logger weiter in die rotierte
Datei schreibt, ohne dass der Server neu gestartet werden muss.
Architektur
Implementierung: Python + FastMCP.
Trägerverein
Der MCP-Server, die zugrundeliegende Plattform und der Datenbestand
werden vom Verein entscheidsuche.ch betrieben.
- Gegründet: 2017 in Landquart (GR)
- Vereinszweck: Die Rechtsprechung schweizerischer Gerichte für
jedermann durchsuchbar und zugreifbar machen
(Statuten)
- Gemeinnützigkeit: Seit 2020 vom Kanton Bern wegen Verfolgung
gemeinnütziger Zwecke von der Steuerpflicht befreit
- Vorstand: Jörn Erbguth, Daniel Kettiger, Claudia Schreiber
- Kontakt:
[email protected]
- Postadresse: Verein entscheidsuche.ch, 3000 Bern
- Spendenkonto: Postfinance IBAN
CH04 0900 0000 1412 0685 4,
Verein entscheidsuche.ch, 8000 Zürich (Spendenquittung auf Anfrage)
- Mitgliedschaft: 100 CHF/Jahr für natürliche Personen,
1'000 CHF/Jahr für institutionelle Mitglieder
Die Plattform wurde 2018–2020 durch eine
Crowdfunding-Aktion auf wemakeit
finanziert. Eine kurze Vorstellung des Projekts erschien im Juli 2021
in der Zeitschrift für Zivilprozess- und Zwangsvollstreckungsrecht (ZZZ).
Die Scraper, mit denen die Entscheide aus den Originalquellen geholt
werden, sind ebenfalls open source — siehe Repositories des Vereins
auf GitHub.
Beitragen
Issues, Pull Requests und Vorschläge sind willkommen, insbesondere:
- Fehlerberichte zur Suche oder zur API
- Erweiterungen der MCP-Tools (z.B. Aggregations-/Statistik-Tools,
Zitationsgraph)
- Verbesserungen der Client-Anleitungen in docs/CLIENTS.md
- Übersetzungen
Bei Datenfehlern oder fehlenden Entscheiden bitte direkt an
[email protected] — der Datenbestand wird zentral gepflegt,
nicht in diesem Repo.
Lizenz
Code: MIT
Daten: Die zugrundeliegenden Gerichtsentscheide sind amtliche Werke
und stehen gemäss URG Art. 5 nicht unter Urheberrechtsschutz. Die
strukturierten Aufbereitungen des Vereins entscheidsuche.ch sind
frei nutzbar — Details unter entscheidsuche.ch.