
Ris
io.github.philroxPublished by GitHub account philroxv1.0.2Updated Oct 25, 2026
Access Austrian laws, court decisions & legal documents via the RIS API.
Overview
A local MCP server that lets an assistant search and read Austria's official legal database (RIS): federal and state law, court decisions, gazettes and bills.
- What you can do
- Search federal and state law, including by section number and historical version date, across all nine provinces and English translations where available. Search court decisions from 16 court systems, filtering by court, legal area, case number, norm and decision date. Search the federal and state law gazettes, government bills, district authority announcements, municipal law and eight miscellaneous collections. Retrieve the full text of a document by RIS document number or URL, and track document change history across 36 application types. Return results as markdown or JSON, with an interactive result list and document viewer in hosts that support MCP Apps.
- When to use it
- Useful when you need Austrian legal sources in a conversation: looking up a statute such as the ABGB, finding Constitutional Court or Supreme Court decisions on a topic, checking what was published in a law gazette, or reading the full text of a specific RIS document.
- Requirements
- Runs as a local stdio process on the user's machine, started with npx or pnpm dlx from the npm package ris-mcp-ts; Node.js is needed. No API key or account is required. Network access to the public RIS Open Government Data API is needed. Local stdio servers must be configured through the client's JSON config file, not the remote-connector UI.
Installation
In SourceWeft
- Open Ris in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
RIS MCP Server
[CI] [npm version] [License: MIT] [Node.js] [MCP] [MCP Registry]
An MCP (Model Context Protocol) server that gives AI assistants access to Austria's official legal database — the Rechtsinformationssystem (RIS).
Ask your AI assistant about Austrian law, and it will search and retrieve legal documents directly from the official government API. No API key required.
What You Can Do
Once connected, you can ask your AI assistant things like:
"What does Austrian law say about tenancy rights?"
"Find Constitutional Court decisions on freedom of expression."
"Show me §1295 of the ABGB (Austrian Civil Code)."
"What laws about climate protection were published in 2024?"
"Look up the building code for the province of Salzburg."
"Get the full text of document NOR40052761."
The server translates these natural language requests into structured API calls against the RIS Open Government Data API.
Features
- 13 specialized tools covering all major RIS collections
- Federal law (ABGB, StGB, UGB, ...) and state law for all 9 provinces
- Court decisions from 16 court types (Supreme Court, Constitutional Court, Administrative Court, ...)
- Law gazettes — Federal (BGBl) and state (LGBl)
- Government bills, ministerial decrees, cabinet protocols
- Full document retrieval with smart prefix-based routing
- Change history tracking across 36 application types
- Interactive result list (MCP Apps) in hosts that support it — with a full text answer everywhere else
- Markdown and JSON output formats
- Free and open — uses Austria's Open Government Data API, no API key needed
Quick Start
Run directly without installation:
Or install globally:
Configuration
Claude Desktop
Add to your Claude Desktop config (Settings > Developer > Edit Config):
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Note: The "Add custom connector" UI in Claude Desktop only supports remote MCP servers (HTTP/SSE). Local stdio servers like this one must be configured via the JSON file.
Tip: You can also use
pnpm dlxinstead ofnpxin all configuration examples if you prefer pnpm.
Claude Code
Add to your project or user settings:
VS Code (GitHub Copilot)
Add to .vscode/mcp.json in your project:
Cursor
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global access):
Windsurf
Add to your Windsurf MCP config at ~/.codeium/windsurf/mcp_config.json:
Other MCP Clients
Any MCP-compatible client can connect via stdio transport:
Available Tools
Interactive Result List
One widget, all eleven search tools. There is a single interactive result list, and every search tool renders into it: federal law, state law, case law, the federal and state law gazettes, government bills, district authority announcements, municipal law, the miscellaneous collections, change history and the ordinance gazettes. The screenshots below are the same widget in two different hosts, not two different features.
ris_dokument opens a reader instead. A single document can run to a quarter of a million characters, far past what one answer may carry, so the viewer loads it section by section as you scroll, offers an outline to jump by where the document has one, and links back into RIS. The full text still reaches the chat either way — the widget is never the only copy.
Hosts that support the MCP Apps extension render the hits as an interactive list — page through results without retyping the search, open a document in the browser, or request its full text with one click. The widget follows the host's light or dark theme; the shots below show both.
[Case law search for 'Verjährung' in the light theme: 7,466 hits, with court, decision date and case number on the expanded result, the actions 'Im RIS öffnen', 'PDF' and 'Volltext in den Chat', and pagination controls at the bottom.]
The expanded detail view, light theme — metadata, the three actions, and pagination
Example Prompts
RIS is a German-language database, so these work best in German. Each of these lands on a different tool:
"Zeig mir das Verbrauchergewährleistungsgesetz" —
ris_bundesrecht
"Finde aktuelle OGH-Rechtsprechung zu Verjährung" —
ris_judikatur
"Was steht im Tiroler Landesrecht zum Naturschutz?" —
ris_landesrecht
"Zeig mir BGBl. I Nr. 175/2021" —
ris_bundesgesetzblatt
In a host without MCP Apps support the same prompts return the full text answer instead — see the table below.
The chat answer is always complete. The widgets are an addition to it, never a replacement — a host that does not render them loses nothing.
Tool Reference
ris_bundesrecht — Federal Laws
Search Austrian federal laws such as ABGB, StGB, UGB, and more.
Inputs:
All parameters are optional. At least one search parameter (suchworte, titel, or paragraph) should be provided.
Note:
applikation="Erv"(English translations) uses a different parameter vocabulary internally (SearchTerms/Title) and does not supportparagraph/abschnitt_typorfassung_vom.
ris_landesrecht — State/Provincial Laws
Search state laws of the nine Austrian provinces.
Inputs:
ris_judikatur — Court Decisions
Search court decisions from Austrian courts.
Inputs:
Available gerichtsbarkeit values (16):
ris_bundesgesetzblatt — Federal Law Gazette
Search the Federal Law Gazette (BGBl) — official publications of federal legislation.
Inputs:
ris_landesgesetzblatt — State Law Gazette
Search State Law Gazettes (LGBl) — official publications of state legislation.
Inputs:
ris_regierungsvorlagen — Government Bills
Search government bills — draft legislation submitted to parliament.
Inputs:
ris_dokument — Full Document Retrieval
Retrieve the full text of a legal document by its ID or URL. Uses a dual strategy: direct URL access first, then search API fallback.
Inputs:
At least one of dokumentnummer or url is required. Long documents are truncated to 25,000 characters.
Supported document prefixes:
The full routing registry lives in
DOCUMENT_ROUTES(src/client.ts); unknown prefixes fall back to a Justiz search.
ris_dokument_abschnitt — Document Section
Return one section of a document already open in the RIS document viewer. Intended for the viewer widget, not for direct use — for the full text of a document use ris_dokument.
The tool is declared app-only (_meta.ui.visibility: ["app"]): hosts that honour the flag hide it from the model and let only the viewer widget call it. It serves the same text ris_dokument produced, from the document cache where possible, so the offsets the viewer holds address the same document.
Inputs:
At least one of dokumentnummer or url is required. Each section is 25,000 characters long.
Output (structuredContent):
ris_bezirke — District Authority Announcements
Search announcements from district administrative authorities.
Note: Only available for: Niederoesterreich, Oberoesterreich, Tirol, Vorarlberg, Burgenland, Steiermark.
Inputs:
ris_gemeinden — Municipal Law
Search municipal law — local ordinances and regulations.
Inputs:
Additional parameters depend on the selected application. See Gr (municipal law) and GrA (official gazettes) specific parameters in the source code.
ris_sonstige — Miscellaneous Collections
Search miscellaneous legal collections and specialized databases.
Inputs:
Available collections:
Each collection has additional specific parameters. See the tool description for details.
ris_history — Document Change History
Track document creation, modification, and deletion across the RIS database.
Inputs:
Available applications (36):
Federal law: Bundesnormen, BgblAuth, BgblAlt, BgblPdf, RegV
State law: Landesnormen, LgblAuth, Lgbl, LgblNO, Vbl, Gemeinderecht, GemeinderechtAuth
Case law: Justiz, Vfgh, Vwgh, Bvwg, Lvwg, Dsk, Gbk, Pvak, AsylGH
Other: Bvb, Mrp, Erlaesse, PruefGewO, Avsv, Spg, KmGer, Dok, Normenliste
Historical (jurisdictions dissolved on 2014-01-01, change history still tracked): Verg, Upts, Uvs, Ubas, Umse, Bks
ris_verordnungen — State Ordinance Gazettes
Search state ordinance gazettes (Verordnungsblätter).
Note: Currently only data from Tirol is available (since January 2022).
Inputs:
Result size
The text block of every tool is capped at 25,000 characters. The search tools'
structuredContent has its own budget of 45,000 characters (serialized); a
page that would exceed it is delivered at the next smaller RIS page size
(100 → 50 → 20 → 10) with page, page_size, has_more and the query echo
rewritten to that size and a German notice in both the text and the payload.
Page with query.limit and query.seite as echoed. Prefer limit: 20; 50
suits a broad survey; 100 is only ever delivered when the hits are small.
The default is calibrated to Claude Code, which rejects a result whose
structured payload exceeds 25,000 tokens (measured: rejected at 58,659
characters, accepted at 46,311; the margin below that covers content that
tokenizes worse); claude.ai renders far larger payloads and needs no budget.
Self-hosters whose client accepts larger results can raise the budget with the
RIS_STRUCTURED_CONTENT_BUDGET environment variable (a positive integer).
Development
Prerequisites
- Node.js >= 20.19.0 (required by the Vite 7 widget build)
Setup
Scripts
Project Structure
Contributing
See CONTRIBUTING.md for guidelines.
License
Built on the Open Government Data API provided by the Austrian Federal Chancellery (Bundeskanzleramt).
Source: README.md at commit 9e97e1e
Tools
0Version history
1- v1.0.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts