内容
<div align="center">
<h1>@cyanheads/ris-austria-mcp-server</h1>
<p><b>在每个层级搜索奥地利法律 — 合并后的联邦、州及市政规范,法院判决,官方公报,立法流程及部长命令 — 通过MCP从官方RIS获取。无密钥。STDIO或可流式HTTP。</b>
<div>9个工具 • 1个资源</div>
</p>
</div>
<div align="center">
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/ris-austria-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/ris-austria-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
</div>
<div align="center">
[](https://github.com/cyanheads/ris-austria-mcp-server/releases/latest/download/ris-austria-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=ris-austria-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvcmlzLWF1c3RyaWEtbWNwLXNlcnZlciJdfQ==) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22ris-austria-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fris-austria-mcp-server%22%5D%7D)
[](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
</div>
<div align="center">
**公共托管服务器:** [https://ris-austria.caseyjhand.com/mcp](https://ris-austria.caseyjhand.com/mcp)
</div>
---
[RIS](https://www.ris.bka.gv.at/)(Rechtsinformationssystem des Bundes)是奥地利政府的官方法律数据库:合并后的联邦、州和市政法律,各个奥地利法院和法庭的案例法,各个层级的官方公报,立法流程及部长命令。该服务器封装了无密钥RIS OGD REST API(v2.6,CC BY 4.0)以供MCP代理使用 — **整个** OGD应用表面,可追溯到1848年的Reichsgesetzblatt。它标记每个文档的约束状态,从不将非真实文本作为真实措辞呈现。
## 工具
九个工具按文档类别划分,加上一个确定性引文解析器、文档检索、变更订阅源和离线词汇表参考:
| 工具 | 描述 |
|:---|:---|
| `ris_search_legislation` | 搜索合并后的联邦、州和市政法律 — 每个§/Artikel/Anlage一个文档 — 过滤为给定日期(默认为今天)生效的版本。也提供精选法律的英文翻译。 |
| `ris_search_case_law` | 搜索奥地利案例法(Judikatur) — 每次调用一个法院或法庭 — VfGH、VwGH、普通法院、BVwG、LVwG、DSB、党务透明参议院等。 |
| `ris_search_gazette` | 浏览各个层级的发布记录 — 联邦(三个时代层级,追溯到1848年,自动路由)、州法律和法规公报、区和市 — 合规监控表面。 |
| `ris_search_drafts` | 搜索联邦立法流程:公共审查中的部长草案(Begutachtungsentwürfe)和政府法案(Regierungsvorlagen)。 |
| `ris_search_announcements` | 搜索部门官方公报和行政文件:社会保险通知、兽医通知、法院规则、贸易考试法规、健康结构计划、部长命令、部长会议纪要。 |
| `ris_lookup_citation` | 将一个奥地利法律引文(“§ 6 DSG”,“BGBl. I Nr. 165/1999”,“RGBl. Nr. 189/1902”,一个Geschäftszahl,“VfSlg 19.632/2012”)确定性地解析为其规范文档。 |
| `ris_get_document` | 以markdown/HTML/XML获取一个文档的全文,或其导出URL,带有约束状态标签和真实PDF(如果存在)。 |
| `ris_track_changes` | 每个应用的精确日期变更订阅源 — 每个窗口添加或更改的文档,包括删除。Delta-sync基元。 |
| `ris_list_reference` | 离线接地领域词汇 — 应用和覆盖窗口、法院代码、联邦州、判决类型、部委、区当局、公报时代和部分、引文格式、搜索语法。 |
### `ris_search_legislation`
搜索合并后的法律(BrKons联邦,LrKons州,Gr市政),默认情况下正确处理生效日期。
- 带有RIS布尔语法的全文`query`(`UND`/`ODER`/`NICHT`或`AND`/`OR`/`NOT`,括号,引用短语)和`title`匹配标题、简称或缩写(“DSG”,“ABGB”)
- `scope`路由联邦或九个联邦州之一;`municipality`将州范围缩小到市政法律(精选规范,六个联邦州);`language: english`提供精选英文翻译的Erv集合
- **`in_force_as_of`默认为今天** — 省略日期上游会静默搜索所有历史版本;`include_all_versions`是显式选择,应用的日期在每个响应中回声
- 强制窗口过滤器(`entered_force_from/to`,`left_force_from/to`)跟踪规定进入或离开强制在日期范围内 — 新法律和废除监控
- 章节范围过滤(`section_from`/`section_to`/`section_type` — §,Artikel,Anlage),法律层级分组通过`law_id`(Gesetzesnummer),Systematik `index`,`changed_since`窗口
- 每个文档的输出:章节标签、生效日期、ELI、解析的CELEX引用(欧盟转置钩子)和导出URL(XML/HTML/PDF/RTF)
---
### `ris_search_case_law`
搜索奥地利法院和法庭的判决和摘要 — 17个应用。
- 每次调用一个应用程序(`court`,必填):`vfgh`,`vwgh`,`justiz`,`bvwg`,`lvwg`,`dsk`,`upts`(党务透明参议院),以及十个历史/专业法庭 — 跨法院研究扩展一个调用每个法院
- 按引用的规定(`norm` — “DSG §1”,“DSGVO Art32”),确切的案件编号(`case_number`,Geschäftszahl),判决日期范围,判决类型(Erkenntnis/Beschluss/…),和全文查询过滤
- `decision_type`目标摘要(Rechtssätze),全文判决文本,或两者
- 法院条件过滤器:`issuing_body`(dsk/dok/pvak/verg),`court_name`,`legal_area`,`subject_area`(justiz — “Datenschutzrecht”,“Insolvenzrecht”),`state`(lvwg/uvs),`collection_number`(VfSlg/VwSlg引用),`party`(upts),委员会/参议院/歧视理由(gbk),媒体法规(bks)
- 每个判决的输出:案件编号、判决日期、ECLI、引用的规范、关键词、指导原则(Leitsatz)在摘要文档上,以及摘要/判决URL
---
### `ris_search_gazette`
浏览政府各个层级的发布记录 — `ris_lookup_citation`(点查找)无法表达的内容。
- `scope`:联邦、九个联邦州之一、`district`(Bezirksverwaltungsbehörden)或`municipal`(真实的市政发布)
- **联邦历史是一个逻辑系列,跨三个时代层级自动路由**:BgblAuth(2004+,真实),BgblPdf(Staats- und Bundesgesetzblatt 1945–2003),BgblAlt(Reichs-, Staats- und Bundesgesetzblatt 1848–1940,元数据+ÖNB托管扫描)— 附带通知,说明提供哪个层级
- 按发布时间范围、公报`part`(BGBl. I/II/III,或`pre_1997`表示无分时代)、文档`type`、发布部、区当局或市政过滤
- 州范围默认提供真实的Landesgesetzblätter;`series: ordinance_gazette`切换到Verordnungsblätter,`include_non_authentic`添加历史非真实公报
- 通过公报编号进行点查找(“BGBl. II Nr. 171/2026”或“171/2026”)
- 每个记录都带有约束标签(`authentic`,`historical_record`或`consolidated_informational`)和amtssigniert PDF URL(如果存在);元数据-仅1848–1940公报链接到其ÖNB ALEX扫描
---
### `ris_search_drafts`
关注联邦法律在成为法律之前。
- `stage: review_drafts` — 公共审查中的部长草案(Begutachtungsentwürfe),包括`in_review_on`通过`“当前正在审查”`
- `stage: government_bills` —部长会议通过的法案(Regierungsvorlagen,2004+),按通过日期过滤
- `ministry`接受缩写(“BMF”)— 服务器扩展到RIS的确切名称
- 输出包括审查截止日期和部长会议通过日期
---
### `ris_search_announcements`
部门官方公报和行政文件 — 七个集合,其中五个是具有法律约束力的真实出版物。
- `collection`:`social_insurance`(Avsv),`veterinary`(Avn),`court_rules`(KmGer),`trade_exam_rules`(PruefGewO),`health_structure_plans`(Spg — ÖSG/RSG),`ministerial_decrees`(Erlässe),`council_minutes`(Ministerratsprotokolle)
- 集合感知过滤器:发行号码、发行者(保险承运商、部委)、引用的规范(“引用DSG的法令”),所选集合的生效日期、健康计划的计划类型/州、部长会议纪要的会议次数/立法
- 每个集合的约束标签:`authentic`,`administrative_directive`(法令约束行政部门,而非公民),或`preparatory`(部长会议纪要)
---
### `ris_lookup_citation`
基于引文的解析 — 奥地利法律工作的实际开始。
- 解析并路由四种引文类型:规范引文(“§ 6 DSG”,“Art 10 B-VG”),公报编号跨越所有三个联邦时代和LGBl(“BGBl. I Nr. 165/1999”,“BGBl. Nr. 194/1961”,“RGBl. Nr. 189/1902”),案件编号(“Ra 2019/22/0184”,“2025-0.934.677”,“6Ob56/25k”),和集合编号(“VfSlg 19.632/2012”)
- 确定性上游过滤器(章节+标题,每个时代的参数,Geschäftszahl,Sammlungsnummer)— 无关键词搜索模糊性
- 当没有任何解析结果时,以结构化指导返回`found: false`,而不是抛出异常
- `court`和`state`提示直接解决模糊格式
---
### `ris_get_document`
读取和导出单个文档。
- 通过`document_number` + `application`(来自任何搜索/查找结果)或传递的`ris.bka.gv.at`文档URL(主机和路径允许列入白名单)寻址文档
- `format`:`markdown`(默认,删除模板),原始`html`,RIS `xml`,或`urls_only`
- 每个响应的约束状态:`authentic`(带有amtssigniert PDF URL),`consolidated_informational`,`historical_record`,`decision`,`preparatory`,`administrative_directive`,或`translation` — 非真实文本从不作为约束文本呈现
- 格式可用性明确:发布仅签名PDF(区/市发布,法院规则)或仅扫描件(1848–1940公报,ÖNB托管)的应用程序返回`format_unavailable`通知和可用URL,而不是失败
- 超大markdown返回可检索的§/Artikel/Anlage章节大纲(`kind: outline`)而不是截断 — 重新调用带有`sections:[…]`以提取所需章节
- 返回内容,而不是新鲜元数据 — 上游API没有按编号搜索文档,因此文档编号来自先前的搜索或查找结果
---
### `ris_track_changes`
每个应用的精确日期变更订阅源(RIS历史控制器)。
- `application` + `changed_from`/`changed_to`:窗口中添加或更改的每个文档 — 典型两周的联邦法律窗口中有1400+更改
- `include_deleted`使删除可见 — 唯一能做到这一点的RIS表面
- 粗粒度替代:搜索工具的`changed_since`间隔过滤器
## 资源
| 类型 | 名称 | 描述 |
|:---|:---|:---|
| 资源 | `ris://document/{application}/{documentNumber}` | 一个RIS文档的Markdown文本 — 可注入的`ris_get_document`双胞胎 |
所有资源数据也可通过工具访问 — 无资源支持的客户端使用`ris_get_document`。
## 功能
基于[`@cyanheads/mcp-ts-core`](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)构建:
- 声明式工具和资源定义 — 每个基元的单个文件,框架处理注册和验证
- 统一错误处理 — 处理程序抛出,框架捕获,分类和格式化
- 可插拔身份验证(`none`,`jwt`,`oauth`)
- 带有可选OpenTelemetry跟踪的结构化日志记录
- STDIO和可流式HTTP传输
RIS特定:
- **完整的RIS OGD表面** — 跨越每个控制器的所有39个应用程序:合并后的法律(联邦/州/市政),四个政府层级的真实公报,三个联邦公报时代层级追溯到1848年,17个法院/法庭应用程序,立法流程,部门公报,部长命令,英文翻译和每个应用程序的变更订阅源
- 严格的参数允许列表 — RIS静默忽略未知查询参数(输入错误返回看似合理但未过滤的结果),因此仅发送实时确认的拼写
- RIS的JSON序列化XML信封的规范化程序:对象或数组强制转换,带内错误检测,六个控制器元数据类,`<br/>`清理,CELEX引用解析,部委缩写扩展
- 奥地利法律术语(Geschäftszahl,Rechtssatz,Bundesgesetzblatt)作为领域词汇保留,并在描述中注明
代理友好输出:
- 没有死胡同 — 错误恢复提示,零命中通知,格式不可用通知和`found: false`指导每个命名具体下一步(`ris_list_reference`主题,正确的搜索工具,`ris_lookup_citation`),而不是一个裸“检查您的输入”
- 零命中是成功加上一个组成的通知,而不是错误;条件参数滥用(使用错误法院的法院特定过滤器,联邦范围之外的部分,错误集合上的集合过滤器,错误寻址)在上游调用之前在本地捕获
- 应用的过滤器回声 — 默认的`in_force_as_of`从未对调用代理不可见
- 结构化无法解析的结果(`found: false` + 指导)而不是在引文查找时抛出
- 上游模式验证消息传递 — RIS枚举有效值,允许代理自我纠正
- 超大文档返回可检索的章节大纲,而不是沉默切割 — 调用具有选定的`sections`以进行选择性检索
## 本地化
目前,工具和参数描述仅支持英文。正在计划德语(`de-AT`)描述,等待框架中的本地化支持([cyanheads/mcp-ts-core#259](https://github.com/cyanheads/mcp-ts-core/issues/259));英文界面将保持默认和备用。
## 快速入门
顶部的一键式徽章(Claude Desktop,Cursor,VS Code)是最快的路径。要手动配置客户端,服务器可以直接从npm运行 — 无需克隆或构建。
### 公共托管实例
公共实例可在 `https://ris-austria.caseyjhand.com/mcp` — 无需安装。任何MCP客户端都可以通过Streamable HTTP指向它:
```json
{
"mcpServers": {
"ris-austria-mcp-server": {
"type": "streamable-http",
"url": "https://ris-austria.caseyjhand.com/mcp"
}
}
}
```
### 先决条件
- [Bun v1.3](https://bun.sh/) 或更高版本,或 Node.js v24+(需要 `npx`/`bunx`)
- 无API密钥 — RIS OGD API是无密钥的
### 从npm安装(推荐)
将服务器添加到您的MCP客户端配置中:
```json
{
"mcpServers": {
"ris-austria-mcp-server": {
"command": "npx",
"args": ["-y", "@cyanheads/ris-austria-mcp-server"]
}
}
}
```
如果您更喜欢Bun,可以使用 `bunx @cyanheads/ris-austria-mcp-server`。在`"env"`键下添加任何[配置](#configuration)变量。
### 从源码安装
用于本地开发或运行固定版本:
1. **克隆仓库:**
```sh
git clone https://github.com/cyanheads/ris-austria-mcp-server.git
```
2. **进入目录:**
```sh
cd ris-austria-mcp-server
```
3. **安装依赖并构建:**
```sh
bun install
bun run rebuild
```
4. **添加到您的MCP客户端配置文件:**
```json
{
"mcpServers": {
"ris-austria-mcp-server": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/ris-austria-mcp-server/dist/index.js"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
```
对于Streamable HTTP,设置传输并启动服务器:
```sh
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# 服务器监听 http://localhost:3010/mcp
```
## 配置
| 变量 | 描述 | 默认值 |
|:---|:---|:---|
| `RIS_API_BASE_URL` | RIS OGD REST API 基地址。 | `https://data.bka.gv.at/ris/api/v2.6` |
| `RIS_CONTENT_BASE_URL` | 文档内容托管地址(也是 `document_url` 输入的允许列表地址)。 | `https://www.ris.bka.gv.at` |
| `RIS_CONTACT` | 追加到 User-Agent 的联系字符串(RIS 礼仪要求集成者具有可识别性)。 | 无 |
| `MCP_TRANSPORT_TYPE` | 传输方式:`stdio` 或 `http`。 | `stdio` |
| `MCP_HTTP_PORT` | HTTP 服务器端口。 | `3010` |
| `MCP_AUTH_MODE` | 身份验证方式:`none`、`jwt` 或 `oauth`。 | `none` |
| `MCP_LOG_LEVEL` | 日志级别(`debug`、`info`、`warning`、`error` 等)。 | `info` |
| `STORAGE_PROVIDER_TYPE` | 存储后端。 | `in-memory` |
| `OTEL_ENABLED` | 启用 OpenTelemetry 检测。 | `false` |
参见 [`.env.example`](./.env.example) 获取完整的可选覆盖列表。
## 运行服务器
### 本地开发
- **构建和运行:**
```sh
# 一次性构建
bun run rebuild
# 运行已构建的服务器
bun run start:stdio
# 或
bun run start:http
```
- **运行检查和测试:**
```sh
bun run devcheck # 校验、格式化、类型检查、安全检查
bun run test # Vitest 测试套件
bun run lint:mcp # 验证 MCP 定义是否符合规范
```
## 项目结构
| 目录 | 用途 |
|:---|:---|
| `src/index.ts` | `createApp()` 入口点 — 注册工具和资源。 |
| `src/mcp-server/tools` | 工具定义(`*.tool.ts`)。 |
| `src/mcp-server/resources` | 资源定义(`*.resource.ts`)。 |
| `docs/design.md` | 已确定的 v1 设计 — 工具接口、服务规范、实时确认的 RIS API 参考。 |
| `tests/` | 单元测试和集成测试,镜像 `src/` 目录。 |
| `skills/` | 从 `@cyanheads/mcp-ts-core` 同步的框架技能。 |
## 开发指南
参见 [`CLAUDE.md`](./CLAUDE.md) / [`AGENTS.md`](./AGENTS.md) 获取开发指南和架构规则。简要版:
- 处理程序抛出异常,框架捕获 — 工具逻辑中不使用 `try/catch`
- 使用 `ctx.log` 进行请求范围的日志记录,使用 `ctx.state` 进行租户范围的存储
- 通过 `src/index.ts` 中的 `createApp()` 注册新的工具和资源
- 封装 RIS API:验证原始数据 → 标准化为领域类型 → 返回输出模式;绝不伪造缺失字段
## 许可证
Apache-2.0 — 参见 [LICENSE](./LICENSE) 获取详细信息。
RIS OGD 数据采用 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/deed.zh) (署名:RIS,奥地利联邦总理办公室)。基础法律文本是无版权保护的官方作品。只有真实的、具有官方印章的公报措辞才具有法律约束力 — 统一的 RIS 文本仅供参考。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器