mcpField
R
ris

ris

本地服务
github.com/Honeyfield-Org法律与政务201 天前更新

关于 ris

RIS MCP 服务将奥地利官方法律数据库接入 AI 助手,适合法律资料检索与研究。它覆盖联邦及州法律、法院裁决和政府公报,并支持检索和全文获取。

主要功能

  1. 01检索联邦及州法律
  2. 02搜索多类法院裁决
  3. 03查询联邦与州公报
  4. 04获取法律文件全文
  5. 05跟踪文件变更历史
  6. 06Markdown 或 JSON 输出

适用场景

  1. 01查找奥地利法律条文
  2. 02研究特定法院的裁决
  3. 03检索某州的法规
  4. 04获取指定文件的完整文本

MCP 相关

该 MCP 服务将 RIS 官方 API 封装为 13 种工具,供 MCP 客户端检索法律资料并获取文件全文;无需 API 密钥。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"honeyfield-org-ris": {
"command": "npx",
"args": [
"-y",
"ris-mcp-ts"
]
}
}
}
启动命令npx -y ris-mcp-ts

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

安装包
npmris-mcp-ts1.8.3

工具

13

收录的工具列表 · 更新于 今天

参数类型必填说明
limitany否每页结果数:10、20、50 或 100(默认:20)。每条结果约消耗 1k 个字符的结构化负载,因此浏览时建议使用 20,广泛调查时使用 50;如果一页超出负载预算,系统会改用更小的页面大小发送,并通过 page_size、query.limit 和 notice 说明。
seiteinteger否页码(默认值:1)
titelstring否在法律标题中搜索(例如,"ABGB"、"Strafgesetzbuch")
paragraphstring否要搜索的条款编号(例如,"1295" 表示 §1295,"7" 表示 Art 7)
suchwortestring否广泛全文搜索词(例如,"Mietrecht"、"Schadenersatz")。结果按法律标题的字母顺序排列,而非按相关性排列;已知法律或条款时,优先使用 "titel" 和/或 "paragraph"。
applikationenum否数据源 - "BrKons"(整合版,默认)、"Begut"(草案)、"BgblAuth"(公报)、"Erv"(英文译文)BrKons | Begut | BgblAuth | Erv
fassung_vomstring否截至此日期的整合版本(YYYY-MM-DD)——检索该法律在当天有效的文本。不支持 "Erv"。
abschnitt_typenum否"paragraph" 所指的条款类型:"Paragraph"(默认)、"Artikel"(如 B-VG 这类按条文编号编排的法律)或 "Anlage"(附录)。"Art 7 B-VG" 需要使用 "Artikel"。Paragraph | Artikel | Anlage
response_formatenum否“markdown”(默认)或 “json”markdown | json

详细介绍

RIS MCP 服务

CI npm version License: MIT Node.js MCP MCP Registry

这是一个 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 扩展的宿主会将搜索结果显示为交互式列表——无需重新输入搜索内容即可浏览结果页、在浏览器中打开文档,或一键请求其全文。小组件会跟随宿主的浅色或深色主题;下方截图展示了两种主题。

RIS 小组件在 Claude 中运行:顶部是显示“ris-mcp / ris_bundesrecht”的连接器行,下方是“Verbrauchergewährleistungsgesetz”的搜索结果列表,共 40 条,展示了前几条,每条均标有“Bundesrecht”。同一个 RIS 小组件在 ChatGPT 中运行:显示“Verbrauchergewährleistungsgesetz”的搜索结果列表,共 40 条,展示了前几条;列表上方是 ChatGPT 自带的输入框,提示文字为“ChatGPT fragen”。
在 Claude 中在 ChatGPT 中

浅色主题下对“Verjährung”的判例法搜索:共 7,466 条结果;展开的结果中显示法院、判决日期和案号,提供“Im RIS öffnen”“PDF”和“Volltext in den Chat”操作,底部有分页控件。
展开的详细视图,浅色主题——元数据、三个操作和分页

### 示例提示词

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 等。

输入:

参数类型描述
suchwortestring全文搜索(例如,“Mietrecht”、“Schadenersatz”)
titelstring在法律标题中搜索(例如,“ABGB”、“Strafgesetzbuch”)
paragraphstring条款编号(例如,§1295 对应“1295”,“Art 7”对应“7”)
abschnitt_typstringparagraph 所指条款的类型:“Paragraph”(默认)、“Artikel”(适用于 B-VG 等基于条款的法律)、“Anlage”(附录)
applikationstring“BrKons”(整合版,默认)、“Begut”(草案)、“BgblAuth”(公报)、“Erv”(英文译本)
fassung_vomstring历史版本日期(YYYY-MM-DD)
seitenumber页码(默认:1)
limitnumber每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个较小的数量返回(见结果大小)
response_formatstring“markdown”(默认)或“json”

