Entscheidsuche — Schweizer Gerichtsentscheide

ch.entscheidsuchev1.0.0Updated Sep 29, 2026

Suche in Schweizer Gerichtsentscheiden aller Instanzen (Bund, Kantone) in DE/FR/IT.

VerifiedStreamable HTTPWeb executableOther

Installation

In SourceWeft

  1. Open Entscheidsuche — Schweizer Gerichtsentscheide in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "mcp": {
      "type": "http",
      "url": "https://mcp.entscheidsuche.ch/mcp"
    }
  }
}

README

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

ToolZweck
searchVolltextsuche mit Lucene-Syntax. Filter nach Entscheiddatum, Scrape-Datum, Hierarchie (Kanton / Gericht / Kammer) und Sprache. Sortierung nach Relevanz, Entscheiddatum oder Scrape-Datum. Paginierung über next_cursor / search_after. Aggregationen für Facetten-Auswertung.
search_by_case_numberExakte Phrasensuche nach Geschäftsnummern, Aktenzeichen und BGE-Zitaten (z.B. BGE 142 III 1, 6B_1234/2025, 5A_396/2015). Setzt die Nummer automatisch in Anführungszeichen.
fetch_documentVollständigen Entscheid samt Volltext anhand der ID abrufen.
list_hierarchyHierarchie-IDs (Bund / Kanton / Gericht / Kammer) mit Trefferzahlen.
list_facetsHierarchischer Facetten-Baum mit lokalisierten Labels in DE/FR/IT.
server_infoVersions- und Konfigurationsinformationen.

Vollständige Schnittstellenbeschreibung mit allen Parametern, Filtern, Rückgabe-Schemata und Beispielen: docs/API.md.

Suchsyntax — Cheatsheet

AufgabeBeispiel
Volltext, alle Begriffe (AND)Mietzins Kündigung
Phrase, exakte Reihenfolge"fristlose Kündigung"
Geschäftsnummer"BGE 142 III 1"
ORMietzins OR Pachtzins
NegationMietzins NOT Erhöhung
WildcardMietz*
Feld-Suchetitle.de:"Kündigung"

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)

bash
claude mcp add --transport http entscheidsuche https://mcp.entscheidsuche.ch/mcp

Cursor / Windsurf / VS Code / Generisch (mcp.json)

json
{  "mcpServers": {    "entscheidsuche": {      "url": "https://mcp.entscheidsuche.ch/mcp"    }  }}

Claude Desktop (stdio-only, daher über die mcp-remote-Bridge):

json
{  "mcpServers": {    "entscheidsuche": {      "command": "npx",      "args": ["-y", "mcp-remote", "https://mcp.entscheidsuche.ch/mcp"]    }  }}

MCP Inspector zum Testen

bash
npx @modelcontextprotocol/inspector https://mcp.entscheidsuche.ch/mcp

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

bash
git clone https://github.com/entscheidsuche/entscheidsuche-mcp.gitcd entscheidsuche-mcppython3 -m venv .venvsource .venv/bin/activatepip install -e '.[dev]'
# Server starten — Streamable HTTP auf 127.0.0.1:8765/mcppython -m entscheidsuche_mcp
# Alternative: stdio (für lokale CLI-Clients)python -m entscheidsuche_mcp --transport stdio

Konfiguration (Umgebungsvariablen)

Vollständige Liste in .env.example. Die wichtigsten:

VariableDefaultBedeutung
ENTSCHEIDSUCHE_ES_URLhttps://entscheidsuche.pansoft.de:9200/entscheidsuche.v2-*/_searchElasticsearch-Endpoint
ENTSCHEIDSUCHE_FACETS_URLhttps://www.recherche.histoirerurale.ch/Facetten.jsonFacetten-Hierarchie
HOST / PORT127.0.0.1 / 8765Listen-Adresse
MCP_PATH/mcpHTTP-Pfad
MCP_STATELESS_HTTPtrueStreamable HTTP ohne Session-Pflicht
MCP_DNS_REBINDING_PROTECTIONtrueHost-/Origin-Prüfung
PUBLIC_BASE_URLhttps://mcp.entscheidsuche.chÖffentliche Basis-URL
LOG_LEVELINFOLoglevel

Schnelltest mit curl

bash
# initializecurl -N -H 'Content-Type: application/json' \     -H 'Accept: application/json, text/event-stream' \     http://localhost:8765/mcp \     -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
# tools/listcurl -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \     http://localhost:8765/mcp \     -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# searchcurl -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \     http://localhost:8765/mcp \     -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search","arguments":{"query":"\"BGE 142 III 1\"","language":"de","size":3}}}'

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.

bash
ssh [email protected]git clone https://github.com/entscheidsuche/entscheidsuche-mcp.git /opt/entscheidsuche-mcpsudo bash /opt/entscheidsuche-mcp/deploy/install.sh
# TLS-Zertifikatsudo apt-get install -y certbot python3-certbot-nginxsudo certbot --nginx -d mcp.example.org

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:

bash
systemctl status entscheidsuche-mcpjournalctl -u entscheidsuche-mcp -f

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):

bash
ESC_STATS_USER=adminESC_STATS_PASS=DEIN_PASSWORT

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:

/var/log/entscheidsuche-mcp/access.log {    weekly    rotate 12    compress    delaycompress    missingok    notifempty    copytruncate}

copytruncate ist wichtig, damit der Logger weiter in die rotierte Datei schreibt, ohne dass der Server neu gestartet werden muss.

Architektur

MCP-Client (Claude, ChatGPT, Cursor, ...)       │  Streamable HTTP (JSON-RPC)       ▼mcp.entscheidsuche.ch       │  TLS, nginx Reverse Proxy       ▼127.0.0.1:8765/mcp  ← uvicorn + FastMCP       │  HTTPS       ▼Elasticsearch (entscheidsuche.v2-*)

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.

Source: README.md at commit d5da96a

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v1.0.0LatestSep 16, 2026