mcpField
A
Austrian Law (RIS) — Bundesrecht, Landesrecht & Judikatur

Austrian Law (RIS) — Bundesrecht, Landesrecht & Judikatur

本地服务
github.com法律与政务214 周前更新

关于 Austrian Law (RIS) — Bundesrecht, Landesrecht & Judikatur

at-ris-mcp 提供 MCP 服务和 Python 客户端库,用于访问奥地利官方 RIS 法律信息系统。它覆盖联邦与州法律、法院判决及相关文件,并支持精确到条款的查询、历史版本和变更监控。

主要功能

  1. 01搜索联邦法和州法
  2. 02获取法规与法院判决
  3. 03访问指定条款或历史版本
  4. 04以清理后的 Markdown 或原始格式返回文件
  5. 05监控 RIS 变更,包括已删除文件
  6. 06使用独立的 Python 客户端库

适用场景

  1. 01查找现行合并版联邦法律文本
  2. 02获取指定条款或某部法律的历史版本
  3. 03搜索奥地利各法院的判决
  4. 04跟踪 RIS 法律文件变更

MCP 相关

FastMCP 包装层提供 10 个工具,用于搜索、获取奥地利法律文件和监控变更。默认使用 stdio,也支持 streamable HTTP 和 SSE 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"paragraflabs-at-ris": {
"command": "uvx",
"args": [
"at-ris-mcp"
],
"env": {
"RIS_CACHE_DIR": "<RIS_CACHE_DIR>",
"RIS_AUDIT_DIR": "<RIS_AUDIT_DIR>",
"RIS_RATE_MS": "<RIS_RATE_MS>"
}
}
}
}
启动命令uvx at-ris-mcp
需要配置的环境变量
RIS_CACHE_DIRDirectory for the SQLite response cache (default: ~/.cache/at-ris-mcp).
RIS_AUDIT_DIRIf set, append a JSONL audit line per tool call (no full text, no client data).
RIS_RATE_MSMinimum delay between requests in ms (RIS netiquette; default 1200).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiat-ris-mcp1.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

at-ris-mcp

CI PyPI Python License

适用于奥地利 RIS(Rechtsinformationssystem des Bundes,联邦法律信息系统)的通用 MCP 服务和独立 Python 客户端库。RIS 是奥地利共和国的官方法律信息系统,由 Bundeskanzleramt 运营。

该工具覆盖联邦法律(Bundesrecht,包括 汇编法律 BrKons、官方公报、草案和政府法案)、州法律(九个 Bundesländer 的 Landesrecht)、判例法(Judikatur——OGH、VfGH、VwGH、BVwG、LVwG 等)、部委法令、区级和市级法律,以及变更监控信息流;通过无需密钥的 OGD API 访问: https://data.bka.gv.at/ris/api/v2.6/。

项目缘由

与现有 RIS 工具相比,at-ris-mcp 新增了:

  • 汇编法律(BrKons)——当前有效的正文,而不仅仅是官方公报中的修订法令。
  • 精确到条款的访问——获取单个 §/Artikel/Anlage (Abschnitt.*)。
  • 历史版本——获取指定日期的法律文本 (Fassung.FassungVom)。
  • 简洁的 Markdown——将 RIS HTML(每份文档约 40 KB 的 CSS 样板内容)清理为法律正文,并提供 raw 开关以获取未经处理的原文。

两个包,一个仓库

  • ris_client——独立于 MCP 的库,可直接导入。
  • ris_mcp——精简的 FastMCP/stdio 封装,提供 10 个工具,不包含自身逻辑。

安装

pip install at-ris-mcp          # library only
pip install "at-ris-mcp[mcp]"   # + the MCP server (FastMCP)

运行 MCP 服务(stdio)

at-ris-mcp
# or
python -m ris_mcp
远程传输(HTTP / SSE)

对于托管或远程部署,服务也可以使用流式 HTTP 或 SSE,而非 stdio:

at-ris-mcp --transport http --host 0.0.0.0 --port 8000   # streamable HTTP
at-ris-mcp --transport sse  --port 9000                  # SSE
# or via environment:
RIS_MCP_TRANSPORT=http RIS_MCP_PORT=8000 at-ris-mcp

默认情况下,HTTP 端点位于 /mcp(可通过 --path / RIS_MCP_PATH 覆盖)。未指定传输方式时,默认使用 stdio。

工具
工具用途
ris_search_law搜索联邦法律(默认 BrKons;还包括 BgblAuth、Begut、RegV 等)。支持条款和版本筛选。
ris_get_law_text获取法规或条款的全文(markdown | html | xml | raw)。
ris_search_case搜索判例法(默认 Justiz;涵盖所有法院)。可按适用的 norm 筛选。
ris_get_case_text获取判决全文。
ris_search_state_law搜索州法律(9 个 Bundesländer;默认 LrKons)。通过 bundeslaender 选择州。
ris_search_misc搜索 Sonstige(部委法令 Erlaesse、Avsv 等)。
ris_search_district搜索区级主管部门公告(Bezirke / Bvb)。
ris_search_municipality搜索市级法律(Gemeinden / Gemeinderecht Gr/GrA)。
ris_list_collections查看涵盖的端点/应用。
ris_list_changes通过 OGD SOAP 端点获取变更/预警信息流(RIS History),包括已删除的文档。