所有参数均为可选。应至少提供一个搜索参数(suchworte、titel 或 paragraph)。

注意: applikation="Erv"(英文译本)在内部使用不同的参数词汇(SearchTerms/Title),且不支持 paragraph/abschnitt_typ 或 fassung_vom。

ris_landesrecht — 州/省法律

搜索奥地利九个联邦州的法律。

输入:

参数类型描述
suchwortestring全文搜索
titelstring在法律标题中搜索
bundeslandstring联邦州:Wien、Niederoesterreich、Oberoesterreich、Salzburg、Tirol、Vorarlberg、Kaernten、Steiermark、Burgenland
paragraphstring条款编号(例如,§1 对应“1”,“Art 7”对应“7”)
abschnitt_typstringparagraph 所指条款的类型:“Paragraph”(默认)、“Artikel”、“Anlage”
fassung_vomstring历史版本日期(YYYY-MM-DD)
gesetzesnummerstring特定州法律的确切法律编号(Gesetzesnummer)
applikationstring“LrKons”(整合版,默认)
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个较小的数量返回(见结果大小)
response_formatstring“markdown”或“json”
ris_judikatur — 法院判决

搜索奥地利法院的判决。

输入:

参数类型描述
suchwortestring在判决中进行全文搜索
gerichtsbarkeitstring要搜索的法院系统 / 数据集 — RIS 的“Applikation”(见下文;默认为 "Justiz")
dokumenttypstring"rechtssatz"(仅判决要旨)、"entscheidungstext"(仅全文)或 "beide"(两者,默认)
gerichtstring管辖范围内的具体法院(例如 "OGH"、"OLG Wien");适用于 gerichtsbarkeit="Justiz"
rechtsgebietstring宽泛的法律领域:"Zivilrecht" 或 "Strafrecht"(Justiz)
fachgebietstringOGH 专业领域(例如 "Arbeitsrecht");适用于 Justiz,且 dokumenttyp 需为 "entscheidungstext"/"beide"
entscheidungsartstring判决类型(例如 "Erkenntnis"、"Beschluss");允许的值因管辖范围而异
sammlungsnummerstring汇编编号:VfSlg(Vfgh)或 VwSlg(Vwgh)
normstring法律规范(例如 "1319a ABGB")
geschaeftszahlstring案号(例如 "5Ob234/20b")
entscheidungsdatum_vonstring判决日期起始(YYYY-MM-DD)
entscheidungsdatum_bisstring判决日期截至(YYYY-MM-DD)
sortierungstring按判决日期排序:"datum_auf"(从最早到最新)或 "datum_ab"(从最新到最早)
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认:20)。建议使用 20;若页面超出结构化负载预算,则会按下一个更小的数量返回(参见结果大小)
response_formatstring"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)——联邦立法的官方出版物。

输入:

参数类型描述
bgblnummerstring公报编号(例如 "120")
teilstring"1"(I = 法律)、"2"(II = 条例)、"3"(III = 条约)
jahrgangstring年份(例如 "2023")
suchwortestring全文搜索
titelstring在标题中搜索
applikationstring"BgblAuth"(2004 年起的正式版本,默认)、"BgblPdf"(PDF)、"BgblAlt"(1945–2003 年)
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认:20)。建议使用 20;若页面超出结构化负载预算,则会按下一个更小的数量返回(参见结果大小)
response_formatstring"markdown" 或 "json"
ris_landesgesetzblatt — 州法律公报

搜索州法律公报(LGBl)——州立法的官方出版物。

输入:

参数类型描述
lgblnummerstring公报编号(例如,“50”)
jahrgangstring年份(例如,“2023”)
bundeslandstring省份名称
suchwortestring全文搜索
titelstring在标题中搜索
applikationstring"LgblAuth"(权威版本,默认)、"Lgbl"(通用)、"LgblNO"(下奥地利)
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小)
response_formatstring"markdown" 或 "json"
ris_regierungsvorlagen — 政府法案

搜索提交给议会的政府法案,即立法草案。

输入:

参数类型描述
suchwortestring全文搜索
titelstring在标题中搜索
beschlussdatum_vonstring批准日期起(YYYY-MM-DD)
beschlussdatum_bisstring批准日期止(YYYY-MM-DD)
einbringende_stellestring提交法案的部委(例如,BKA、BMF、BMJ、BMK)
im_ris_seitstring最近添加:EinerWoche、ZweiWochen、EinemMonat、DreiMonaten、SechsMonaten、EinemJahr
sortierung_richtungstring升序或降序
sortierung_spaltestringKurztitel、EinbringendeStelle、Beschlussdatum
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认:20)。建议使用 20;如果页面超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小)
response_formatstring"markdown" 或 "json"
ris_dokument — 获取完整文档

