⚖️ ris-mcp

A proof of concept for Austrian legal research. Ein Proof of Concept für österreichische Rechtsrecherche.

ris-mcp is a proof of concept showing how an MCP client can search published Austrian court decisions and federal statutes from a local database grounded in official open data. It is published for others to study, fork, and develop further.

ris-mcp ist ein Proof of Concept: Er zeigt, wie ein MCP-Client veröffentlichte österreichische Judikatur und Bundesgesetze in einer lokalen Datenbank aus amtlichen offenen Daten durchsuchen kann. Das Projekt ist zur Prüfung, Weiterverwendung und Fortentwicklung veröffentlicht.

How to installInstallation See what you can askBeispielfragen ansehen

What you can ask Claude Beispielfragen an Claude

Once the plug-in is active, you just chat with Claude as usual — it looks up the answer in the local database of Austrian law and returns the real text, not a guess. A few examples:

Sobald das Plug-in aktiv ist, stellen Sie Claude Ihre Fragen wie gewohnt — das Tool schlägt den Text in der lokalen Datenbank nach und liefert den tatsächlichen Wortlaut statt einer Vermutung. Ein paar Beispiele:

Statute lookupGesetzesabfrage

“Was sagt § 879 ABGB zu sittenwidrigen Verträgen?”

Case-law researchJudikaturrecherche

“Find recent OGH decisions on termination of a tenancy for cause.”

“Suche aktuelle OGH-Entscheidungen zur Auflösung eines Mietvertrages aus wichtigem Grund.”

ConstitutionalVerfassungsrecht

“Summarise how the Verfassungsgerichtshof has interpreted Art. 7 B-VG since 2020.”

“Fasse zusammen, wie der VfGH Art. 7 B-VG seit 2020 ausgelegt hat.”

Specific docketKonkrete Geschäftszahl

“Hol mir den Volltext von OGH 6 Ob 123/24a.”

Administrative lawVerwaltungsrecht

“List VwGH decisions on asylum status from the past year.”

“Liste VwGH-Entscheidungen zum Asylstatus aus dem letzten Jahr auf.”

Plain-language digestEinfache Sprache

“Explain § 1295 ABGB in plain German for a non-lawyer.”

“Erkläre § 1295 ABGB in einfacher Sprache für Nicht-Juristen.”

Claude reads the actual decision or statute before answering. If it can't find something, it says so — that's the whole point of grounding it in a real database. Not legal advice. Some examples above require the full database to be downloaded first — see Status for what is available today.

Claude liest die tatsächliche Entscheidung oder den Gesetzestext, bevor es antwortet. Findet es nichts, sagt es das — genau das ist der Sinn der lokalen Datenbank. Dies ersetzt keine Rechtsberatung. Manche der obigen Beispielfragen setzen den vollständigen Datenbestand voraus — siehe Status, was heute bereits verfügbar ist.

Project status Projektstatus

The server and live importer work as a technical demonstration. This repository does not provide a public pre-built corpus, hosted endpoint, support commitment, or product roadmap.

Server und Live-Import funktionieren als technische Demonstration. Dieses Repository bietet keinen öffentlichen fertigen Datenbestand, keinen gehosteten Endpunkt, keine Supportzusage und keinen Produktfahrplan.

✅ Works now (self-build)
✅ Funktioniert bereits (Selbstaufbau)
  • Importing published decisions and federal law from the official RIS API
  • Full-text search inside indexed decisions
  • Retrieving any single decision by Geschäftszahl
  • Free, local, no account needed
  • Import veröffentlichter Entscheidungen und Bundesgesetze aus der offiziellen RIS-API
  • Volltextsuche in den bereits indexierten Entscheidungen
  • Abruf einer einzelnen Entscheidung über die Geschäftszahl
  • Kostenlos, lokal, ohne Registrierung
Setup takes only a few commands. Building the corpus is the slow part and currently takes about 3–4 days.
Die Einrichtung braucht nur wenige Befehle. Der Aufbau des Datenbestands dauert derzeit etwa 3–4 Tage.
Not included
Nicht enthalten
  • A maintained snapshot of the complete supported corpus
  • A public, checksum-verified pre-built database download
  • A quick install that does not require a multi-day import
  • Ein gepflegter Snapshot des vollständigen unterstützten Datenbestands
  • Ein öffentlicher, per Prüfsumme verifizierter Datenbank-Download
  • Eine schnelle Installation ohne mehrtägigen Import
These are outside the scope of this proof of concept, not announced deliverables.
Dies liegt außerhalb dieses Proof of Concept und ist nicht als künftige Leistung angekündigt.

InstallInstallation