库的用法

import asyncio
from ris_client import RisClient, LawSearchRequest, TextFormat

async def main():
    async with RisClient() as c:
        res = await c.search_law(LawSearchRequest(suchworte="Datenschutzgesetz",
                                                  page_size="Ten"))
        hit = res.items[0]
        print(hit.human_readable_citation, hit.eli_uri)
        text = await c.get_text(hit.content_urls["html"], TextFormat.markdown)
        print(text.content[:500])

asyncio.run(main())

配置(环境变量)

变量默认值含义
RIS_BASE_URLhttps://data.bka.gv.at/ris/api/v2.6API 基础地址(版本隔离)。
RIS_SOAP_URLhttps://data.bka.gv.at/ris/ogd/v2.6/OGD SOAP 端点(由 ris_list_changes 使用)。
RIS_USER_AGENTat-ris-mcp/<version> (+…)描述性 UA(遵循网络礼仪)。
RIS_RATE_MS1200请求之间的最小间隔(毫秒)。
RIS_TIMEOUT_S30HTTP 超时时间。
RIS_MAX_RETRIES3遇到 429/5xx 时的重试次数(包括 503)。
RIS_CACHE_DIR~/.cache/at-ris-mcpSQLite 缓存位置。
RIS_CACHE_ENABLEDtrue启用或禁用缓存。
RIS_AUDIT_DIR(未设置)若设置,则每次调用追加一条 JSONL 审计记录(不含完整文本或客户端数据)。
RIS_MCP_TRANSPORTstdio服务传输方式:stdio | http | sse | streamable-http。
RIS_MCP_HOST127.0.0.1http/sse 的绑定主机。
RIS_MCP_PORT8000http/sse 的绑定端口。
RIS_MCP_PATH(传输方式默认值)HTTP 端点的 URL 路径。

网络礼仪与速率限制

根据 RIS OGD 常见问题解答,客户端会强制每页间隔 1–2 秒;批量访问应安排在非办公时间(18:00–06:00)或周末,并告知 [email protected]。默认会发送描述性 User-Agent。

许可

  • 代码: Apache-2.0(参见 LICENSE)。

  • 数据: 检索到的文档由奥地利共和国根据 CC BY 4.0 提供。每个工具响应都包含一个 attribution 字段:

    来源:RIS – Rechtsinformationssystem des Bundes (data.bka.gv.at),CC BY 4.0

  • 不构成法律建议。 只有正式公布的原始文本(Bundesgesetzblatt/Landesgesetzblatt authentisch)具有法律效力。汇编法律及所有其他文档仅供参考。每个响应都包含相应的 legal_notice。

范围(v1.0)

涵盖:Bundesrecht(BrKons、BgblAuth、BgblPdf、BgblAlt、Begut、RegV、Erv——英文译本)、Judikatur(所有法院)、历史变更源(ris_list_changes,包括已删除的文档)、州法律(9 个 Bundesländer:LrKons、LgblAuth、Lgbl、LgblNO、Vbl)、其他(Erlaesse、Avsv、Avn、Spg、KmGer、Upts、Mrp、PruefGewO——带有应用专属精细筛选器)、区(Bvb)和市镇(Gr、GrA)。

英文译本(Erv): 使用 ris_search_law 搜索,并设置 applikation="Erv"。suchworte/titel 会自动映射到 RIS 的 SearchTerms/Title 参数。

州法律说明: 对于州法律汇编(LrKons),使用 bundeslaender 选择各州(例如 ["Kaernten","Tirol"]);这会映射为 API 所需的带点号的 Bundesland.SucheIn<Land>=true 标志(对于 LrKons,扁平形式会被静默忽略)。

历史记录说明: 汇编联邦法律的监控应用名称为 Bundesnormen(而不是 BrKons),汇编州法律的监控应用名称为 Landesnormen。历史记录查询使用 OGD SOAP 端点,因为 REST GET API 未提供此功能。

开发

pip install -e ".[dev,mcp]"
pytest                       # offline tests
RIS_SMOKE=1 pytest -m smoke  # live smoke tests against the real API

发布

发布流程已自动化。推送版本标签(vX.Y.Z)后,GitHub Actions 会构建发行包、发布到 PyPI(通过 Trusted Publishing / OIDC,无需 API 令牌)、创建 GitHub Release,并在 MCP Registry 中登记新版本。

# bump the version in pyproject.toml, src/ris_client/config.py and server.json,
# update CHANGELOG.md, then:
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z

如需在本地构建而不发布:

python -m build              # sdist + wheel into dist/
python -m twine check dist/*

MCP Registry 条目由 server.json 描述 (名称 io.github.paragraflabs/at-ris-mcp);对应的 mcp-name: 标记 嵌入在本 README 顶部附近。

贡献与支持

欢迎在 https://github.com/paragraflabs/at-ris-mcp 提交问题和拉取请求。请参阅 CHANGELOG.md 了解发布历史。本项目与奥地利共和国或 Bundeskanzleramt 无关联,也未获其认可;它是面向公共 RIS OGD 接口的独立客户端。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。