关于 ris
RIS MCP 服务将奥地利官方法律数据库接入 AI 助手,适合法律资料检索与研究。它覆盖联邦及州法律、法院裁决和政府公报,并支持检索和全文获取。
主要功能
- 01检索联邦及州法律
- 02搜索多类法院裁决
- 03查询联邦与州公报
- 04获取法律文件全文
- 05跟踪文件变更历史
- 06Markdown 或 JSON 输出
适用场景
- 01查找奥地利法律条文
- 02研究特定法院的裁决
- 03检索某州的法规
- 04获取指定文件的完整文本
MCP 相关
该 MCP 服务将 RIS 官方 API 封装为 13 种工具,供 MCP 客户端检索法律资料并获取文件全文;无需 API 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
13收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | any | 否 | 每页结果数:10、20、50 或 100(默认:20)。每条结果约消耗 1k 个字符的结构化负载,因此浏览时建议使用 20,广泛调查时使用 50;如果一页超出负载预算,系统会改用更小的页面大小发送,并通过 page_size、query.limit 和 notice 说明。 |
| seite | integer | 否 | 页码(默认值:1) |
| titel | string | 否 | 在法律标题中搜索(例如,"ABGB"、"Strafgesetzbuch") |
| paragraph | string | 否 | 要搜索的条款编号(例如,"1295" 表示 §1295,"7" 表示 Art 7) |
| suchworte | string | 否 | 广泛全文搜索词(例如,"Mietrecht"、"Schadenersatz")。结果按法律标题的字母顺序排列,而非按相关性排列;已知法律或条款时,优先使用 "titel" 和/或 "paragraph"。 |
| applikation | enum | 否 | 数据源 - "BrKons"(整合版,默认)、"Begut"(草案)、"BgblAuth"(公报)、"Erv"(英文译文)BrKons | Begut | BgblAuth | Erv |
| fassung_vom | string | 否 | 截至此日期的整合版本(YYYY-MM-DD)——检索该法律在当天有效的文本。不支持 "Erv"。 |
| abschnitt_typ | enum | 否 | "paragraph" 所指的条款类型:"Paragraph"(默认)、"Artikel"(如 B-VG 这类按条文编号编排的法律)或 "Anlage"(附录)。"Art 7 B-VG" 需要使用 "Artikel"。Paragraph | Artikel | Anlage |
| response_format | enum | 否 | “markdown”(默认)或 “json”markdown | json |
详细介绍
RIS MCP 服务
这是一个 MCP(模型上下文协议) 服务,可让 AI 助手访问奥地利的官方法律数据库——法律信息系统(Rechtsinformationssystem,RIS)。
向 AI 助手询问奥地利法律问题,它就会直接通过官方政府 API 搜索并检索法律文件。无需 API 密钥。
你可以做什么
连接后,你可以向 AI 助手询问:
“奥地利法律对租赁权有何规定?”
“查找有关言论自由的宪法法院裁决。”
“显示《ABGB》(奥地利民法典)第 1295 条。”
“2024 年颁布了哪些气候保护相关法律?”
“查找萨尔茨堡州的建筑法规。”
“获取文件 NOR40052761 的全文。”
该服务会将这些自然语言请求转换为对 RIS 开放政府数据 API 的结构化 API 调用。
功能
- 13 种专用工具,覆盖 RIS 的所有主要类别
- 联邦法律(ABGB、StGB、UGB 等)以及全部 9 个州的州法律
- 来自 16 种法院的法院裁决(最高法院、宪法法院、行政法院等)
- 法律公报——联邦(BGBl)和州(LGBl)
- 政府法案、部长法令、内阁会议记录
- 完整文件检索,支持基于前缀的智能路由
- 跟踪 36 种应用类型的变更历史
- 在支持 MCP Apps 的宿主中提供交互式结果列表,其他宿主则提供完整的文本答复
- Markdown 和 JSON 输出格式
- 免费且开源——使用奥地利开放政府数据 API,无需 API 密钥
快速开始
无需安装,直接运行:
pnpm dlx ris-mcp-ts
或全局安装:
pnpm add -g ris-mcp-ts
配置
Claude Desktop
将以下内容添加到 Claude Desktop 配置中(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"]
}
}
}
注意: Claude Desktop 中的“Add custom connector”界面仅支持远程 MCP 服务(HTTP/SSE)。像本服务这样的本地 stdio 服务必须通过 JSON 文件配置。
提示: 如果你更喜欢 pnpm,也可以在所有配置示例中使用
pnpm dlx代替npx。
Claude Code
将以下内容添加到项目或用户设置中:
claude mcp add ris -- npx -y ris-mcp-ts
VS Code(GitHub Copilot)
将以下内容添加到项目中的 .vscode/mcp.json:
{
"servers": {
"ris": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ris-mcp-ts"]
}
}
}
Cursor
将以下内容添加到项目中的 .cursor/mcp.json(如需全局访问,则添加到 ~/.cursor/mcp.json):
{
"mcpServers": {
"ris": {
"command": "npx",
"args": ["-y", "ris-mcp-ts"]
}
}
}
Windsurf
将以下内容添加到 Windsurf 的 MCP 配置文件 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"ris": {
"command": "npx",
"args": ["-y", "ris-mcp-ts"]
}
}
}
其他 MCP 客户端
任何兼容 MCP 的客户端都可以通过 stdio 传输连接:
npx -y ris-mcp-ts
# or: pnpm dlx ris-mcp-ts
可用工具
| 工具 | 描述 |
|---|---|
ris_bundesrecht | 搜索联邦法律(ABGB、StGB、UGB 等) |
ris_landesrecht | 搜索州/省级法律(全部 9 个州) |
ris_judikatur | 搜索法院判决(16 种法院类型) |
ris_bundesgesetzblatt | 搜索联邦法律公报(BGBl I/II/III) |
ris_landesgesetzblatt | 搜索州法律公报(LGBl) |
ris_regierungsvorlagen | 搜索政府法案 |
ris_dokument | 按 ID 或 URL 获取完整文档文本 |
ris_dokument_abschnitt | 按字符偏移量返回已打开文档的一个章节(供文档查看器小组件使用) |
ris_bezirke | 搜索区级主管部门公告 |
ris_gemeinden | 搜索市镇法律和法规 |
ris_sonstige | 搜索其他类别(8 个子应用) |
ris_history | 跟踪文档变更历史(36 种应用类型) |
ris_verordnungen | 搜索州级条例公报 |
交互式结果列表
一个小组件,涵盖全部 11 个搜索工具。 只有一个交互式结果列表,所有搜索工具的结果都会显示在其中:联邦法律、州级法律、判例法、联邦和州法律公报、政府法案、区级主管部门公告、市镇法律、其他类别、变更历史和条例公报。下方截图是在两个不同宿主中显示的同一个小组件,并非两种不同功能。
ris_dokument 会打开阅读器。 单篇文档可能长达 25 万字符,远超单条回答所能承载的内容。因此,查看器会在你滚动时逐节加载文档;如果文档有大纲,还会提供可跳转到相应位置的大纲,并链接回 RIS。无论如何,完整文本都会传到聊天中——小组件绝不是唯一的副本。
支持 MCP Apps 扩展的宿主会将搜索结果显示为交互式列表——无需重新输入搜索内容即可浏览结果页、在浏览器中打开文档,或一键请求其全文。小组件会跟随宿主的浅色或深色主题;下方截图展示了两种主题。
![]() | ![]() |
| 在 Claude 中 | 在 ChatGPT 中 |
展开的详细视图,浅色主题——元数据、三个操作和分页
RIS 是一个德语数据库,因此使用德语效果最佳。以下提示词分别对应不同的工具:
“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
在不支持 MCP Apps 的宿主中,相同的提示词会返回完整的文本答案——见下表。
| 宿主 | 返回内容 |
|---|---|
| claude.ai | 结果列表(分页、文档链接)+ 文档查看器(大纲导航、延迟加载) |
| ChatGPT | 结果列表(分页)+ 文档查看器(大纲导航、延迟加载) |
| Claude Code,以及任何不支持 MCP Apps 的客户端 | 常规文本结果,保持不变 |
聊天答案始终完整。小组件是对答案的补充,而非替代——不渲染这些小组件的宿主也不会因此缺少任何内容。
工具参考
ris_bundesrecht — 联邦法律
搜索奥地利联邦法律,例如 ABGB、StGB、UGB 等。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
suchworte | string | 全文搜索(例如,“Mietrecht”、“Schadenersatz”) |
titel | string | 在法律标题中搜索(例如,“ABGB”、“Strafgesetzbuch”) |
paragraph | string | 条款编号(例如,§1295 对应“1295”,“Art 7”对应“7”) |
abschnitt_typ | string | paragraph 所指条款的类型:“Paragraph”(默认)、“Artikel”(适用于 B-VG 等基于条款的法律)、“Anlage”(附录) |
applikation | string | “BrKons”(整合版,默认)、“Begut”(草案)、“BgblAuth”(公报)、“Erv”(英文译本) |
fassung_vom | string | 历史版本日期(YYYY-MM-DD) |
seite | number | 页码(默认:1) |
limit | number | 每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个较小的数量返回(见结果大小) |
response_format | string | “markdown”(默认)或“json” |
所有参数均为可选。应至少提供一个搜索参数(suchworte、titel 或 paragraph)。
注意:
applikation="Erv"(英文译本)在内部使用不同的参数词汇(SearchTerms/Title),且不支持paragraph/abschnitt_typ或fassung_vom。
ris_landesrecht — 州/省法律
搜索奥地利九个联邦州的法律。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
suchworte | string | 全文搜索 |
titel | string | 在法律标题中搜索 |
bundesland | string | 联邦州:Wien、Niederoesterreich、Oberoesterreich、Salzburg、Tirol、Vorarlberg、Kaernten、Steiermark、Burgenland |
paragraph | string | 条款编号(例如,§1 对应“1”,“Art 7”对应“7”) |
abschnitt_typ | string | paragraph 所指条款的类型:“Paragraph”(默认)、“Artikel”、“Anlage” |
fassung_vom | string | 历史版本日期(YYYY-MM-DD) |
gesetzesnummer | string | 特定州法律的确切法律编号(Gesetzesnummer) |
applikation | string | “LrKons”(整合版,默认) |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个较小的数量返回(见结果大小) |
response_format | string | “markdown”或“json” |
ris_judikatur — 法院判决
搜索奥地利法院的判决。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
suchworte | string | 在判决中进行全文搜索 |
gerichtsbarkeit | string | 要搜索的法院系统 / 数据集 — RIS 的“Applikation”(见下文;默认为 "Justiz") |
dokumenttyp | string | "rechtssatz"(仅判决要旨)、"entscheidungstext"(仅全文)或 "beide"(两者,默认) |
gericht | string | 管辖范围内的具体法院(例如 "OGH"、"OLG Wien");适用于 gerichtsbarkeit="Justiz" |
rechtsgebiet | string | 宽泛的法律领域:"Zivilrecht" 或 "Strafrecht"(Justiz) |
fachgebiet | string | OGH 专业领域(例如 "Arbeitsrecht");适用于 Justiz,且 dokumenttyp 需为 "entscheidungstext"/"beide" |
entscheidungsart | string | 判决类型(例如 "Erkenntnis"、"Beschluss");允许的值因管辖范围而异 |
sammlungsnummer | string | 汇编编号:VfSlg(Vfgh)或 VwSlg(Vwgh) |
norm | string | 法律规范(例如 "1319a ABGB") |
geschaeftszahl | string | 案号(例如 "5Ob234/20b") |
entscheidungsdatum_von | string | 判决日期起始(YYYY-MM-DD) |
entscheidungsdatum_bis | string | 判决日期截至(YYYY-MM-DD) |
sortierung | string | 按判决日期排序:"datum_auf"(从最早到最新)或 "datum_ab"(从最新到最早) |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认:20)。建议使用 20;若页面超出结构化负载预算,则会按下一个更小的数量返回(参见结果大小) |
response_format | string | "markdown" 或 "json" |
可用的 gerichtsbarkeit 值(16 个):
| 值 | 法院系统 |
|---|---|
Justiz | 最高法院(OGH)、高等地区法院(OLG)、地区法院(LG)— 默认 |
Vfgh | 宪法法院 |
Vwgh | 最高行政法院 |
Bvwg | 联邦行政法院 |
Lvwg | 州行政法院 |
Dsk | 数据保护局 |
AsylGH | 庇护法院(历史机构,至 2013 年) |
Normenliste | 法律规范索引 |
Pvak | 人事代表监督委员会 |
Gbk | 平等待遇委员会 |
Dok | 纪律委员会 |
Verg | 联邦采购办公室(历史机构,2014 年解散) |
Uvs | 独立行政审裁庭(历史机构,2014 年解散) |
Ubas | 独立联邦庇护审裁庭(历史机构,2014 年解散) |
Umse | 环境审裁庭(历史机构,2014 年解散) |
Bks | 联邦通信委员会(历史机构,2014 年解散) |
ris_bundesgesetzblatt — 联邦法律公报
搜索联邦法律公报(BGBl)——联邦立法的官方出版物。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
bgblnummer | string | 公报编号(例如 "120") |
teil | string | "1"(I = 法律)、"2"(II = 条例)、"3"(III = 条约) |
jahrgang | string | 年份(例如 "2023") |
suchworte | string | 全文搜索 |
titel | string | 在标题中搜索 |
applikation | string | "BgblAuth"(2004 年起的正式版本,默认)、"BgblPdf"(PDF)、"BgblAlt"(1945–2003 年) |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认:20)。建议使用 20;若页面超出结构化负载预算,则会按下一个更小的数量返回(参见结果大小) |
response_format | string | "markdown" 或 "json" |
ris_landesgesetzblatt — 州法律公报
搜索州法律公报(LGBl)——州立法的官方出版物。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
lgblnummer | string | 公报编号(例如,“50”) |
jahrgang | string | 年份(例如,“2023”) |
bundesland | string | 省份名称 |
suchworte | string | 全文搜索 |
titel | string | 在标题中搜索 |
applikation | string | "LgblAuth"(权威版本,默认)、"Lgbl"(通用)、"LgblNO"(下奥地利) |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小) |
response_format | string | "markdown" 或 "json" |
ris_regierungsvorlagen — 政府法案
搜索提交给议会的政府法案,即立法草案。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
suchworte | string | 全文搜索 |
titel | string | 在标题中搜索 |
beschlussdatum_von | string | 批准日期起(YYYY-MM-DD) |
beschlussdatum_bis | string | 批准日期止(YYYY-MM-DD) |
einbringende_stelle | string | 提交法案的部委(例如,BKA、BMF、BMJ、BMK) |
im_ris_seit | string | 最近添加:EinerWoche、ZweiWochen、EinemMonat、DreiMonaten、SechsMonaten、EinemJahr |
sortierung_richtung | string | 升序或降序 |
sortierung_spalte | string | Kurztitel、EinbringendeStelle、Beschlussdatum |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小) |
response_format | string | "markdown" 或 "json" |
ris_dokument — 获取完整文档
通过文档 ID 或 URL 获取法律文档全文。采用双重策略:先直接访问 URL,失败后再使用搜索 API。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
dokumentnummer | string | RIS 文档编号(例如,“NOR40052761”) |
url | string | 文档内容的直接 URL |
response_format | string | "markdown"(默认)或 "json" |
必须提供 dokumentnummer 或 url 中的至少一项。长文档会截断至 25,000 个字符。
支持的文档前缀:
| 前缀 | 类型 |
|---|---|
| NOR | 联邦法规 |
| LBG, LKT, LNO, LOO, LSB, LST, LTI, LVB, LWI | 州法律(9 个省份) |
| JWR, JWT | 最高行政法院(VwGH) |
| JFR, JFT | 宪法法院(VfGH) |
| JJR, JJT | 普通法院(Justiz) |
| BVWG, LVWG | 联邦/州行政法院 |
| DSB, PDK, GBK, PVAB, DKT, NL, ASYLGH | 数据保护、平等待遇、人事、纪律、法规清单、庇护 |
| VERG, JUR, JUT, UBAS, UMSE, BKS | 历史司法管辖机构(2014 年解散) |
| BGBLA, BGBL, BGBLPDF | 联邦法律公报(权威版本/1945–2003/PDF) |
| REGV | 政府法案 |
| BVB | 区级主管部门 |
| VBL | 条例公报 |
| MRP, ERL, PRUEF, AVSV, SPG, KMGER | 内阁会议记录、法令、贸易考试、社会保险、卫生计划、法院公告 |
完整的路由注册表位于
DOCUMENT_ROUTES(src/client.ts);未知前缀会回退到 Justiz 搜索。
ris_dokument_abschnitt — 文档章节
返回 RIS 文档查看器中已打开文档的一个章节。此工具供查看器小组件使用,不适合直接调用;要获取文档全文,请使用 ris_dokument。
此工具仅供应用使用(_meta.ui.visibility: ["app"]):遵循此标志的宿主会对模型隐藏此工具,并仅允许查看器小组件调用。它会尽可能从文档缓存中提供与 ris_dokument 生成的相同文本,因此查看器持有的偏移量对应的是同一文档。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
dokumentnummer | string | 当前打开文档的 RIS 文档编号 — 来自打开该文档的 ris_dokument 调用 |
url | string | 当前打开文档的直接 URL,适用于通过 URL 而非编号打开的文档 |
offset | number | 文档文本中的字符偏移量;0 表示返回第一个部分和大纲(默认值:0) |
dokumentnummer 和 url 至少需要提供一个。每个部分长度为 25,000 个字符。
输出(structuredContent):
| 字段 | 类型 | 描述 |
|---|---|---|
text | string | 所请求的文档文本部分 |
total_length | number | 完整文档文本的长度 — 比较多次调用的结果,以检测文档是否已重新获取以及偏移量是否发生变化 |
next_offset | number | null | 请求下一个部分的偏移量;如果已到文档末尾,则为 null |
outline | array | 文档的跳转目标。仅在 offset 为 0 时返回;文档没有标题时为空 |
dokumentnummer | string | 此部分所属文档的 RIS 文档编号(通过 URL 打开的文档不包含此字段) |
source_url | string | 文档文本所依据的 RIS URL |
ris_bezirke — 区级行政机关公告
搜索区级行政机关发布的公告。
注意: 仅适用于:Niederoesterreich、Oberoesterreich、Tirol、Vorarlberg、Burgenland、Steiermark。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
suchworte | string | 全文搜索 |
titel | string | 在标题中搜索 |
bundesland | string | 州名 |
bezirksverwaltungsbehoerde | string | 区级行政机关名称 |
kundmachungsnummer | string | 公告编号 |
kundmachungsdatum_von | string | 起始日期(YYYY-MM-DD) |
kundmachungsdatum_bis | string | 截止日期(YYYY-MM-DD) |
im_ris_seit | string | 最近添加:EinerWoche、ZweiWochen、EinemMonat、DreiMonaten、SechsMonaten、EinemJahr |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化负载预算,则会以次一档的大小返回(参见结果大小) |
response_format | string | “markdown”或“json” |
ris_gemeinden — 市镇法律
搜索市镇法律 — 地方条例和法规。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
suchworte | string | 全文搜索 |
titel | string | 在标题中搜索 |
bundesland | string | 州名 |
gemeinde | string | 市镇名称(例如,“Graz”) |
applikation | string | “Gr”(市镇法律,默认值)或“GrA”(官方公报) |
im_ris_seit | string | 最近添加 |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化负载预算,则会以次一档的大小返回(参见结果大小) |
response_format | string | “markdown”或“json” |
其他参数取决于所选应用。请参阅源代码中 Gr(市镇法律)和 GrA(官方公报)的专用参数。
ris_sonstige — 其他法律文集
搜索其他法律文集和专业数据库。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
applikation | string | 必填。 要搜索的集合(见下文) |
suchworte | string | 全文搜索 |
titel | string | 在标题中搜索 |
datum_von | string | 起始日期(YYYY-MM-DD) |
datum_bis | string | 截止日期(YYYY-MM-DD) |
im_ris_seit | string | 最近添加 |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小) |
response_format | string | "markdown" 或 "json" |
可用集合:
| 值 | 描述 |
|---|---|
Mrp | 内阁会议纪要(Ministerratsprotokolle) |
Erlaesse | 部委法令 |
Upts | 政党透明度报告 |
KmGer | 法院公告 |
Avsv | 社会保险法规 |
Avn | 兽医公告 |
Spg | 医疗结构规划 |
PruefGewO | 行业许可考试 |
每个集合都有其他专属参数。详情请参阅工具描述。
ris_history — 文档变更历史
跟踪 RIS 数据库中文档的创建、修改和删除。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
applikation | string | 必填。 应用类型(36 种选项——见下文) |
aenderungen_von | string | 起始变更日期(YYYY-MM-DD) |
aenderungen_bis | string | 截止变更日期(YYYY-MM-DD) |
include_deleted | boolean | 包含已删除的文档(默认值:false) |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小) |
response_format | string | "markdown" 或 "json" |
可用应用(36 种):
联邦法律:Bundesnormen、BgblAuth、BgblAlt、BgblPdf、RegV
州法律:Landesnormen、LgblAuth、Lgbl、LgblNO、Vbl、Gemeinderecht、GemeinderechtAuth
判例法:Justiz、Vfgh、Vwgh、Bvwg、Lvwg、Dsk、Gbk、Pvak、AsylGH
其他:Bvb、Mrp、Erlaesse、PruefGewO、Avsv、Spg、KmGer、Dok、Normenliste
历史数据(已于 2014-01-01 撤销管辖权的机构,仍跟踪变更历史):Verg、Upts、Uvs、Ubas、Umse、Bks
ris_verordnungen — 州条例公报
搜索州条例公报(Verordnungsblätter)。
注意: 目前仅提供蒂罗尔州的数据(自 2022 年 1 月起)。
输入:
| 参数 | 类型 | 描述 |
|---|---|---|
suchworte | string | 全文搜索 |
titel | string | 在标题中搜索 |
bundesland | string | 州名 |
kundmachungsnummer | string | 公告编号 |
kundmachungsdatum_von | string | 起始日期(YYYY-MM-DD) |
kundmachungsdatum_bis | string | 截止日期(YYYY-MM-DD) |
seite | number | 页码 |
limit | number | 每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小) |
response_format | string | "markdown" 或 "json" |
每个工具的文本块上限为 25,000 个字符。搜索工具的
structuredContent 有独立的 45,000 字符(序列化后)预算;如果某个
页面超出预算,则会以更小的下一档 RIS 页面大小(100 → 50 → 20 → 10)返回,
并在文本和载荷中附带 page、page_size、has_more、按该大小重写的
query 回显,以及德语 notice。请使用回显的 query.limit 和 query.seite
翻页。建议使用 limit: 20;广泛调查时适合用 50;只有命中内容较少时才会返回 100。
默认值针对 Claude Code 进行了校准:它会拒绝结构化载荷超过 25,000 个 token 的结果
(实测:58,659 个字符时被拒绝,46,311 个字符时被接受;低于该值预留的余量可应对
分词效果较差的内容);claude.ai 可以呈现大得多的载荷,无需预算。
客户端可接受更大结果的自托管用户,可以通过 RIS_STRUCTURED_CONTENT_BUDGET 环境变量
提高预算(正整数)。
开发
前置条件
- Node.js >= 20.19.0(Vite 7 小部件构建所需)
设置
git clone https://github.com/Honeyfield-Org/ris-mcp-ts.git
cd ris-mcp-ts
pnpm install
pnpm run build
脚本
| 脚本 | 说明 |
|---|---|
pnpm run dev | 启动并启用热重载(tsx) |
pnpm run build | 编译 TypeScript |
pnpm start | 运行已编译版本 |
pnpm test | 运行服务测试 |
pnpm run test:ui | 运行小部件测试(jsdom) |
pnpm run gen:ui | 将小部件包构建到 src/generated/(会在 dev/test/typecheck 前自动运行) |
pnpm run check | 类型检查 + lint + 格式检查 + 两套测试 |
pnpm run inspect | 启动 MCP Inspector 以进行手动测试 |
项目结构
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
├── widgets.ts # MCP Apps widget resource + tool metadata
├── tools/ # One file per tool handler
│ ├── index.ts
│ ├── bundesrecht.ts
│ ├── landesrecht.ts
│ ├── judikatur.ts
│ └── ...
└── __tests__/ # Unit and integration tests
ui/ # Widget sources (browser code, built by Vite)
├── trefferliste/ # The result-list widget
└── shared/ # Host bridge, shared states and theme
贡献
请参阅 CONTRIBUTING.md 了解指南。
许可证
基于奥地利联邦总理府(Bundeskanzleramt)提供的 Open Government Data API 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