Proof-of-concept limitation: no public pre-built database is provided. Step 3 below builds one directly from the official RIS API; it currently takes about 3–4 days and roughly 40 GB of disk space.

Einschränkung des Proof of Concept: Eine öffentliche fertige Datenbank wird nicht bereitgestellt. Schritt 3 baut sie direkt aus der offiziellen RIS-API auf; das dauert derzeit etwa 3–4 Tage und benötigt ungefähr 40 GB Speicherplatz.

For most people — Claude Desktop Für die meisten — Claude Desktop

This is the path if you use the Claude Desktop app on Mac or Windows and don't write code day to day. Setup is short, but the initial data import is not.

Diese Anleitung ist für Sie, wenn Sie die Claude-Desktop-App auf Mac oder Windows verwenden und im Alltag nicht programmieren. Die Einrichtung ist kurz, der erstmalige Datenimport jedoch nicht.

  1. 1. Install uv (a tiny helper that launches the plug-in). 1. Installieren Sie uv (ein kleines Hilfsprogramm, das das Plug-in startet).

    Open the Terminal app (Mac) or PowerShell (Windows) and paste:

    Öffnen Sie die Terminal-App (Mac) oder PowerShell (Windows) und fügen Sie ein:

    macOS / Linux:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    Windows (PowerShell):
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  2. 2. Tell Claude Desktop about the plug-in. 2. Claude Desktop das Plug-in bekanntmachen.

    In Claude Desktop click SettingsDeveloperEdit Config. A JSON file opens in your text editor. (Claude Desktop's menu is English-only, even on a German system.)

    Klicken Sie in Claude Desktop auf SettingsDeveloperEdit Config. Eine JSON-Datei öffnet sich im Texteditor. (Die Claude-Desktop-Menüs sind englisch, auch auf deutschsprachigen Systemen.)

    If the file is empty (or just shows {}), replace its contents with: Ist die Datei leer (oder zeigt nur {}), ersetzen Sie den Inhalt durch:
    {
      "mcpServers": {
        "ris": {
          "command": "uvx",
          "args": ["ris-mcp", "serve"]
        }
      }
    }
    If the file already has other plug-ins, add the "ris" entry inside mcpServers (mind the comma): Gibt es bereits andere Plug-ins, ergänzen Sie den Eintrag "ris" innerhalb von mcpServers (Komma beachten):
    {
      "mcpServers": {
        "some-other-plugin": { "command": "...", "args": [...] },
        "ris": {
          "command": "uvx",
          "args": ["ris-mcp", "serve"]
        }
      }
    }
    macOS gotchamacOS-Besonderheit Claude Desktop on macOS does not inherit your shell's PATH, so "command": "uvx" can fail to resolve even when uvx works perfectly in Terminal. Replace "uvx" with the absolute path. To find it, run uvx ris-mcp doctor in Terminal — it prints the exact path on the “uvx on PATH” line. Your config will look like: Claude Desktop auf macOS übernimmt den PATH Ihrer Shell nicht, daher kann "command": "uvx" fehlschlagen, obwohl uvx im Terminal einwandfrei funktioniert. Ersetzen Sie "uvx" durch den absoluten Pfad. Um ihn zu finden, führen Sie im Terminal uvx ris-mcp doctor aus — der Pfad erscheint in der Zeile „uvx on PATH“. Ihre Config sieht dann etwa so aus:
    "command": "/Users/YOUR-USERNAME/.local/bin/uvx"

    Save the file. Quit and re-open Claude Desktop. A 🔌 plug icon should show ris-mcp as connected.

    Speichern Sie die Datei. Beenden Sie Claude Desktop und öffnen Sie es erneut. Ein 🔌-Symbol zeigt, dass ris-mcp verbunden ist.

  3. 3. Build the database (one time; about 3–4 days and ~40 GB). 3. Datenbank aufbauen (einmalig; etwa 3–4 Tage und ~40 GB).

    Back in the terminal:

    Wieder im Terminal:

    uvx --from ris-mcp ris-ingest --full

    Leave the terminal open while this runs. If interrupted, existing records are retained, but the API scan starts again from the beginning. After a completed import, use ris-ingest --delta to fetch only later changes.

    Lassen Sie das Terminal währenddessen offen. Bei einer Unterbrechung bleiben bestehende Einträge erhalten, der API-Durchlauf beginnt jedoch wieder am Anfang. Nach einem vollständigen Import ruft ris-ingest --delta nur spätere Änderungen ab.

  4. 4. Verify the install. 4. Installation überprüfen.

    Run this in the terminal to confirm each piece is in place:

    Prüfen Sie im Terminal, dass alle Teile an Ort und Stelle sind:

    uvx ris-mcp doctor

    You should see a short report with green ✅ lines for Python, uvx, the database file, and the number of indexed decisions. Any ❌ or ⚠️ line tells you exactly what to fix. Then open Claude Desktop and try one of the example questions above.

    Sie erhalten einen kurzen Bericht mit grünen ✅-Zeilen für Python, uvx, die Datenbankdatei und die Anzahl indexierter Entscheidungen. Jede ❌- oder ⚠️-Zeile sagt Ihnen genau, was zu tun ist. Anschließend öffnen Sie Claude Desktop und probieren eine der Beispielfragen oben.

Don't use Claude Desktop? The same plug-in works with Claude Code, Cursor, ChatGPT (via MCP connectors) and any tool that speaks the Model Context Protocol. See the developer instructions on GitHub.

Sie nutzen nicht Claude Desktop? Das Plug-in funktioniert auch mit Claude Code, Cursor, ChatGPT (über MCP-Connectors) und jedem Tool, das das Model Context Protocol unterstützt. Details in der Entwickleranleitung auf GitHub.

Advanced: start with one court source Fortgeschritten: zunächst nur eine Gerichtsquelle importieren

To try the server sooner, import one source without federal law first. For example, this builds a VfGH-only database; you can run the full command from step 3 later.

Um den Server früher auszuprobieren, importieren Sie zunächst eine Quelle ohne Bundesrecht. Dieses Beispiel baut eine reine VfGH-Datenbank auf; den vollständigen Befehl aus Schritt 3 können Sie später ausführen.

uvx --from ris-mcp ris-ingest --full --applikation Vfgh --no-include-bundesrecht

Where the data comes from Woher die Daten stammen

SourceQuelle

The Austrian government's official RIS open-data API, published by the Federal Chancellery. No third-party data broker involved.

Die offizielle RIS-OGD-API des Bundeskanzleramts. Kein Zwischenhändler, kein Datenhandel.

LicenseLizenz

Austrian statutes and published decisions are amtliche Werke under § 7 öUrhG and therefore in the public domain. This project redistributes them under Creative Commons Zero.

Gesetze und veröffentlichte Entscheidungen sind amtliche Werke gemäß § 7 öUrhG und damit gemeinfrei. Dieses Projekt verbreitet sie unter Creative Commons Zero weiter.

LimitsGrenzen

Not legal advice. Claude can misread, miss, or paraphrase things. Always verify quotes against the source — every answer links back to RIS.

Keine Rechtsberatung. Claude kann missverstehen, auslassen oder paraphrasieren. Prüfen Sie Zitate immer an der Originalquelle — jede Antwort enthält den Link ins RIS.

PrivacyDatenschutz

The plug-in and database run locally on your machine. However, your questions are still sent to Claude's servers (Anthropic) for processing, as with any Claude conversation. Do not paste privileged client content you would not share with a cloud service.

Das Plug-in und die Datenbank laufen lokal auf Ihrem Rechner. Ihre Fragen werden aber wie bei jeder Claude-Unterhaltung an die Server von Anthropic geschickt. Geben Sie keine vertraulichen Mandantsinhalte ein, die Sie einem Cloud-Dienst nicht anvertrauen würden.

Take it furtherWeiterentwickeln

This repository is a working proof of concept and a starting point for others. It has no announced roadmap or ongoing support commitment. Fork it, adapt it, or use its ingestion, SQLite, and MCP patterns in another Austrian legal-information project.

Dieses Repository ist ein funktionsfähiger Proof of Concept und Ausgangspunkt für andere. Es gibt keinen angekündigten Fahrplan und keine laufende Supportzusage. Sie können es forken, anpassen oder seine Import-, SQLite- und MCP-Muster in einem anderen österreichischen Rechtsinformationsprojekt verwenden.

What the proof of concept demonstrates
Was der Proof of Concept demonstriert
  • Resilient ingestion from the official RIS API
  • Local FTS5/BM25 search over SQLite
  • Stdio MCP tools for search and exact retrieval
  • Robuster Import aus der offiziellen RIS-API
  • Lokale FTS5/BM25-Suche in SQLite
  • Stdio-MCP-Werkzeuge für Suche und gezielten Abruf
Ideas a downstream project could explore
Mögliche Ansätze für ein Folgeprojekt
  • Maintained corpus snapshots and automated updates
  • Citation graphs, leading-case ranking, and semantic search
  • Legislative history, state law, or a hosted endpoint
  • Gepflegte Daten-Snapshots und automatisierte Aktualisierung
  • Zitationsgraphen, Leitentscheidungsranking und semantische Suche
  • Materialien, Landesrecht oder ein gehosteter Endpunkt