philrox/ris-mcp-ts

βš–οΈ Legal
0 Views
0 Installs

πŸ“‡ ☁️ - Access Austrian federal laws, state laws, court decisions, and legal documents via the RIS (Rechtsinformationssystem) API with 12 specialized tools.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "philrox-ris-mcp-ts": {
      "command": "npx",
      "args": [
        "-y",
        "philrox-ris-mcp-ts"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

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

  • 12 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
  • 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:

pnpm dlx ris-mcp-ts

Or install globally:

pnpm add -g ris-mcp-ts

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
{
  "mcpServers": {
    "ris": {
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

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 dlx instead of npx in all configuration examples if you prefer pnpm.

Claude Code

Add to your project or user settings:

claude mcp add ris -- npx -y ris-mcp-ts

VS Code (GitHub Copilot)

Add to .vscode/mcp.json in your project:

{
  "servers": {
    "ris": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global access):

{
  "mcpServers": {
    "ris": {
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

Windsurf

Add to your Windsurf MCP config at ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ris": {
      "command": "npx",
      "args": ["-y", "ris-mcp-ts"]
    }
  }
}

Other MCP Clients

Any MCP-compatible client can connect via stdio transport:

npx -y ris-mcp-ts
# or: pnpm dlx ris-mcp-ts

Available Tools

ToolDescription
ris_bundesrechtSearch federal laws (ABGB, StGB, UGB, etc.)
ris_landesrechtSearch state/provincial laws (all 9 provinces)
ris_judikaturSearch court decisions (16 court types)
ris_bundesgesetzblattSearch Federal Law Gazettes (BGBl I/II/III)
ris_landesgesetzblattSearch State Law Gazettes (LGBl)
ris_regierungsvorlagenSearch government bills
ris_dokumentRetrieve full document text by ID or URL
ris_bezirkeSearch district authority announcements
ris_gemeindenSearch municipal law and regulations
ris_sonstigeSearch miscellaneous collections (8 sub-apps)
ris_historyTrack document change history (36 app types)
ris_verordnungenSearch state ordinance gazettes

Tool Reference

ris_bundesrecht β€” Federal Laws

Search Austrian federal laws such as ABGB, StGB, UGB, and more.

Inputs:

ParameterTypeDescription
suchwortestringFull-text search (e.g., "Mietrecht", "Schadenersatz")
titelstringSearch in law titles (e.g., "ABGB", "Strafgesetzbuch")
paragraphstringSection number (e.g., "1295" for Β§1295, "7" for Art 7)
abschnitt_typstringType of section paragraph refers to: "Paragraph" (default), "Artikel" (article-based laws like B-VG), "Anlage" (annex)
applikationstring"BrKons" (consolidated, default), "Begut" (drafts), "BgblAuth" (gazette), "Erv" (English translations)
fassung_vomstringDate for historical version (YYYY-MM-DD)
seitenumberPage number (default: 1)
limitnumberResults per page: 10, 20, 50, 100 (default: 20)
response_formatstring"markdown" (default) or "json"

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 support paragraph/abschnitt_typ or fassung_vom.

ris_landesrecht β€” State/Provincial Laws

Search state laws of the nine Austrian provinces.

Inputs:

ParameterTypeDescription
suchwortestringFull-text search
titelstringSearch in law titles
bundeslandstringProvince: Wien, Niederoesterreich, Oberoesterreich, Salzburg, Tirol, Vorarlberg, Kaernten, Steiermark, Burgenland
paragraphstringSection number (e.g., "1" for Β§1, "7" for Art 7)
abschnitt_typstringType of section paragraph refers to: "Paragraph" (default), "Artikel", "Anlage"
fassung_vomstringDate for historical version (YYYY-MM-DD)
gesetzesnummerstringExact law number (Gesetzesnummer) of a specific state law
applikationstring"LrKons" (consolidated, default)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"
ris_judikatur β€” Court Decisions

Search court decisions from Austrian courts.

Inputs:

ParameterTypeDescription
suchwortestringFull-text search in decisions
gerichtsbarkeitstringCourt system / data collection to search β€” the RIS "Applikation" (see below; default "Justiz")
dokumenttypstring"rechtssatz" (headnotes only), "entscheidungstext" (full texts only), or "beide" (both, default)
gerichtstringActual court within the jurisdiction (e.g., "OGH", "OLG Wien"); applies to gerichtsbarkeit="Justiz"
rechtsgebietstringBroad legal area: "Zivilrecht" or "Strafrecht" (Justiz)
fachgebietstringOGH subject area (e.g., "Arbeitsrecht"); Justiz, needs dokumenttyp "entscheidungstext"/"beide"
entscheidungsartstringDecision type (e.g., "Erkenntnis", "Beschluss"); allowed values differ by jurisdiction
sammlungsnummerstringCollection number: VfSlg (Vfgh) or VwSlg (Vwgh)
normstringLegal norm (e.g., "1319a ABGB")
geschaeftszahlstringCase number (e.g., "5Ob234/20b")
entscheidungsdatum_vonstringDecision date from (YYYY-MM-DD)
entscheidungsdatum_bisstringDecision date to (YYYY-MM-DD)
sortierungstringSort by decision date: "datum_auf" (oldest first) or "datum_ab" (newest first)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"

Available gerichtsbarkeit values (16):

ValueCourt system
JustizSupreme Court (OGH), Higher Regional Courts (OLG), Regional Courts (LG) β€” default
VfghConstitutional Court
VwghSupreme Administrative Court
BvwgFederal Administrative Court
LvwgProvincial Administrative Courts
DskData Protection Authority
AsylGHAsylum Court (historical, until 2013)
NormenlisteIndex of legal norms
PvakPersonnel Representation Supervisory Commission
GbkEqual Treatment Commission
DokDisciplinary Commission
VergFederal Procurement Office (historical, dissolved 2014)
UvsIndependent Administrative Senates (historical, dissolved 2014)
UbasIndependent Federal Asylum Senate (historical, dissolved 2014)
UmseEnvironmental Senate (historical, dissolved 2014)
BksFederal Communications Board (historical, dissolved 2014)
ris_bundesgesetzblatt β€” Federal Law Gazette

Search the Federal Law Gazette (BGBl) β€” official publications of federal legislation.

Inputs:

ParameterTypeDescription
bgblnummerstringGazette number (e.g., "120")
teilstring"1" (I = Acts), "2" (II = Regulations), "3" (III = Treaties)
jahrgangstringYear (e.g., "2023")
suchwortestringFull-text search
titelstringSearch in titles
applikationstring"BgblAuth" (authentic from 2004, default), "BgblPdf" (PDF), "BgblAlt" (1945–2003)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"
ris_landesgesetzblatt β€” State Law Gazette

Search State Law Gazettes (LGBl) β€” official publications of state legislation.

Inputs:

ParameterTypeDescription
lgblnummerstringGazette number (e.g., "50")
jahrgangstringYear (e.g., "2023")
bundeslandstringProvince name
suchwortestringFull-text search
titelstringSearch in titles
applikationstring"LgblAuth" (authentic, default), "Lgbl" (general), "LgblNO" (Niederoesterreich)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"
ris_regierungsvorlagen β€” Government Bills

Search government bills β€” draft legislation submitted to parliament.

Inputs:

ParameterTypeDescription
suchwortestringFull-text search
titelstringSearch in titles
beschlussdatum_vonstringApproval date from (YYYY-MM-DD)
beschlussdatum_bisstringApproval date to (YYYY-MM-DD)
einbringende_stellestringSubmitting ministry (e.g., BKA, BMF, BMJ, BMK)
im_ris_seitstringAdded recently: EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr
sortierung_richtungstringAscending or Descending
sortierung_spaltestringKurztitel, EinbringendeStelle, Beschlussdatum
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"
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:

ParameterTypeDescription
dokumentnummerstringRIS document number (e.g., "NOR40052761")
urlstringDirect URL to document content
response_formatstring"markdown" (default) or "json"

At least one of dokumentnummer or url is required. Long documents are truncated to 25,000 characters.

Supported document prefixes:

PrefixType
NORFederal norms
LBG, LKT, LNO, LOO, LSB, LST, LTI, LVB, LWIState laws (9 provinces)
JWR, JWTSupreme Administrative Court (VwGH)
JFR, JFTConstitutional Court (VfGH)
JJR, JJTOrdinary courts (Justiz)
BVWG, LVWGFederal / State Administrative Courts
DSB, PDK, GBK, PVAB, DKT, NL, ASYLGHData protection, equal treatment, personnel, disciplinary, norm lists, asylum
VERG, JUR, JUT, UBAS, UMSE, BKSHistorical jurisdictions (dissolved 2014)
BGBLA, BGBL, BGBLPDFFederal Law Gazette (authentic / 1945–2003 / PDF)
REGVGovernment bills
BVBDistrict authorities
VBLOrdinance gazettes
MRP, ERL, PRUEF, AVSV, SPG, KMGERCabinet protocols, decrees, trade exams, social insurance, health plans, court announcements

The full routing registry lives in DOCUMENT_ROUTES (src/client.ts); unknown prefixes fall back to a Justiz search.

ris_bezirke β€” District Authority Announcements

Search announcements from district administrative authorities.

Note: Only available for: Niederoesterreich, Oberoesterreich, Tirol, Vorarlberg, Burgenland, Steiermark.

Inputs:

ParameterTypeDescription
suchwortestringFull-text search
titelstringSearch in titles
bundeslandstringProvince name
bezirksverwaltungsbehoerdestringDistrict authority name
kundmachungsnummerstringAnnouncement number
kundmachungsdatum_vonstringDate from (YYYY-MM-DD)
kundmachungsdatum_bisstringDate to (YYYY-MM-DD)
im_ris_seitstringAdded recently: EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"
ris_gemeinden β€” Municipal Law

Search municipal law β€” local ordinances and regulations.

Inputs:

ParameterTypeDescription
suchwortestringFull-text search
titelstringSearch in titles
bundeslandstringProvince name
gemeindestringMunicipality name (e.g., "Graz")
applikationstring"Gr" (municipal law, default) or "GrA" (official gazettes)
im_ris_seitstringAdded recently
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"

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:

ParameterTypeDescription
applikationstringRequired. Collection to search (see below)
suchwortestringFull-text search
titelstringSearch in titles
datum_vonstringDate from (YYYY-MM-DD)
datum_bisstringDate to (YYYY-MM-DD)
im_ris_seitstringAdded recently
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"

Available collections:

ValueDescription
MrpCabinet protocols (Ministerratsprotokolle)
ErlaesseMinisterial decrees
UptsParty transparency reports
KmGerCourt announcements
AvsvSocial insurance regulations
AvnVeterinary notices
SpgHealth structure plans
PruefGewOTrade licensing exams

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:

ParameterTypeDescription
applikationstringRequired. Application type (30 options β€” see below)
aenderungen_vonstringChanges from date (YYYY-MM-DD)
aenderungen_bisstringChanges to date (YYYY-MM-DD)
include_deletedbooleanInclude deleted documents (default: false)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"

Available applications (30):

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

ris_verordnungen β€” State Ordinance Gazettes

Search state ordinance gazettes (VerordnungsblΓ€tter).

Note: Currently only data from Tirol is available (since January 2022).

Inputs:

ParameterTypeDescription
suchwortestringFull-text search
titelstringSearch in titles
bundeslandstringProvince name
kundmachungsnummerstringAnnouncement number
kundmachungsdatum_vonstringDate from (YYYY-MM-DD)
kundmachungsdatum_bisstringDate to (YYYY-MM-DD)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"

Development

Prerequisites

  • Node.js >= 20.0.0

Setup

git clone https://github.com/philrox/ris-mcp-ts.git
cd ris-mcp-ts
pnpm install
pnpm run build

Scripts

ScriptDescription
pnpm run devStart with hot reload (tsx)
pnpm run buildCompile TypeScript
pnpm startRun compiled version
pnpm testRun all tests
pnpm run checkTypecheck + lint + format check + tests
pnpm run inspectLaunch MCP Inspector for manual testing

Project Structure

src/
β”œβ”€β”€ index.ts           # Entry point (stdio transport)
β”œβ”€β”€ server.ts          # MCP server setup, delegates to tools/
β”œβ”€β”€ client.ts          # HTTP client for RIS API
β”œβ”€β”€ types.ts           # Zod schemas + TypeScript types
β”œβ”€β”€ parser.ts          # JSON parsing and response normalization
β”œβ”€β”€ formatting.ts      # Output formatting (markdown/json)
β”œβ”€β”€ helpers.ts         # Shared helper functions
β”œβ”€β”€ constants.ts       # Static mappings and configuration
β”œβ”€β”€ tools/             # One file per tool handler
β”‚   β”œβ”€β”€ index.ts
β”‚   β”œβ”€β”€ bundesrecht.ts
β”‚   β”œβ”€β”€ landesrecht.ts
β”‚   β”œβ”€β”€ judikatur.ts
β”‚   └── ...
└── __tests__/         # Unit and integration tests

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT


Built on the Open Government Data API provided by the Austrian Federal Chancellery (Bundeskanzleramt).

Related MCP Servers

ad0750/regintel-mcp

🐍 ☁️ - MCP server for the RegIntel API: structured regulatory data across 41 jurisdictions and 212 regulations (GDPR, MiCA, DORA, SEC, FINRA, FCA, APRA, ASIC, MAS). Tools for search, lookup, recent updates, and compliance checks.

βš–οΈ Legal0 views
ark-forge/mcp-eu-ai-act

πŸ“‡ ☁️ - EU AI Act compliance scanner that detects regulatory violations in AI codebases with risk classification and remediation guidance.

βš–οΈ Legal0 views
atomno-labs/mcp-sudact

🐍☁️ - Russian court practice (Sudact): case search by article, court, instance and dates; full decision text.

βš–οΈ Legal0 views
atomno-mcp/mcp-fssp

🐍☁️ - FSSP enforcement proceedings lookup for Russian debtors and compliance checks.

βš–οΈ Legal0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it β†’
β˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.