io.github.philrox/ris

编码与调试

by philrox

通过RIS API访问奥地利法律、法院判决及各类法律文书,便于法律检索、研究与合规分析。

什么是 io.github.philrox/ris

通过RIS API访问奥地利法律、法院判决及各类法律文书,便于法律检索、研究与合规分析。

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

  • 12 specialized tools covering all major RIS collections
  • Federal law (ABGB, StGB, UGB, ...) and state law for all 9 provinces
  • Court decisions from 11 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 30 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:

bash
pnpm dlx ris-mcp-ts

Or install globally:

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

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

VS Code (GitHub Copilot)

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

json
{
  "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):

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

Windsurf

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

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

Other MCP Clients

Any MCP-compatible client can connect via stdio transport:

bash
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 (11 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 (30 app types)
ris_verordnungenSearch state ordinance gazettes

Tool Reference

<details> <summary><strong>ris_bundesrecht</strong> — Federal Laws</summary>

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)
applikationstring"BrKons" (consolidated, default), "Begut" (draft reviews), "Erv" (English version)
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.

</details> <details> <summary><strong>ris_landesrecht</strong> — State/Provincial Laws</summary>

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
applikationstring"LrKons" (consolidated, default)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"
</details> <details> <summary><strong>ris_judikatur</strong> — Court Decisions</summary>

Search court decisions from Austrian courts.

Inputs:

ParameterTypeDescription
suchwortestringFull-text search in decisions
gerichtstringCourt type (see below)
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)
seitenumberPage number
limitnumberResults per page
response_formatstring"markdown" or "json"

Available courts:

ValueCourt
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)
NormenlisteIndex of legal norms
PvakPersonnel Representation Supervisory Commission
GbkEqual Treatment Commission
DokDisciplinary Commission
</details> <details> <summary><strong>ris_bundesgesetzblatt</strong> — Federal Law Gazette</summary>

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"
</details> <details> <summary><strong>ris_landesgesetzblatt</strong> — State Law Gazette</summary>

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"
</details> <details> <summary><strong>ris_regierungsvorlagen</strong> — Government Bills</summary>

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"
</details> <details> <summary><strong>ris_dokument</strong> — Full Document Retrieval</summary>

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, JFR, JWT, BVWG, LVWG, DSB, GBK, PVAK, ASYLGHCourt decisions
BGBLA, BGBLFederal Law Gazette
REGVGovernment bills
BVBDistrict authorities
VBLOrdinance gazettes
MRP, ERLCabinet protocols, ministerial decrees
</details> <details> <summary><strong>ris_bezirke</strong> — District Authority Announcements</summary>

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"
</details> <details> <summary><strong>ris_gemeinden</strong> — Municipal Law</summary>

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.

</details> <details> <summary><strong>ris_sonstige</strong> — Miscellaneous Collections</summary>

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.

</details> <details> <summary><strong>ris_history</strong> — Document Change History</summary>

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

</details> <details> <summary><strong>ris_verordnungen</strong> — State Ordinance Gazettes</summary>

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"
</details>

Development

Prerequisites

  • Node.js >= 20.0.0

Setup

bash
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

code
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).

常见问题

io.github.philrox/ris 是什么?

通过RIS API访问奥地利法律、法院判决及各类法律文书,便于法律检索、研究与合规分析。

相关 Skills

网页构建器

by anthropics

Universal
热门

面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。

在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。

编码与调试
未扫描114.1k

前端设计

by anthropics

Universal
热门

面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。

想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。

编码与调试
未扫描114.1k

网页应用测试

by anthropics

Universal
热门

用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。

借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。

编码与调试
未扫描114.1k

相关 MCP Server

GitHub

编辑精选

by GitHub

热门

GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。

这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。

编码与调试
83.4k

by Context7

热门

Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。

它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。

编码与调试
52.2k

by tldraw

热门

tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。

这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。

编码与调试
46.3k

评论