O

OpenTK-MCP:大型语言模型与荷兰议会数据桥梁

@r-huijts/opentk-mcp
0 Stars 31 次浏览 r-huijts 更新于 2026-08-23

大型语言模型与荷兰议会数据之间的桥梁,提供对荷兰议会文件、辩论和众议院成员信息的访问。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

OpenTK 模型上下文协议服务器

重要致谢: 该MCP服务器是围绕由Bert Hubert创建的优秀OpenTK项目构建的一个封装。OpenTK项目通过一个用户友好的界面提供了前所未有的荷兰议会数据访问。在Bert的文章中了解更多关于该项目的信息:欢迎来到OpenTK。所有底层数据访问和处理的功劳归功于Bert Hubert及其对开放政府数据的贡献。

通过标准化接口,在大型语言模型(LLMs)与荷兰议会数据之间搭建桥梁。此MCP服务器提供来自二院(Tweede Kamer)的荷兰议会文件、辩论记录及成员信息的访问。

真实世界自然语言交互示例

示例1:研究关于气候政策的议会讨论

用户查询: "我需要找到最近关于荷兰气候政策和碳排放目标的议会讨论。"

AI助手流程:

  1. 使用search_tk工具,查询"气候变化 CO2 目标"
  2. 分析结果并识别关键文档
  3. 使用get_document_details获取最相关文档的元数据
  4. 提供带有get_document_links的发现摘要以便进一步阅读

响应示例:
"我发现了一些近期关于气候政策的议会讨论。最重要的一次是在2025年3月,气候部长提出了新的碳排放目标。以下是主要文档:

示例2:特定议员的信息

用户查询: "现任议员Pieter Omtzigt是谁?他的背景是什么?"

AI助手流程:

  1. 使用list_persons查找Pieter Omtzigt的议员ID和基本信息
  2. 使用get_photo检索他的照片
  3. 使用search_tk_filtered和他的名字以及类型"Document"来分析他最近的议会活动

响应示例:
"Pieter Omtzigt是目前领导新社会契约党(NSC)的议员。根据议会数据库,他自2003年起就在议会任职,并以其在政府透明度和问责制方面的工作而闻名。他在揭露儿童保育福利丑闻中发挥了关键作用。最近,他在宪法改革和税收政策的辩论中非常活跃,在过去一个月里提交了几个议会问题。这是他的官方议会肖像:[图片]"

示例3:寻找最近的住房立法

用户查询: "关于住房立法的最新议会文件有哪些?"

AI助手处理:

  1. 使用 search_by_category 以类别 "alles" 和查询 "woningwet" 进行搜索
  2. 按日期对结果进行排序,以关注最近的条目
  3. 使用 get_document_details 获取最相关文档的元数据
  4. 使用 get_document_links 提供可点击链接

回复示例:
"我找到了几份与住房立法相关的最近议会文件。最新的一份是住房部长于2025年4月3日发出的一封信,概述了对《住房法》(Woningwet)的拟议修正案。主要变化包括新的经济适用房开发规定和租金控制措施。以下是相关文档的链接:

下载关于《住房法》修正案的部长信件 (PDF)
在二院网站上查看

该信中指出,正式法案将在咨询期结束后下个月提交给议会。"

示例4:查找今天过生日的议员

用户查询: "今天有荷兰议员庆祝生日吗?"

AI助手处理:

  1. 使用 birthdays_today 检索当前日期过生日的议员
  2. 对每个过生日的议员,使用 get_photo 获取其肖像

回复示例:
"是的,今天有两位议员庆祝他们的生日:

  1. Judith van Swaaij (D66) 今天42岁。她自2021年起在议会任职,目前是教育委员会成员。

  2. Bart van Kent (SP) 今天38岁。他是社会事务委员会成员,自2017年起在议会任职。

这是他们的官方议会肖像:[图片]

您想了解更多关于这些议员的信息吗?"

示例5:查找下周的议会活动

用户查询: "下周安排了哪些议会活动?"

AI助手处理:

  1. 使用 get_upcoming_activities 检索计划中的议会活动
  2. 按日期过滤和组织活动

回复示例:
"以下是下周计划的主要议会活动:

2025年4月28日星期一:

  • 上午10:00:气候政策委员会会议(Thorbeckezaal)
  • 下午2:00:春季预算全体辩论(Plenaire zaal)

2025年4月29日星期二:

  • 上午9:30:数字安全技术简报(Troelstrazaal)
  • 下午1:00:医疗改革委员会会议(Groen van Prinstererzaal)

2025年4月30日星期三:

  • 上午10:00:住房危机全体辩论(Plenaire zaal)
  • 下午3:00:能源转型专家圆桌讨论(Thorbeckezaal)

您想了解这些活动的更多细节吗?"

项目概念

OpenTK 项目是一个 Model Context Protocol (MCP) 服务器,通过标准化接口提供对荷兰议会数据的访问。它充当大型语言模型(LLMs)与荷兰议会信息系统之间的桥梁,使 AI 助手能够搜索、检索和分析议会文件、辩论和成员信息。

该服务器使用 @modelcontextprotocol/sdk 来实现 MCP 规范,这使得 AI 模型与外部数据源之间可以进行结构化通信。通过明确定义的工具和端点公开议会数据,OpenTK 使 AI 助手能够:

  1. 使用复杂查询搜索议会文件
  2. 获取国会议员的信息
  3. 以各种格式检索官方文件
  4. 分析议会活动和议事程序
  5. 跟踪立法案件和政府承诺

该项目主要依赖 Bert Hubert 的 tkconv 服务作为其数据源,该服务提供了比官方荷兰议会 API 更易于访问的 API。

MCP 工具

MCP 服务器目前向 AI 助手公开以下工具:

国会议员信息工具

  1. birthdays_today - 列出今天庆祝生日的所有国会议员
  2. list_persons - 提供当前所有国会议员的完整目录
  3. get_photo - 检索国会议员的官方肖像照片

搜索工具

  1. search_tk - 对所有议会数据进行全面搜索
  2. search_tk_filtered - 按文档类型(Document, Activiteit, Zaak)筛选搜索
  3. search_by_category - 特定类别(如问题、动议等)文档的搜索

文档工具

  1. get_document_details - 检索议会文件的元数据
  2. get_document_links - 将文档 URL 转换为可点击链接

委员会工具

  1. get_committees - 检索所有议会委员会的列表
  2. get_committee_details - 检索特定委员会的详细信息

活动和投票工具

  1. get_upcoming_activities - 检索即将举行的议会活动列表
  2. get_voting_results - 检索最近关于议会动议和法案的投票结果

搜索功能

搜索功能特别先进,支持:

  • 简单关键词搜索: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 和彻底的测试确保了 AI 辅助研究、分析和信息检索中对议会信息的可靠访问。

安装

1. 从源代码安装

克隆仓库:

git clone https://github.com/r-huijts/opentk-mcp.git
cd opentk-mcp

安装依赖项:

npm install

构建项目:

npm run build

启动服务器:

npm start

2. 配置 Claude 桌面版

更新您的 Claude 配置文件:

{
  "mcpServers": {
    "opentk-mcp-local": {
      "command": "node",
      "args": [
        "/absolute/path/to/your/opentk-mcp/dist/index.js"
      ]
    }
  }
}

请确保将 /absolute/path/to/your/opentk-mcp/ 替换为您实际的安装路径。

配置完成后,Claude 将能够通过 OpenTK MCP 服务器访问荷兰议会数据。服务器暴露了上述 使用 部分描述的所有工具。