通过文档 ID 或 URL 获取法律文档全文。采用双重策略:先直接访问 URL,失败后再使用搜索 API。

输入:

参数类型描述
dokumentnummerstringRIS 文档编号(例如,“NOR40052761”)
urlstring文档内容的直接 URL
response_formatstring"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 生成的相同文本,因此查看器持有的偏移量对应的是同一文档。

输入:

参数类型描述
dokumentnummerstring当前打开文档的 RIS 文档编号 — 来自打开该文档的 ris_dokument 调用
urlstring当前打开文档的直接 URL,适用于通过 URL 而非编号打开的文档
offsetnumber文档文本中的字符偏移量;0 表示返回第一个部分和大纲(默认值:0)

dokumentnummer 和 url 至少需要提供一个。每个部分长度为 25,000 个字符。

输出(structuredContent):

字段类型描述
textstring所请求的文档文本部分
total_lengthnumber完整文档文本的长度 — 比较多次调用的结果,以检测文档是否已重新获取以及偏移量是否发生变化
next_offsetnumber | null请求下一个部分的偏移量;如果已到文档末尾,则为 null
outlinearray文档的跳转目标。仅在 offset 为 0 时返回;文档没有标题时为空
dokumentnummerstring此部分所属文档的 RIS 文档编号(通过 URL 打开的文档不包含此字段)
source_urlstring文档文本所依据的 RIS URL
ris_bezirke — 区级行政机关公告

搜索区级行政机关发布的公告。

注意: 仅适用于:Niederoesterreich、Oberoesterreich、Tirol、Vorarlberg、Burgenland、Steiermark。

输入:

参数类型描述
suchwortestring全文搜索
titelstring在标题中搜索
bundeslandstring州名
bezirksverwaltungsbehoerdestring区级行政机关名称
kundmachungsnummerstring公告编号
kundmachungsdatum_vonstring起始日期(YYYY-MM-DD)
kundmachungsdatum_bisstring截止日期(YYYY-MM-DD)
im_ris_seitstring最近添加:EinerWoche、ZweiWochen、EinemMonat、DreiMonaten、SechsMonaten、EinemJahr
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化负载预算,则会以次一档的大小返回(参见结果大小)
response_formatstring“markdown”或“json”
ris_gemeinden — 市镇法律

搜索市镇法律 — 地方条例和法规。

输入:

参数类型描述
suchwortestring全文搜索
titelstring在标题中搜索
bundeslandstring州名
gemeindestring市镇名称(例如,“Graz”)
applikationstring“Gr”(市镇法律,默认值)或“GrA”(官方公报)
im_ris_seitstring最近添加
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化负载预算,则会以次一档的大小返回(参见结果大小)
response_formatstring“markdown”或“json”

其他参数取决于所选应用。请参阅源代码中 Gr(市镇法律)和 GrA(官方公报)的专用参数。

ris_sonstige — 其他法律文集

搜索其他法律文集和专业数据库。

输入:

参数类型描述
applikationstring必填。 要搜索的集合(见下文)
suchwortestring全文搜索
titelstring在标题中搜索
datum_vonstring起始日期(YYYY-MM-DD)
datum_bisstring截止日期(YYYY-MM-DD)
im_ris_seitstring最近添加
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小)
response_formatstring"markdown" 或 "json"

可用集合:

值描述
Mrp内阁会议纪要(Ministerratsprotokolle)
Erlaesse部委法令
Upts政党透明度报告
KmGer法院公告
Avsv社会保险法规
Avn兽医公告
Spg医疗结构规划
PruefGewO行业许可考试

每个集合都有其他专属参数。详情请参阅工具描述。

ris_history — 文档变更历史

跟踪 RIS 数据库中文档的创建、修改和删除。

输入:

参数类型描述
applikationstring必填。 应用类型(36 种选项——见下文)
aenderungen_vonstring起始变更日期(YYYY-MM-DD)
aenderungen_bisstring截止变更日期(YYYY-MM-DD)
include_deletedboolean包含已删除的文档(默认值:false)
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小)
response_formatstring"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 月起)。

输入:

参数类型描述
suchwortestring全文搜索
titelstring在标题中搜索
bundeslandstring州名
kundmachungsnummerstring公告编号
kundmachungsdatum_vonstring起始日期(YYYY-MM-DD)
kundmachungsdatum_bisstring截止日期(YYYY-MM-DD)
seitenumber页码
limitnumber每页结果数:10、20、50、100(默认值:20)。建议使用 20;如果某页超出结构化载荷预算,则会按下一个更小的数量返回(参见结果大小)
response_formatstring"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 了解指南。

许可证

MIT


基于奥地利联邦总理府(Bundeskanzleramt)提供的 Open Government Data API 构建。

评论

支持 Markdown

第一次接触 MCP?

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

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