关于 OpenTK Model Context Protocol Server
OpenTK MCP Server 是荷兰议会数据(Tweede Kamer)的 MCP 服务,基于 OpenTK 项目构建。它面向需要检索和分析议会文件、活动及议员信息的研究人员与用户,让 AI 助手能够通过标准接口访问这些数据。
主要功能
- 01搜索议会文件,支持引号、NOT、OR 和 NEAR 运算符
- 02查询议员信息与委员会成员身份
- 03读取文件全文并支持分段阅读
- 04通过 NLP 分析文件相关性、关键词与主题
适用场景
- 01比较不同政党在 AI 政策上的议会表态
- 02分析近六个月的气候政策辩论及各党立场
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端提供 17 个工具,用于搜索、读取和分析荷兰议会数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
17收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | number | 否 | 分页结果的页码(默认值:1)。每页包含 10 份文件。 |
详细介绍
OpenTK Model Context Protocol 服务
重要归属说明:此 MCP 服务是基于出色的 OpenTK 项目 构建的封装,该项目由 Bert Hubert 创建。OpenTK 项目通过易用的界面,为访问荷兰议会数据提供了前所未有的便利。欢迎阅读 Bert 的文章,进一步了解该项目:Welkom bij OpenTK。底层数据访问和处理方面的所有功劳都应归于 Bert Hubert,以及他对开放政府数据的贡献。
通过标准化接口,连接大模型与荷兰议会数据。此 MCP 服务可访问荷兰众议院的议会文件、辩论记录和议员信息。
真实场景中的自然语言交互示例
示例 1:比较各政党在 AI 政策上的立场
用户查询:“比较荷兰众议院中反对党 PvdA、GroenLinks 和 Volt 与执政党 BBB 在 AI 领域的活动,它们近期可以共同采取哪些行动,既符合它们过去一年所展现的立场和观点?请使用 OpenTK 的来源。”
示例 2:研究关于气候政策的议会讨论
用户查询:“我想分析荷兰近期关于气候政策和减排目标的议会辩论。你能帮我找出过去六个月的主要讨论,以及不同政党所持的主要立场吗?”
示例 3:查询特定议员的投票记录
用户查询:“议员 Pieter Omtzigt 在医疗改革立法方面的投票记录如何?他的立场与其他独立议员有何不同?他是否就此议题提出过任何动议?”
示例 4:查找近期住房立法进展
用户查询:“过去一年中,关于经济适用住房立法的议会文件和辩论中,最重要的有哪些?我尤其关注应对租房市场危机的提案。”
示例 5:高效筛选多份文件(新增 - 智能分析)
用户查询:“我找到 15 份上个月关于气候政策的文件。你能快速找出与可再生能源补贴和风能立法最相关的 3 份文件吗?不用通读所有文件。”
示例 6:提取议会文件的关键主题(新增 - 智能分析)
用户查询:“文件 2024D39058 提到了哪些主要主题、关键词和政党?我想在细读全文前了解它的内容。”
示例 7:查找具有特定委员会成员身份的议员
用户查询:“哪些议员目前同时在财政委员会和经济事务委员会任职?他们分别代表哪些政党?他们最近是否提交过任何联合倡议?”
示例 8:查找数字安全领域即将开展的议会活动
用户查询:“下个月是否计划召开关于网络安全和数字基础设施的委员会会议或辩论?哪些部长将参与?会议或辩论将涉及哪些具体议题?”
项目概念
OpenTK 项目是一个模型上下文协议(MCP)服务,通过标准化接口提供荷兰议会数据访问。它是大模型(LLM)与荷兰议会信息系统之间的桥梁,使 AI 助手能够搜索、检索和分析议会文件、辩论及议员信息。
该服务使用 @modelcontextprotocol/sdk 实现 MCP 规范,从而支持 AI 模型与外部数据源之间的结构化通信。OpenTK 通过定义完善的工具和端点公开议会数据,使 AI 助手能够:
- 使用复杂查询搜索议会文件
- 获取议员信息
- 以多种格式检索官方文件,并读取文件的完整内容
- 分析议会活动和议事流程
- 跟踪立法案件和政府承诺
- 在加载完整内容之前,使用 NLP 智能分析文件相关性(v1.0.16 新增)
- 提取关键词、实体和主题,以便高效筛选文件(v1.0.16 新增)
该项目使用 Bert Hubert 的 tkconv 服务作为主要数据源,其 API 比荷兰议会官方 API 更易于访问。
功能
核心议会数据访问
- 使用高级查询功能搜索议会文件(支持引号、NOT、OR、NEAR 运算符)
- 获取全面的议员信息和委员会成员资格
- 检索完整文件内容(PDF、Word),并进行智能分块
- 跟踪立法案件、政府活动和投票结果
- 实时访问议会会议记录和即将开展的活动
智能文件分析(v1.0.16 新增)🎯
- NLP 驱动的相关性分析:在加载完整内容之前智能分析文件
- TF-IDF 关键词提取:识别任意文件中最重要的 10–15 个术语
- 针对荷兰语优化的实体识别:自动检测人物(议员、部长)、政党(VVD、PVV、CDA、D66 等)和组织
- 主题分类:将文件划分到 10 个主要政治主题(气候、经济、医疗、教育等)
- 相关性评分:根据特定搜索词对文件进行相关性排序(0–100 分)
- 高效上下文筛选:评估多个文件时,可将上下文窗口用量减少 80–90%
高级文件导航
- 使用模糊匹配查找特定人物的出现位置
- 使用模糊匹配查找政党提及内容
- 使用字符偏移量高效浏览大型文件
- 支持分页的顺序阅读
可用工具
OpenTK 提供 17 个专用工具,用于访问荷兰议会数据:
概览与发现
get_overview:全面概览近期议会活动和议员生日(分页)birthdays_today:列出今天过生日的议员list_persons:当前议员完整名录及其政党归属
搜索与筛选
search_tk:使用高级查询语法搜索所有议会数据search_tk_filtered:在特定类别(Document、Activiteit、Zaak)中搜索search_by_category:搜索特定文件类型(质询、动议、全部)
文件智能分析(新增)🎯
analyze_document_relevance:使用 NLP 分析文件,提供关键词提取、实体识别和相关性评分get_document_content:检索文件内容(PDF/DOCX),支持三种阅读模式(定向、顺序、完整)find_person_in_document:使用模糊匹配查找文件中某个人物的所有出现位置find_party_in_document:查找文件中某个政党的所有出现位置
文档元数据
get_document_details:获取文档的结构化元数据get_document_links:将文档 URL 转换为可点击的 Markdown 链接
议会架构
get_committees:列出所有议会委员会get_committee_details:获取特定委员会的详细信息
活动与投票
get_upcoming_activities:查看即将举行的议会辩论和会议get_voting_results:查看近期投票结果及各党派立场
媒体
get_photo:获取官方议员肖像照片
安装
1. 使用 NPM 包快速开始(推荐)
最快的入门方式是使用已发布的 npm 包:
npx @r-huijts/opentk-mcp
2. 在 Claude Desktop 中使用 NPM 包
更新 Claude 配置文件(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"opentk": {
"command": "npx",
"args": [
"-y",
"@r-huijts/opentk-mcp"
]
}
}
}
其他配置:
用于 MultiServerMCPClient(Python):
mcp_client = MultiServerMCPClient({
"opentk": {
"command": "npx",
"args": ["-y", "@r-huijts/opentk-mcp"],
"transport": "stdio",
}
})
3. 从源代码开始(开发)
如果你想修改代码或参与开发:
克隆代码仓库:
git clone https://github.com/r-huijts/opentk-mcp.git
cd opentk-mcp
安装依赖项:
npm install
构建项目:
npm run build
启动服务:
npm start
为本地开发配置 Claude Desktop:
更新 Claude 配置文件:
{
"mcpServers": {
"opentk-local": {
"command": "node",
"args": [
"/absolute/path/to/your/opentk-mcp/dist/index.js"
]
}
}
}
请将 /absolute/path/to/your/opentk-mcp/ 替换为实际的安装路径。
4. 发布(维护者适用)
要发布新版作用域包:
npm run build
npm publish --access=public
注意:作用域包需要使用 --access=public 标志才能公开发布。
搜索功能
搜索功能尤其精细,支持:
- 简单关键词搜索:
kunstmatige intelligentie - 精确短语搜索:
"kunstmatige intelligentie" - 排除搜索:
Hubert NOT Bruls - 布尔运算符:
OR、NEAR()
该实现可处理各种边缘情况:
- 保留搜索查询中的引号
- 使用正确的内容类型标头
- 在 API 出错时启用回退机制
- 提供有意义的错误消息
错误处理
该 API 服务包含完善的错误处理:
- 妥善处理 API 错误(4xx、5xx)
- 复杂查询失败时回退到简化查询
- 提供详细的错误消息以便调试
- 正确将日志写入 stderr(而非 stdout,否则会破坏 stdio 传输)
配置
该服务主要连接 Bert Hubert 的 tkconv 服务,作为数据源。与荷兰议会官方 API 相比,它提供了更便于使用的 API。该服务由 Bert Hubert 创建,负责收集、整理并以开发者友好的格式提供荷兰议会数据。我们的 MCP 服务以此为基础构建标准化接口,供 AI 助手与这些宝贵数据交互。
许可证
MIT
总结
OpenTK MCP 服务提供了一个稳健且结构清晰的荷兰议会数据接口,通过 Model Context Protocol 让 AI 助手能够访问这些数据。其模块化设计、全面的 API、由 NLP 驱动的文档分析(v1.0.16)以及完善的测试,确保 AI 辅助研究、分析和信息检索能够可靠地访问议会信息。
完成配置后,Claude 即可通过 OpenTK MCP 服务,使用全部 17 个专用工具访问荷兰议会数据,涵盖搜索、文档分析、议员信息、委员会跟踪、投票结果等。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。