关于 European Parliament Mcp Server
European Parliament MCP Server 是一个基于 TypeScript 的 MCP 服务,将欧洲议会开放数据门户连接到 Claude Desktop、VS Code、Cursor 等 MCP 客户端。面向开发者、研究人员和记者,提供议员、全会、委员会与立法文件等数据的结构化访问及 OSINT 分析工具。
主要功能
- 01访问 EP API v2 的议员与会议数据
- 02议员影响力评分
- 03联盟凝聚力与分歧分析
- 04政党投票异常检测
- 05委员会工作量与出勤分析
适用场景
- 01查询议员、全会与委员会的相关信息
- 02分析欧洲议会的投票模式与政治格局
- 03为 AI 助手提供欧盟议会数据支持
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端提供 63 个工具、9 个资源与 7 个提示词,用于访问欧洲议会开放数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🏛️ 欧洲议会 MCP 服务
欧洲议会开放数据的 Model Context Protocol 服务
🇪🇺 面向 AI Agent 的欧盟议会情报 · 🕵️ 15 种 OSINT 分析工具 · 🏛️ 完整覆盖 EP API v2 · 🛡️ 符合 ISMS · 🔒 从设计上遵循 GDPR · 📦 SLSA Level 3
连接欧洲议会开放数据门户与所有支持 MCP 的 AI 客户端的标准 TypeScript MCP 桥接服务 — Claude Desktop、VS Code、Cursor、GitHub Copilot。为 EU Parliament Monitor AI 新闻编辑室提供支持,也是 Hack23 政治情报产品组合中 Riksdagsmonitor 的姊妹项目。
|
|
欧洲议会开放数据的 Model Context Protocol 服务 — 通过安全、类型安全的 TypeScript 实现,为 AI 助手提供对欧洲议会议员、全体会议、委员会、立法文件和议会质询的结构化访问。 欧洲议会议员影响力评分(5 维模型)、联盟凝聚力与压力分析、党派倒戈与异常检测、跨党团比较分析、欧洲议会议员/委员会立法评分、流程状态与瓶颈检测、委员会工作量与参与度分析、欧洲议会议员出席模式与趋势、各国代表团投票与构成、全议会政治格局 |
📊 质量指标与文档
📋 概述
European Parliament MCP Server 实现了 Model Context Protocol (MCP),为 AI 助手、IDE 和其他 MCP 客户端提供对欧洲议会开放数据集的结构化访问。通过安全且类型安全的 TypeScript/Node.js 实现,访问有关欧洲议会议员、全体会议、委员会、立法文件和议会质询的信息。
🎯 主要功能
- 🔌 完整的 MCP 实现:63 个工具(9 个核心 + 3 个高级 + 15 个 OSINT + 8 个 Phase 4 + 15 个 Phase 5 + 13 个 Feed)、9 个资源和 7 个提示词
- 🏛️ 全面覆盖 EP API v2:涵盖欧洲议会开放数据 API 的所有端点
- 🕵️ OSINT 情报分析:欧洲议会议员影响力评分、联盟分析、异常检测
- 🔒 安全至上:符合 ISMS 要求、满足 GDPR 要求、SLSA Level 3 来源证明
- 🚀 高性能:API 响应时间 <200ms、智能缓存、速率限制
- 📊 类型安全:TypeScript 严格模式 + Zod 运行时验证
- 🧪 经过充分测试:80% 以上代码覆盖率、1130+ 个单元测试、71 个端到端测试用例
- 📚 完整文档:架构、TypeDoc API(HTML + Markdown)、安全指南
🔧 当前技术栈
- 运行时:Node.js 26.x
- 主要编译器:通过
typescript-7别名使用 TypeScript 7 RC(node_modules/typescript-7/bin/tsc) - 兼容层:
@typescript/typescript6仍然可用,因此现有的基于 6.x 的工具链可继续使用tsc6和 TypeScript 6 API - 核心平台:
@modelcontextprotocol/sdk1.29.0、zod4.4.3、vitest4.1.10
🌍 Hack23 政治情报生态系统
此 MCP 服务是 Hack23 推动以 AI 生成的政治情报和实时问责分析革新议会新闻业这一使命的欧盟数据支柱——通过将结构化开源情报(OSINT)方法应用于公共立法数据,提升民主透明度。
🎯 愿景:AI 驱动的民主透明
Hack23 AB 构建开源情报平台,让每位公民、记者、研究人员和政策制定者都能获取严谨、以证据为基础的政治分析。我们结合 MCP 服务、Agentic AI 新闻编辑室和开放议会数据,自动生成情报产品——联盟分析、投票模式解读、欧洲议会议员/议会议员影响力评分、立法流程预测——而这些过去只有资金雄厚的游说组织或内部政策团队才能制作。
“让每个人都能获取政治情报——过去需要一支分析师团队才能完成的工作,如今任何公民只需借助 AI 助手即可完成。”
该项目组合秉持无党派立场,完全开源(Apache-2.0),依据 Hack23 ISMS 运营,全面遵循 ISO 27001:2022 / NIST CSF 2.0 / CIS Controls v8.1,并以 GDPR 为设计原则;其架构经过专门设计,无法被武器化以影响党派立场:平等对待所有政治团体、仅使用公开数据、不设用户账户、无广告、不追踪。
🧭 生态系统概览
%%{init: {"theme":"base","themeVariables":{"primaryColor":"#6366f1","primaryTextColor":"#fff","primaryBorderColor":"#4f46e5","lineColor":"#94a3b8","secondaryColor":"#003399","tertiaryColor":"#00338d","background":"#0f172a"}}}%%
graph LR
subgraph SOURCES["📡 Primary Open-Data Sources"]
EP["🇪🇺 European Parliament<br/>Open Data Portal v2<br/><i>data.europarl.europa.eu</i>"]
RD["🇸🇪 Riksdagen Open Data<br/><i>data.riksdagen.se</i>"]
REG["🇸🇪 Regeringskansliet<br/><i>regeringen.se</i>"]
IMF["💰 IMF / World Bank<br/><i>economic context</i>"]
end
subgraph MCP["🔌 MCP Servers"]
EPMCP["<b>European-Parliament-<br/>MCP-Server</b><br/>63 tools · 9 resources<br/>7 prompts · TS strict<br/><i>(this repository)</i>"]
RRMCP["riksdag-regering MCP<br/>32+ tools"]
end
subgraph PRODUCTS["📰 AI-Driven Public Platforms"]
EUPM["🏛️ <b>EU Parliament Monitor</b><br/>euparliamentmonitor.com<br/>8 unified gh-aw workflows<br/>51-artifact analysis<br/>14 languages"]
RM["🗳️ <b>Riksdagsmonitor</b><br/>riksdagsmonitor.com<br/>11 agentic workflows<br/>91 skills · 14 languages<br/>Tidö coalition tracker"]
CIA["🕵️ <b>Citizen Intelligence<br/>Agency (CIA)</b><br/>Java/Spring backend<br/>15 subsystems · 1971–2024<br/>3.5M votes · 109K docs"]
end
subgraph CITIZENS["👥 Citizens · Journalists · Researchers · NGOs"]
AUDIENCE["AI assistants · Dashboards · 14-language news · Intelligence briefings"]
end
EP --> EPMCP
RD --> RRMCP
REG --> RRMCP
EPMCP --> EUPM
RRMCP --> RM
RM <-->|"15 CIA subsystems<br/>nightly sync"| CIA
IMF -.->|"economic context"| EUPM
IMF -.->|"economic context"| RM
EUPM --> AUDIENCE
RM --> AUDIENCE
CIA --> AUDIENCE
EPMCP -.->|"AI assistants<br/>Claude · Cursor · VS Code"| AUDIENCE
style EPMCP fill:#6366f1,stroke:#4f46e5,color:#fff,stroke-width:3px
style EP fill:#003399,stroke:#ffcc00,color:#fff
style RD fill:#00338d,stroke:#fecc00,color:#fff
style REG fill:#00338d,stroke:#fecc00,color:#fff
style EUPM fill:#003399,stroke:#ffcc00,color:#fff
style RM fill:#00338d,stroke:#fecc00,color:#fff
style CIA fill:#1b5e20,stroke:#43a047,color:#fff
style AUDIENCE fill:#7b1fa2,stroke:#9c27b0,color:#fff
**此 MCP 服务的职责:**在欧洲议会开放数据门户与任何支持 MCP 的 AI 客户端(Claude Desktop、VS Code、Cursor、GitHub Copilot)之间提供规范、类型安全的 TypeScript 桥接层,同时也是为 EU Parliament Monitor 新闻编辑室提供支持的上游数据层。每个工具都经过 Zod 验证、记录审计日志、遵循 GDPR 要求,并通过 SLSA Level 3 认证。
🗂️ 项目组合对比矩阵
| 项目 | 范围 | 受众 | 链接 |
|---|---|---|---|
|
🇪🇺 European-Parliament-MCP-Server (本仓库) |
面向 AI Agent 的欧盟议会数据层 62 个 MCP 工具 · 9 个资源 · 7 个提示词 · OSINT 分析 来源: data.europarl.europa.eu | 开发者 · AI 助手 · 记者 · 研究人员 |
📦 npm 💻 GitHub |
| 🏛️ EU Parliament Monitor |
每日以 14 种语言生成的 AI 欧洲议会情报 8 个统一的 gh-aw 工作流 · 包含 51 件产物的分析流水线 来源:本 MCP 服务(60 多个工具)+ IMF + World Bank | 欧盟全部 27 个成员国的公民 · 记者 · 非政府组织 |
🌐 euparliamentmonitor.com 🧠 情报中心 📚 API 参考 💻 GitHub |
| 🗳️ Riksdagsmonitor |
每日以 AI 生成的瑞典议会情报 11 个 Agent 工作流 · 91 项技能 · 50 多年的证据(1971–2024)· Tidö 联合政府脆弱性追踪器 来源: riksdag-regering MCP(32 个以上工具)+ SCB + IMF + World Bank + CIA 出口数据
| 瑞典公民 · 北欧记者 · 选举研究人员 |
🌐 riksdagsmonitor.com 🧠 情报 📰 AI 新闻编辑室 📊 仪表板 💻 GitHub |
| 🕵️ Citizen Intelligence Agency (CIA) |
由 15 个子系统组成的 Java/Spring 政治分析后端 349 名现任议员 · 2,494 名历史政治人物 · 350 万多张选票 · 10.9 万多份文件 · 45 条规则的风险引擎 来源:直接获取 data.riksdagen.se 数据 + Valmyndigheten + ESV
| Hack23 平台用户(Riksdagsmonitor)· OSINT 分析师 |
🌐 hack23.github.io/cia 💻 GitHub |
🇪🇺 EU Parliament Monitor — euparliamentmonitor.com
欧洲议会政治情报平台 — 🧠 政治情报 · 🔍 激进透明 · 🗳️ 民主问责 · 🤖 以 14 种语言生成的 AI 新闻
|
|
EU Parliament Monitor 将欧洲议会(EP)自己的开放数据转化为可审计的政治情报,并以易读新闻的形式每天以 14 种语言发布,且所有内容均有完整来源。这是一个由 AI 驱动的新闻编辑室,监测全体会议、委员会工作、动议、提案、紧急文件和未来日程;每次运行都会生成由 51 项结构化分析产物支撑的 《经济学人》风格分析文章;并公开所有方法、模板和分析树,让任何读者、记者或非政府组织都能核查文字背后的分析。 由此仓库驱动 — 使用 European-Parliament-MCP-Server(60 多种 EP 数据工具)以及 IMF 和 World Bank 提供经济背景;当 MCP 返回空的投票数据时,内置回退机制会改用 EP Open Data Portal 的
|
🗳️ Riksdagsmonitor — riksdagsmonitor.com
瑞典政治情报平台 — 🕵️ 政治情报 · 🔍 民主透明度 · 🤖 AI 生成新闻 · 📊 50 多年的证据
|
|
Riksdagsmonitor 运用结构化情报技术监测瑞典议会(Riksdag)、政府(Regeringskansliet)和公共机构(Myndigheter)——将 ACH、SWOT、PESTLE、STRIDE、政治风险评分以及 OSINT/INTOP 技术应用于349 位现任议员、2,494 位历史政治人物(1971–2024)、350 万余张投票记录和109,000 余份议会文件。 一个自主运行的 AI 新闻室——由11 个 Agent 工作流、Claude Opus 驱动,不设人工编辑——将这些证据转化为每天以 14 种语言发布、可直接发表的情报文章。内容首先呈现最新的蒂多协议联盟状态(176/349 个席位、脆弱性指标、CIA 风险警报),并深入分析 40 年的选举周期情报(1994–2034)、政党表现(1990–2026 年,8 个政党)、15 个委员会网络、季节性 Z-score 异常检测、部委风险,以及涵盖 349 位议员、包含 45 条规则的实时风险热力图。
|
🕵️ Citizen Intelligence Agency(CIA)
政治透明度平台——为 Riksdagsmonitor 历史证据层提供支持的 Java/Spring 数据底座
|
Citizen Intelligence Agency 是基于 Java/Spring Boot 的政治分析后端,为 Riksdagsmonitor 每晚使用的 15 个 CIA 子系统(异常 · 联盟 · 委员会 · 分布 · 选举 · 选举周期 · 部委 · 政党 · 党派 · 百分位 · 政治人物 · 选前 · 风险 · 季节性 · 投票)提供数据。它是瑞典政治活动的主要历史证据层,包含50 多年的投票记录(1971–2024)、2,494 位历史政治人物、349 位现任议员、350 万余张选票、109,000 多份文档、8,740 份委员会文档,以及一套45 条规则的透明度引擎,用于追踪瑞典议会 8 个政党中已识别的 2,308 项规则违规行为。 |
🌍 适用于整个产品组合
| 维度 | 覆盖范围 |
|---|---|
| 🌐 语言 | 14 种 — 英语 · 瑞典语 · 丹麦语 · 挪威语 · 芬兰语 · 德语 · 法语 · 西班牙语 · 荷兰语 · 阿拉伯语(RTL) · 希伯来语(RTL) · 日语 · 韩语 · 中文 |
| ♿ 无障碍性 | WCAG 2.1 AA · 支持键盘导航 · 针对屏幕阅读器优化 · 4.5:1 对比度 · 响应式布局,320 px → 1440 px+ |
| 🔒 合规性 | ISO 27001:2022 · NIST CSF 2.0 · CIS Controls v8.1 · GDPR · NIS2 · EU CRA |
| 🛡️ 供应链 | 固定 SHA 的 GitHub Actions · step-security/harden-runner · Dependabot · CodeQL · Secret Scanning · SLSA Level 3 · SPDX SBOM |
| 📜 许可证 | 整个产品组合均采用 Apache License 2.0 |
| 🏢 运营方 | Hack23 AB(Org.nr 559534-7807)— 瑞典网络安全与开源情报咨询公司 |
| 🛡️ ISMS | Hack23 ISMS-PUBLIC — 完整记录的信息安全管理体系 |
🔗 Hack23 产品组合快速链接
- 🌐 在线平台 — euparliamentmonitor.com · riksdagsmonitor.com · hack23.github.io/cia · hack23.com
- 🧠 政治情报中心 — 欧盟议会 · 瑞典议会
- 📂 源代码仓库 — European-Parliament-MCP-Server · euparliamentmonitor · riksdagsmonitor · cia · ISMS-PUBLIC
- 📦 npm 包 —
european-parliament-mcp-server·euparliamentmonitor·riksdagsmonitor - 📰 博客与公司 — Hack23 博客 · LinkedIn — Hack23 AB · 创始人 James Pether Sörling, CISSP, CISM
- 🤖 可供 AI 阅读的维基 — DeepWiki: European-Parliament-MCP-Server · DeepWiki: euparliamentmonitor · DeepWiki: riksdagsmonitor · DeepWiki: cia
## 🔐 安全与合规
🚀 快速开始
使用 npx 运行(无需安装)
npx -y european-parliament-mcp-server
前置条件
- Node.js 26.x 或更高版本
- npm 10.x 或更高版本
安装
选项 1:从 npm 安装(推荐)
# Install the package globally
npm install -g european-parliament-mcp-server
# Or install as a dependency in your project
npm install european-parliament-mcp-server
选项 2:从源代码安装
# Clone the repository
git clone https://github.com/Hack23/European-Parliament-MCP-Server.git
cd European-Parliament-MCP-Server
# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test
在 MCP 客户端中使用
Claude Desktop 配置(通过 npm 安装)
添加到 claude_desktop_config.json:
{
"mcpServers": {
"european-parliament": {
"command": "npx",
"args": ["european-parliament-mcp-server"],
"env": {
"EP_API_KEY": "your-api-key-if-needed"
}
}
}
}
Claude Desktop 配置(从源代码安装)
添加到 claude_desktop_config.json:
{
"mcpServers": {
"european-parliament": {
"command": "node",
"args": ["/path/to/European-Parliament-MCP-Server/dist/index.js"],
"env": {
"EP_API_KEY": "your-api-key-if-needed"
}
}
}
}
VS Code 扩展
在 .vscode/mcp.json 中配置:
{
"servers": {
"european-parliament": {
"type": "stdio",
"command": "npx",
"args": ["-y", "european-parliament-mcp-server"]
}
}
}
Cursor IDE 配置
添加到 ~/.cursor/mcp.json(或项目级 .cursor/mcp.json):
{
"mcpServers": {
"european-parliament": {
"command": "npx",
"args": ["european-parliament-mcp-server"],
"env": {}
}
}
}
自定义超时配置
使用 --timeout <ms> 覆盖默认的 60 s 请求超时时间。这在 copilot-mcp.json 或其他 env 字段可能无法可靠传递的环境中尤其有用:
{
"args": ["european-parliament-mcp-server", "--timeout", "90000"]
}
优先级:--timeout 命令行参数 > EP_REQUEST_TIMEOUT_MS 环境变量 > 默认值(60 000 ms)。
注意:
procedures/feed和events/feed端点会自动使用延长至 120 s 的超时时间,因为这些 EP API 端点明显比其他端点慢。如果使用one-month时间范围时遇到超时,可以考虑改用基于年份的查询(例如,get_procedures({ year: 2026 })),速度会更快。
📚 文档
🌐 文档门户
📖 完整文档网站 - 在线文档门户,包含:
- 📖 API 参考(HTML) - 使用 TypeDoc 生成的 API 文档,支持搜索、层级导航和完整类型信息
- 📖 API 参考(Markdown) - 对 SEO 友好的 Markdown API 文档
- 📊 覆盖率报告 - 测试覆盖率分析
- ✅ 测试报告 - 单元测试和 E2E 测试结果
- 🔐 构建证明 - SLSA Level 3 来源证明
- 📦 SBOM - 软件物料清单
- 🗺️ 站点地图 - 为搜索引擎自动生成的站点地图
💡 注意:每次发布时,文档都会通过
npm run docs:build自动生成并提交
生成的 API 文档
API 文档使用 TypeDoc 生成,并搭配以下插件:
| 插件 | 用途 |
|---|---|
| typedoc | 核心 HTML 文档生成器 |
| typedoc-plugin-markdown | 除 HTML 外,还会生成对 SEO 友好的 Markdown |
| typedoc-plugin-mdn-links | 将 TypeScript 内置类型链接到 MDN 文档 |
| typedoc-plugin-zod | 将 Zod 架构定义呈现为易读的类型文档 |
在本地生成文档:
npm run docs # HTML API docs → docs/api/
npm run docs:md # Markdown API docs → docs/api-markdown/
npm run docs:build # Full documentation build (HTML + MD + coverage + test reports)
核心文档
- API 使用指南 - 完整的工具文档及示例
- 架构图 - C4 模型图和数据流
- 故障排除指南 - 常见问题及解决方案
- 开发者指南 - 开发工作流和贡献指南
- 部署指南 - Claude Desktop、VS Code、Docker 设置
- 性能指南 - 优化策略
- 文档即代码指南 - 文档生成方式
其他文档
- ARCHITECTURE.md - 完整的架构和设计文档
- SECURITY.md - 安全政策和漏洞披露
- SECURITY_HEADERS.md - API 安全标头实现
- docs/SBOM.md - 软件物料清单文档
- CONTRIBUTING.md - 贡献指南
- CODE_OF_CONDUCT.md - 社区行为准则
- .github/copilot-instructions.md - GitHub Copilot 开发指南
- .github/agents/README.md - 自定义 GitHub Copilot Agent
- .github/skills/README.md - 可复用的技能模式
🏗️ 架构概览
graph TB
Client[MCP Client<br/>Claude / VS Code / Cursor] -->|MCP Protocol stdio| Server[EP MCP Server<br/>TypeScript/Node.js]
subgraph "MCP Server (src/)"
direction TB
Tools["🔧 61 Tools<br/>getMEPs · analyzeCoalition<br/>assessMepInfluence · …"]
Resources["📦 9 Resources<br/>ep://meps/\{mepId\}<br/>ep://procedures/\{procedureId\} · …"]
Prompts["💬 7 Prompts<br/>mep_briefing<br/>coalition_analysis · …"]
end
Server --> Tools
Server --> Resources
Server --> Prompts
subgraph "Infrastructure"
Cache["LRU Cache<br/>500 entries · 15 min TTL"]
RateLimiter[Rate Limiter<br/>100 req/min]
AuditLog[Audit Logger<br/>GDPR Article 30]
end
Tools --> EPClient["EuropeanParliamentClient<br/>Facade → 8 sub-clients"]
Resources --> EPClient
EPClient --> Cache
EPClient --> RateLimiter
EPClient --> AuditLog
EPClient -->|HTTPS/TLS 1.3| EPAPI[European Parliament<br/>Open Data API v2<br/>data.europarl.europa.eu]
style Server fill:#4caf50,stroke:#2e7d32,color:#fff
style EPClient fill:#2196f3,stroke:#1565c0,color:#fff
style EPAPI fill:#9c27b0,stroke:#6a1b9a,color:#fff
style Cache fill:#ff9800,stroke:#e65100,color:#fff
style RateLimiter fill:#f44336,stroke:#b71c1c,color:#fff
style AuditLog fill:#607d8b,stroke:#37474f,color:#fff
数据流: MCP 客户端发送工具调用 → 服务验证输入(Zod)→ EP 客户端 检查缓存 → 未命中时,从 EP API 获取数据(限流)→ 缓存响应并以结构化 JSON 格式返回。 所有个人数据访问均按照 GDPR 第 30 条记录审计日志。
🔌 MCP 工具(共 63 个)
63 个工具按功能组织——首先是 OSINT 情报,其次是分析、数据访问、信息流端点和参考工具。每个工具都包含 Zod 输入验证、缓存和限流。
🗺️ 政治情报覆盖地图
graph TB
subgraph OSINT["🕵️ OSINT Intelligence — 15 Tools"]
direction LR
subgraph MEP["MEP Profiling"]
A1["assess_mep_influence"]
A2["comparative_intelligence"]
A3["network_analysis"]
A4["track_mep_attendance"]
end
subgraph COALITION["Coalition Dynamics"]
B1["analyze_coalition_dynamics"]
B2["compare_political_groups"]
B3["detect_voting_anomalies"]
B4["sentiment_tracker"]
end
subgraph STRATEGY["Strategic Warning"]
C1["early_warning_system"]
C2["generate_political_landscape"]
C3["correlate_intelligence"]
end
subgraph LEG_INTEL["Legislative Intelligence"]
D1["analyze_legislative_effectiveness"]
D2["monitor_legislative_pipeline"]
D3["analyze_committee_activity"]
D4["analyze_country_delegation"]
end
end
subgraph ANALYTICS["📊 Advanced Analysis — 4 Tools"]
E1["analyze_voting_patterns"]
E2["track_legislation"]
E3["generate_report"]
E4["get_all_generated_stats"]
end
subgraph DATA["📦 Core EP Data — 30 Tools"]
F1["👤 MEP Tools (7)"]
F2["🏛️ Plenary & Meeting (9)"]
F3["📄 Document Tools (7)"]
F4["⚖️ Legislative (4)"]
F5["🏢 Committee (2)"]
F6["🔧 Diagnostics (1)"]
end
subgraph FEEDS["📡 Real-Time Feeds — 13 Tools"]
G1["13 change monitoring endpoints"]
end
OSINT -->|"enriched by"| ANALYTICS
ANALYTICS -->|"queries"| DATA
DATA -->|"monitors"| FEEDS
style OSINT fill:#d32f2f,stroke:#b71c1c,color:#fff,stroke-width:2px
style ANALYTICS fill:#1565c0,stroke:#0d47a1,color:#fff,stroke-width:2px
style DATA fill:#2e7d32,stroke:#1b5e20,color:#fff,stroke-width:2px
style FEEDS fill:#ff8f00,stroke:#e65100,color:#000,stroke-width:2px
style MEP fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
style COALITION fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
style STRATEGY fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
style LEG_INTEL fill:#e53935,stroke:#c62828,color:#fff,stroke-width:2px
🎯 OSINT 情报工作流
graph LR
subgraph COLLECT["1️⃣ Collect"]
direction TB
C1["get_meps"]
C2["get_plenary_sessions"]
C3["get_voting_records"]
C4["get_procedures"]
C5["13 feed tools"]
end
subgraph ANALYZE["2️⃣ Analyze"]
direction TB
AN1["analyze_voting_patterns"]
AN2["track_legislation"]
AN3["generate_report"]
AN4["get_all_generated_stats"]
end
subgraph ENRICH["3️⃣ Enrich"]
direction TB
E1["assess_mep_influence"]
E2["analyze_coalition_dynamics"]
E3["detect_voting_anomalies"]
E4["network_analysis"]
E5["analyze_legislative_effectiveness"]
end
subgraph FUSE["4️⃣ Fuse & Alert"]
direction TB
F1["correlate_intelligence"]
F2["early_warning_system"]
F3["generate_political_landscape"]
F4["comparative_intelligence"]
F5["sentiment_tracker"]
end
COLLECT -->|"raw data"| ANALYZE
ANALYZE -->|"structured"| ENRICH
ENRICH -->|"intelligence"| FUSE
style COLLECT fill:#2e7d32,stroke:#1b5e20,color:#fff,stroke-width:2px
style ANALYZE fill:#1565c0,stroke:#0d47a1,color:#fff,stroke-width:2px
style ENRICH fill:#9c27b0,stroke:#7b1fa2,color:#fff,stroke-width:2px
style FUSE fill:#d32f2f,stroke:#b71c1c,color:#fff,stroke-width:2px
🕵️ OSINT 情报工具(15 个)
| 工具 | 描述 | 关键参数 | 输出 |
|---|---|---|---|
correlate_intelligence | 跨工具 OSINT 关联引擎——融合影响力、异常、联盟和网络信号,生成统一的情报警报 | mepIds(必填)、groups、sensitivityLevel | 包含严重程度和置信度的关联警报 |
assess_mep_influence | 欧洲议会议员(MEP)影响力评分(5 维模型) | mepId(必填)、dateFrom、dateTo、includeDetails | 影响力评分卡 |
detect_voting_anomalies | 政党倒戈与异常检测 | mepId、groupId、sensitivityThreshold | 异常报告 |
analyze_coalition_dynamics | 联盟凝聚力与压力分析 | groupIds、dateFrom、minimumCohesion | 联盟指标 |
early_warning_system | 检测新兴政治变化与联盟分裂 | sensitivity、focusArea | 包含严重程度等级和稳定性评分的预警 |
comparative_intelligence | 跨维度交叉比对 2–10 位欧洲议会议员(MEP)的活动 | mepIds(必填)、dimensions | 排名档案、相关矩阵、聚类分析 |
network_analysis | 通过委员会共同成员关系分析欧洲议会议员(MEP)关系网络 | mepId、analysisType、depth | 包含中心性评分的网络图 |
sentiment_tracker | 政治团体的机构立场评分 | groupId、timeframe | 立场评分与极化指数 |
generate_political_landscape | 全议会政治格局 | dateFrom、dateTo | 格局概览 |
compare_political_groups | 跨团体比较分析 | groupIds(必填)、dimensions、dateFrom | 比较矩阵 |
analyze_legislative_effectiveness | 欧洲议会议员(MEP)/委员会立法评分 | subjectType(必填)、subjectId(必填)、dateFrom | 成效评分 |
monitor_legislative_pipeline | 立法流程状态与瓶颈检测 | committee、status、limit | 流程状态 |
analyze_committee_activity | 委员会工作量与参与度分析 | committeeId(必填)、dateFrom、dateTo | 活动报告 |
track_mep_attendance | 欧洲议会议员(MEP)出席模式与趋势 | mepId、country、groupId、dateFrom、dateTo、limit | 出席报告 |
analyze_country_delegation | 国家代表团投票与组成情况 | country(必填)、dateFrom、dateTo | 代表团分析 |
📊 高级分析工具(4)
| 工具 | 描述 | 关键参数 | 输出 |
|---|---|---|---|
get_all_generated_stats | 预先计算的 EP 活动统计数据(2004-2026),包含排名、预测、政治格局,以及 30 项基于 OSINT 的情报指标,包括三轴政治罗盘 | yearFrom, yearTo, category, includePredictions | 统计对象 |
analyze_voting_patterns | 分析 MEP 的投票行为 | mepId(必填), dateFrom, compareWithGroup | 分析对象 |
track_legislation | 跟踪立法程序 | procedureId(必填) | 程序对象 |
generate_report | 生成分析报告 | reportType(必填), subjectId, dateFrom | 报告对象 |
👤 MEP 工具(7)
| 工具 | 描述 | 关键参数 | EP API 端点 |
|---|---|---|---|
get_meps | 按筛选条件列出 MEP | country, group, committee, limit | GET /meps |
get_mep_details | MEP 详细信息 | id(必填) | GET /meps/{id} |
get_current_meps | 当前在任的 MEP,包含国家和政治团体 | limit, offset | GET /meps/show-current |
get_incoming_meps | 本届新任 MEP | limit, offset | GET /meps/show-incoming |
get_outgoing_meps | 本届离任 MEP | limit, offset | GET /meps/show-outgoing |
get_homonym_meps | 姓名相同的 MEP(用于消歧) | limit, offset | GET /meps/show-homonyms |
get_mep_declarations | MEP 财务利益申报 | docId, year, limit | GET /meps-declarations, GET /meps-declarations/{id} |
🏛️ 全体会议与会议工具(9)
| 工具 | 描述 | 关键参数 | EP API 端点 |
|---|---|---|---|
get_plenary_sessions | 列出全体会议/会议,或根据 eventId 获取单场会议 | dateFrom, dateTo, eventId, year, location | GET /meetings, GET /meetings/{id} |
get_voting_records | 获取汇总投票记录(不含各位欧洲议会议员的个人立场) | sessionId, topic, dateFrom | GET /meetings/{id}/vote-results |
get_speeches | 全体会议发言和辩论发言 | speechId, year, dateFrom, dateTo, limit | GET /speeches, GET /speeches/{id} |
get_events | EP 活动(听证会、会议、研讨会) | eventId, year, dateFrom, dateTo, limit | GET /events, GET /events/{id} |
get_meeting_activities | 与全体会议会期关联的活动 | sittingId(必填), limit | GET /meetings/{id}/activities |
get_meeting_decisions | 全体会议会期作出的决定 | sittingId(必填), limit | GET /meetings/{id}/decisions |
get_meeting_foreseen_activities | 即将举行的会议的计划议程项目 | sittingId(必填), limit | GET /meetings/{id}/foreseen-activities |
get_meeting_plenary_session_documents | 与特定会期关联的全体会议文件 | sittingId(必填), limit, offset | GET /meetings/{id}/plenary-session-documents |
get_meeting_plenary_session_document_items | 特定全体会议会期的议程项目文件 | sittingId(必填), limit, offset | GET /meetings/{id}/plenary-session-document-items |
🏢 委员会工具(2)
| 工具 | 描述 | 关键参数 | EP API 端点 |
|---|---|---|---|
get_committee_info | 委员会/机构信息,或所有当前机构 | id, abbreviation, showCurrent | GET /corporate-bodies, GET /corporate-bodies/show-current |
get_committee_documents | 委员会文件和草案 | docId, year, limit | GET /committee-documents, GET /committee-documents/{id} |
📄 文档工具(7)
| 工具 | 描述 | 关键参数 | EP API 端点 |
|---|---|---|---|
search_documents | 搜索文档或按 docId 获取单份文档 | keyword, docId, documentType, dateFrom | GET /documents, GET /documents/{id} |
get_adopted_texts | 已通过的立法文本和决议 | docId, year, limit | GET /adopted-texts, GET /adopted-texts/{id} |
get_plenary_documents | 全体会议立法文件 | docId, year, limit | GET /plenary-documents, GET /plenary-documents/{id} |
get_plenary_session_documents | 会议议程、会议记录、投票清单 | docId, limit | GET /plenary-session-documents, GET /plenary-session-documents/{id} |
get_plenary_session_document_items | 会议文件中的各个条目 | limit, offset | GET /plenary-session-documents-items |
get_external_documents | 非 EP 文件(理事会、委员会) | docId, year, limit | GET /external-documents, GET /external-documents/{id} |
get_parliamentary_questions | 议会问答,或按 docId 获取单项内容 | type, author, topic, docId | GET /parliamentary-questions, GET /parliamentary-questions/{id} |
⚖️ 立法程序工具(4)
| 工具 | 描述 | 关键参数 | EP API 端点 |
|---|---|---|---|
get_procedures | 立法程序,或按 processId 获取单项程序 | processId, year, limit | GET /procedures, GET /procedures/{id} |
get_procedure_events | 立法程序的时间线事件 | processId (required), limit | GET /procedures/{id}/events |
get_procedure_event_by_id | 与立法程序关联的特定事件 | processId (required), eventId (required) | GET /procedures/{id}/events/{event-id} |
get_controlled_vocabularies | 标准化分类术语 | vocId, limit | GET /controlled-vocabularies, GET /controlled-vocabularies/{id} |
📡 Feed 工具(13 个)
用于监控 EP API 所有类别中近期更新数据的实时变更 Feed。根据 EP OpenAPI 规范,Feed 分为两组:
- 可配置时间窗口(6 个工具):接受
timeframe(today、one-day、one-week、one-month、custom)和可选的startDate - 固定时间窗口(7 个工具):无参数 — 返回服务端定义的默认时间窗口内的更新(通常为一个月)
主要行为:
- 所有 Feed 都返回包含
data[]、@context[]和dataQualityWarnings[]的 JSON-LD- 空 Feed(EP API 返回 404 或错误位于响应正文中)会转换为空的
data[]并附带警告,而不会报错get_events_feed和get_procedures_feed始终使用至少 120s 的超时时间,因为这些端点一直都很慢- 固定时间窗口的 Feed 可能非常慢(30–180 s),并且经常返回错误位于响应正文中的响应
- 对于可配置 Feed,当
timeframe为custom时,必须提供startDate(YYYY-MM-DD)
可配置时间窗口的 Feed:
| 工具 | 描述 | 关键参数 | EP API 端点 |
|---|---|---|---|
get_meps_feed | 近期更新的欧洲议会议员 | timeframe, startDate | GET /meps/feed |
get_events_feed | 近期更新的活动 | timeframe, startDate, activityType | GET /events/feed |
get_procedures_feed | 近期更新的程序 | timeframe, startDate, processType | GET /procedures/feed |
get_adopted_texts_feed | 近期更新的已通过文本 | timeframe, startDate, workType | GET /adopted-texts/feed |
get_mep_declarations_feed | 近期更新的欧洲议会议员声明 | timeframe, startDate, workType | GET /meps-declarations/feed |
get_external_documents_feed | 近期更新的外部文件 | timeframe, startDate, workType | GET /external-documents/feed |
固定时间窗口的 Feed(无参数):
| 工具 | 描述 | 关键参数 | EP API 端点 |
|---|---|---|---|
get_documents_feed | 近期更新的文件 | (无) | GET /documents/feed |
get_plenary_documents_feed | 近期更新的全体会议文件 | (无) | GET /plenary-documents/feed |
get_committee_documents_feed | 近期更新的委员会文件 | (无) | GET /committee-documents/feed |
get_plenary_session_documents_feed | 近期更新的全体会议届次文件 | (无) | GET /plenary-session-documents/feed |
get_parliamentary_questions_feed | 近期更新的问题 | (无) | GET /parliamentary-questions/feed |
get_corporate_bodies_feed | 近期更新的机构 | (无) | GET /corporate-bodies/feed |
get_controlled_vocabularies_feed | 近期更新的受控词汇表 | (无) | GET /controlled-vocabularies/feed |
🔧 服务诊断(1 个)
| 工具 | 描述 | 关键参数 | 输出 |
|---|---|---|---|
get_server_health | 服务运行状况和 Feed 可用性状态(不调用上游 API) | (无) | 健康状态对象 |
📖 完整的 TypeDoc API 文档 → · Markdown API 文档 →
常见用例
研究特定的 MEP:
1. Find MEP: get_meps → {country: "SE"}
2. Get details: get_mep_details → {id: "MEP-123"}
3. Analyze voting: analyze_voting_patterns → {mepId: "MEP-123"}
4. Generate report: generate_report → {reportType: "MEP_ACTIVITY", subjectId: "MEP-123"}
跟踪立法:
1. Search documents: search_documents → {keywords: "climate change"}
2. Track procedure: track_legislation → {procedureId: "2024/0001(COD)"}
3. Get voting records: get_voting_records → {topic: "climate"}
委员会分析:
1. Get committee: get_committee_info → {abbreviation: "ENVI"}
2. List members: get_meps → {committee: "ENVI"}
3. Generate report: generate_report → {reportType: "COMMITTEE_PERFORMANCE", subjectId: "COMM-ENVI"}
OSINT 情报分析:
1. Score MEP influence: assess_mep_influence → {mepId: "MEP-123"}
2. Detect anomalies: detect_voting_anomalies → {mepId: "MEP-123"}
3. Analyze coalitions: analyze_coalition_dynamics → {groupIds: ["EPP", "S&D"]}
4. Compare groups: compare_political_groups → {groupIds: ["EPP", "S&D", "Renew"]}
5. Pipeline status: monitor_legislative_pipeline → {committee: "ENVI"}
6. Country delegation: analyze_country_delegation → {country: "SE"}
7. Political landscape: generate_political_landscape → {}
📝 MCP 提示词
预先构建的情报分析提示词模板:
| 提示词 | 描述 | 参数 |
|---|---|---|
mep_briefing | 全面的 MEP 情报简报 | mepId(必填),period? |
coalition_analysis | 联盟动态和投票集团分析 | policyArea?,period? |
legislative_tracking | 立法程序跟踪报告 | procedureId?,committee? |
political_group_comparison | 多维度党团比较 | groups? |
committee_activity_report | 委员会工作量和参与度 | committeeId(必填) |
voting_pattern_analysis | 投票模式趋势检测 | topic?,mepId? |
country_delegation_analysis | 国家代表团构成和活动 | country(必填),period? |
📦 MCP 资源
通过 EP 资源 URI 直接访问数据:
| 资源 URI | 描述 |
|---|---|
ep://meps | 当前所有 MEP 的列表 |
ep://meps/{mepId} | 单个 MEP 个人资料 |
ep://committees/{committeeId} | 委员会信息 |
ep://plenary-sessions | 最近的全体会议 |
ep://votes/{sessionId} | 某次会议的投票记录 |
ep://political-groups | 党团列表 |
ep://procedures/{procedureId} | 立法程序详情 |
ep://plenary/{plenaryId} | 单次全体会议详情 |
ep://documents/{documentId} | 立法文件详情 |
🗺️ 全球政治 MCP 服务与 OSINT 覆盖范围
欧洲议会 MCP 服务是不断壮大的政治与政府开放数据 MCP 服务生态系统的一部分,这些服务支持对全球民主机构进行 AI 驱动的 OSINT 分析。以下是目前最全面的政治与政府 MCP 服务目录。
🏛️ 议会与立法 MCP 服务
| 国家 | 服务 | 数据来源 | 覆盖范围 |
|---|---|---|---|
| 🇪🇺 欧盟 | 欧洲议会 MCP 服务 | data.europarl.europa.eu | MEP、投票、立法、委员会、质询 — 63 个工具(15 个 OSINT) |
| 🇺🇸 美国 | Congress.gov API MCP Server | congress.gov | 法案、议员、投票、委员会(TypeScript,v3 API) |
| 🇺🇸 美国 | CongressMCP | congress.gov | 实时国会数据 — 法案、投票、议员 |
| 🇺🇸 美国 | Congress.gov MCP | congress.gov | 非官方 Congress.gov API 访问 |
| 🇬🇧 英国 | Parliament MCP | parliament.uk | Hansard、议员、辩论、表决 |
| 🇸🇪 瑞典 | Riksdag & Regering MCP | riksdagen.se | 瑞典议会与政府数据(由 riksdagsmonitor.com 使用) |
| 🇳🇱 荷兰 | OpenTK MCP | tweedekamer.nl | 荷兰议会(Tweede Kamer)文件 |
| 🇵🇱 波兰 | Parliament of Poland MCP | sejm.gov.pl | 议员、投票、委员会 |
| 🇵🇱 波兰 | Sejm MCP | api.sejm.gov.pl | 议会数据与立法 |
| 🇮🇱 以色列 | Knesset MCP Server | knesset.gov.il | 以色列议会 API |
| 🇧🇷 巴西 | Senado BR MCP | senado.leg.br | 联邦参议院 — 议员、提案、投票 |
📊 政府开放数据 MCP 服务
| 国家 | 服务 | 数据来源 | 覆盖范围 |
|---|---|---|---|
| 🇺🇸 美国 | USA Spending MCP | usaspending.gov | 联邦支出数据 |
| 🇺🇸 美国 | Open Census MCP | census.gov | 人口统计与数据(自然语言) |
| 🇺🇸 美国 | Data.gov MCP Server | data.gov | 联邦数据集目录 |
| 🇺🇸 美国 | CMS Data.gov MCP | data.cms.gov | 医疗保健数据 — 搜索/筛选/分页 |
| 🇺🇸 美国 | SEC EDGAR MCP | sec.gov | SEC 文件 — 年度报告、内部人员数据 |
| 🇺🇸 美国 | NPS MCP | nps.gov | 国家公园管理局 API |
| 🇸🇪 瑞典 | SCB MCP Server | scb.se | 瑞典官方统计数据 |
| 🇸🇪 瑞典 | Skolverket MCP | skolverket.se | 瑞典国家教育署 |
| 🇫🇷 法国 | data.gouv.fr MCP | data.gouv.fr | 国家开放数据平台 |
| 🇫🇷 法国 | Data Gouv MCP Server | data.gouv.fr | 公司与组织搜索 |
| 🇬🇧 英国 | Planning Data MCP | planning.data.gov.uk | 规划与土地利用数据 |
| 🇬🇧 英国 | Property Prices MCP | landregistry.data.gov.uk | 房价搜索 |
| 🇳🇱 荷兰 | CBS Open Data MCP | cbs.nl | 荷兰统计局 |
| 🇮🇱 以色列 | Data.gov.il MCP | data.gov.il | 国家 CKAN 数据门户 |
| 🇮🇱 以色列 | DataGov Israel MCP | data.gov.il | 另一种实现 + 可视化 |
| 🇮🇱 以色列 | Israel Statistics MCP | cbs.gov.il | CPI 与经济时间序列 |
| 🇮🇱 以色列 | BudgetKey MCP | open-budget.org.il | 国家预算、合同、补助金 |
| 🇹🇷 土耳其 | Mevzuat MCP | mevzuat.gov.tr | 法律法规系统 — 搜索/检索法律 |
| 🇭🇰 香港 | HK Data.gov.hk MCP | data.gov.hk | 香港开放数据门户 |
| 🇲🇾 马来西亚 | Data.gov.my MCP | data.gov.my | 国家数据门户 |
| 🇮🇳 印度 | Data.gov.in MCP | data.gov.in | 语义搜索 + 数据集访问 |
| 🇸🇬 新加坡 | Gahmen MCP Server | data.gov.sg | 政府数据集 + CKAN 搜索 |
| 🇸🇬 新加坡 | Singapore Data MCPs | data.gov.sg | 多个服务(停车、医疗、数据集) |
| 🇦🇺 澳大利亚 | ABS MCP Server | abs.gov.au | 统计局(SDMX-ML) |
🌍 多门户与通用 MCP 服务
| 范围 | 服务 | 平台 | 覆盖范围 |
|---|---|---|---|
| 🌐 全球(CKAN) | CKAN MCP Server | CKAN 门户 | 适用于任何基于 CKAN 的开放数据门户的通用服务 |
| 🌐 全球(Socrata) | OpenGov MCP Server | Socrata 门户 | 由 Socrata 提供支持的城市/县/州/联邦门户 |
🕵️ OSINT 情报能力对比
| 能力 | 🇪🇺 EU Parliament MCP | 🇺🇸 Congress.gov MCP | 🇬🇧 UK Parliament MCP | 🇸🇪 Riksdag MCP |
|---|---|---|---|---|
| 成员画像分析 | ✅ 5 维度影响力模型 | ✅ 基本画像 | ✅ 基本画像 | ✅ 基本画像 |
| 投票分析 | ✅ 异常检测 + 模式分析 | ✅ 点名表决 | ✅ 分组表决记录 | ✅ 投票记录 |
| 联盟动态 | ✅ 凝聚力与压力分析 | ❌ | ❌ | ❌ |
| 委员会情报 | ✅ 工作量与参与度指标 | ✅ 委员会数据 | ✅ 委员会数据 | ❌ |
| 立法流程 | ✅ 瓶颈检测 + 预测 | ✅ 法案跟踪 | ✅ 法案跟踪 | ✅ 法案跟踪 |
| 国家代表团分析 | ✅ 国家凝聚力指标 | N/A | N/A | N/A |
| 政治格局 | ✅ 全议会态势感知 | ❌ | ❌ | ❌ |
| 出席情况跟踪 | ✅ 趋势检测 + 参与度评分 | ❌ | ❌ | ❌ |
| GDPR 合规性 | ✅ 隐私优先设计 | N/A | N/A | ✅ |
| MCP 提示词与资源 | ✅ 7 个提示词 + 9 个资源 | ❌ | ❌ | ❌ |
| 工具数量 | 63 个工具 | ~5 个工具 | ~5 个工具 | ~4 个工具 |
💡 欧洲议会 MCP 服务提供了所有政治类 MCP 服务中最全面的 OSINT 情报能力,包含 63 个专用工具,涵盖联盟压力分析、投票异常检测、跨工具情报关联、政治格局生成和预计算的纵向统计等高级分析功能。它是唯一内置 MCP 提示词、资源和 5 维度欧洲议会议员影响力评分模型的政治类 MCP 服务。
🏛️ 欧洲议会数据集
完整覆盖 EP API v2
已完整覆盖全部 55 个 European Parliament Open Data API v2 端点——41 个核心数据端点、13 个 Feed 端点,以及 1 个可选端点(/procedures/{id}/events/{event-id}):
| 类别 | 端点 | MCP 工具 |
|---|---|---|
| MEP | /meps, /meps/{id}, /meps/show-current, /meps/show-incoming, /meps/show-outgoing, /meps/show-homonyms | get_meps, get_mep_details, get_current_meps, get_incoming_meps, get_outgoing_meps, get_homonym_meps |
| MEP 文档 | /meps-declarations, /meps-declarations/{id} | get_mep_declarations |
| 机构 | /corporate-bodies, /corporate-bodies/{id}, /corporate-bodies/show-current | get_committee_info |
| 活动 | /events, /events/{id} | get_events |
| 会议 | /meetings, /meetings/{id}, /meetings/{id}/activities, /meetings/{id}/decisions, /meetings/{id}/foreseen-activities, /meetings/{id}/vote-results, /meetings/{id}/plenary-session-documents, /meetings/{id}/plenary-session-document-items | get_plenary_sessions, get_meeting_activities, get_meeting_decisions, get_meeting_foreseen_activities, get_voting_records, get_meeting_plenary_session_documents, get_meeting_plenary_session_document_items |
| 演讲 | /speeches, /speeches/{id} | get_speeches |
| 程序 | /procedures, /procedures/{id}, /procedures/{id}/events, /procedures/{id}/events/{event-id} | get_procedures, get_procedure_events, get_procedure_event_by_id |
| 文档 | /documents, /documents/{id}, /adopted-texts, /adopted-texts/{id}, /committee-documents, /committee-documents/{id}, /plenary-documents, /plenary-documents/{id}, /plenary-session-documents, /plenary-session-documents/{id}, /plenary-session-documents-items | search_documents, get_adopted_texts, get_committee_documents, get_plenary_documents, get_plenary_session_documents, get_plenary_session_document_items |
| 质询 | /parliamentary-questions, /parliamentary-questions/{id} | get_parliamentary_questions |
| 外部文档 | /external-documents, /external-documents/{id} | get_external_documents |
| 受控词汇表 | /controlled-vocabularies, /controlled-vocabularies/{id} | get_controlled_vocabularies |
| Feed 端点 | /meps/feed, /events/feed, /procedures/feed, /adopted-texts/feed, /meps-declarations/feed, /documents/feed, /plenary-documents/feed, /committee-documents/feed, /plenary-session-documents/feed, /external-documents/feed, /parliamentary-questions/feed, /corporate-bodies/feed, /controlled-vocabularies/feed | get_meps_feed, get_events_feed, get_procedures_feed, get_adopted_texts_feed, get_mep_declarations_feed, get_documents_feed, get_plenary_documents_feed, get_committee_documents_feed, get_plenary_session_documents_feed, get_external_documents_feed, get_parliamentary_questions_feed, get_corporate_bodies_feed, get_controlled_vocabularies_feed |
数据源
- API:https://data.europarl.europa.eu/api/v2/
- 文档:https://data.europarl.europa.eu/en/developer-corner
- 格式:JSON-LD、RDF/XML、Turtle
- 许可证:European Parliament Open Data License
🔒 安全与合规
ISMS 合规
本项目符合 Hack23 AB's Information Security Management System (ISMS):
- ✅ ISO 27001:2022 - 信息安全管理
- ✅ NIST CSF 2.0 - 网络安全框架
- ✅ CIS Controls v8.1 - 安全最佳实践
- ✅ GDPR - 欧盟数据保护合规
安全功能
- 🔐 身份验证:API 密钥 + OAuth 2.0(计划中)
- 🛡️ 输入验证:所有输入均使用 Zod 模式
- ⚡ 速率限制:每分钟 100 个请求
- 🔒 安全标头:CSP、HSTS、X-Frame-Options 等
- 📝 审计日志:记录所有数据访问
- 🔍 漏洞扫描:CodeQL、Dependabot、OSSF Scorecard
供应链安全
本项目符合 SLSA Level 3:
- ✅ 构建来源证明 - 构建完整性的加密证明
- ✅ 证明 - 所有制品均经过加密签名
- ✅ 验证 -
gh attestation verify <artifact> --owner Hack23 --repo European-Parliament-MCP-Server - ✅ npm 来源证明 - 发布时附带来源证明,确保软件包完整性
- ✅ SBOM - SPDX 格式的软件物料清单
- ✅ 依赖项审查 - 自动漏洞扫描
- ✅ 许可证合规性 - 仅允许 MIT、Apache-2.0、BSD、ISC
有关验证说明和安全优势,请参阅 ATTESTATIONS.md。
📋 项目分类
根据 Hack23 开源政策:
| 属性 | 值 |
|---|---|
| CRA 分类 | |
| 机密性 | |
| 完整性 | |
| 可用性 |
完整的《欧盟网络韧性法案》符合性评估,请参阅 CRA-ASSESSMENT.md。
🧪 开发
设置开发环境
# Install dependencies
npm install
# Run in development mode with auto-reload
npm run dev
# Type checking
npm run type-check
# Linting
npm run lint
# Format code
npm run format
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
项目结构
European-Parliament-MCP-Server/
├── src/ # Source code
│ ├── server.ts # MCP server entry point
│ ├── tools/ # MCP tool implementations
│ ├── resources/ # MCP resource handlers
│ ├── prompts/ # MCP prompt templates
│ ├── clients/ # European Parliament API client
│ ├── schemas/ # Zod validation schemas
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions
├── tests/ # Test files
├── .github/ # GitHub configuration
│ ├── agents/ # Custom Copilot agents
│ ├── skills/ # Reusable skill patterns
│ └── workflows/ # CI/CD workflows
└── docs/ # Additional documentation
文档
📚 开发者文档
- JSDoc 覆盖率报告 - 对所有源文件中 JSDoc 文档覆盖率的详细分析
- JSDoc 快速参考 - 编写全面 JSDoc 注释的快速参考指南
- JSDoc 覆盖率摘要 - 文档状态和优先事项的概要
- JSDoc 覆盖率可视化 - 通过图表和示意图直观展示文档覆盖率
🏗️ 架构与设计
- 架构文档 - 系统架构和设计模式
- 数据模型 - 数据结构和类型定义
- API 使用指南 - MCP 服务 API 使用指南
- EP 政治格局 - 📊 全面的 Mermaid 可视化图表,涵盖所有 EP 统计数据(2004–2026)、政治罗盘、联盟动态和 OSINT 情报指标——所有年份均已通过 EP API v2 验证
🧪 测试与质量
🔒 安全与合规
📦 部署与运维
测试
# Unit tests
npm test
# Integration tests (requires EP_INTEGRATION_TESTS=true)
EP_INTEGRATION_TESTS=true npm run test:integration
# Integration tests with fixture capture
EP_INTEGRATION_TESTS=true EP_SAVE_FIXTURES=true npm run test:integration
# E2E tests
npm run test:e2e
# Coverage report
npm run test:coverage
# Watch mode
npm run test:watch
集成测试:当 EP_INTEGRATION_TESTS=true 时,集成测试套件会针对欧洲议会的真实 API 端点验证 46 个 MCP 工具(完整的 62 个工具覆盖指南请参阅 INTEGRATION_TESTING.md)。所有工具都会返回真实数据,不使用模拟数据或占位数据。默认情况下会禁用实时 API 测试,以遵守速率限制(每分钟 100 个请求)。
代码质量
# Lint code
npm run lint
# Fix linting issues
npm run lint:fix
# Check for unused dependencies
npm run knip
# Security audit
npm audit
# License compliance
npm run test:licenses
# Optional: keep Mermaid diagrams readable while editing
# (Mermaid validation is not currently enforced in CI)
🛠️ 故障排除
API 速率限制
症状: 请求返回 429 Too Many Requests,或意外变慢。
欧洲议会开放数据 API 会强制执行速率限制。MCP 服务 会自动应用令牌桶速率限制器(每分钟 100 个请求)。
解决方案:
# Reduce concurrency — don't call multiple tools in parallel bursts
# Use the built-in cache — repeated identical requests are served from LRU cache
# Add a delay between bulk operations:
# e.g., call get_meps, wait 1 s, then call get_mep_details
# Check current cache stats (if using programmatic access):
const stats = epClient.getCacheStats();
console.log(`Cache hit rate: ${stats.hitRate}%`);
连接问题
症状: 工具返回 ECONNREFUSED、ETIMEDOUT 或 Network error。
解决方案:
- 验证 EP API 是否可访问:
curl https://data.europarl.europa.eu/api/v2/meps?limit=1 - 检查防火墙/代理设置——服务会向外连接到
data.europarl.europa.eu:443 - 启用重试(默认:开启)——客户端会通过指数退避重试暂时性故障
- 查看 https://data.europarl.europa.eu/en/developer-corner 上的 API 状态
安装问题
症状: npm install 失败,或 node dist/index.js 抛出导入错误。
解决方案:
# Ensure Node.js 26+ is installed
node --version # Must be >= 26.0.0
# Clear npm cache and reinstall
npm cache clean --force
rm -rf node_modules package-lock.json
npm install
# Rebuild TypeScript output
npm run build
# Verify the package starts correctly
node dist/index.js --version
症状: MCP 客户端显示“找不到服务”或未列出任何工具。
解决方案:
- 确认 MCP 客户端配置中的
command路径指向正确的二进制文件 - 对于
npx:确保european-parliament-mcp-server位于你的 npm 注册表中 - 对于
node:使用dist/index.js的绝对路径 - 检查 MCP 客户端日志——大多数客户端(Claude Desktop、VS Code)都会记录连接错误
集成测试失败
症状: 集成测试因 EP_INTEGRATION_TESTS must be set 而失败。
默认情况下会禁用集成测试,以遵守 API 速率限制。
# Enable integration tests explicitly:
EP_INTEGRATION_TESTS=true npm run test:integration
# Capture fresh fixtures for offline testing:
EP_INTEGRATION_TESTS=true EP_SAVE_FIXTURES=true npm run test:integration
TypeScript/构建错误
症状: 拉取最新更改后,tsc 报告类型错误。
# Regenerate all types
npm run type-check
# Check for mismatched Node types
npm install # updates @types/node
# Ensure tsconfig is correct
cat tsconfig.json
获取帮助
- 📋 提交 Issue
- 💬 发起讨论
- 📖 完整故障排除指南
- 🤖 向 DeepWiki 提问
🤝 参与贡献
欢迎贡献!有关以下内容的详情,请参阅 CONTRIBUTING.md:
- 行为准则
- 开发流程
- Pull Request 指南
- 编码规范
- 测试要求
GitHub Copilot 集成
此仓库包含适用于 GitHub Copilot 的自定义 Agent 和技能:
- Agent:面向开发、测试、安全和文档工作的专业 AI 助手
- 技能:适用于 MCP 开发、安全、测试和性能的可复用模式
- 请参阅 .github/agents/README.md 和 .github/skills/README.md
发布流程
我们遵循 语义化版本,并使用自动化发布管理:
版本类型:
- 主版本(x.0.0):包含不兼容的变更(例如,API 不兼容变更)
- 次版本(0.x.0):新增功能,向后兼容(例如,新增 MCP 工具)
- 补丁版本(0.0.x):错误修复、安全更新,向后兼容
自动化发布工作流:
- 在功能分支中开发功能
- 创建 PR,使用 Conventional Commits 撰写描述性标题
- 根据变更的文件自动应用标签
- 合并到 main 后,自动创建发布草稿
- 审核并发布版本(自动创建 git 标签)
发布说明包括:
- 按功能领域分类的变更
- 安全徽章(OpenSSF Scorecard、SLSA)
- 技术栈和兼容性
- ISMS 合规状态
- 完整的变更日志链接
有关详细的工作流文档,请参阅 .github/WORKFLOWS.md。
🤖 AI 颠覆式智能与未来路线图
📰 新闻已死,智能永存。
当全球新闻编辑室竞相用 GPT 驱动的标题工厂取代记者——以幻觉般的速度批量炮制 “欧盟今日所做的 10 件事” 列表文章时,我们选择了不同的道路。我们没有自动化新闻 快讯,而是构建了一个真正 理解 欧洲议会所作所为的政治情报平台。颠覆式新闻生成只会制造噪音;深度政治情报才能提取信号。任何聊天机器人都能总结新闻稿。要告诉你 哪位欧洲议会议员悄然促成了一项修正案,而这项修正案改变了指令,进而重塑了一个行业——早在报纸察觉的三个月之前,则需要 62 个 MCP 工具、15 个 OSINT 分析器和一个五维影响力模型。
这不是新闻机器人,而是议会情报基础设施。
🏗️ Agentic 架构概览
本代码库由一套全面的 AI 增强型开发生态系统提供支持——包括 14 个专用 Copilot Agent、41 项可复用技能和 11 个 CI/CD 工作流——它们协同工作,维护、分析并演进现有最先进的政治 MCP 服务。
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366f1', 'primaryTextColor': '#fff', 'primaryBorderColor': '#4f46e5', 'lineColor': '#94a3b8', 'secondaryColor': '#f59e0b', 'tertiaryColor': '#10b981', 'background': '#0f172a', 'mainBkg': '#1e293b', 'nodeBorder': '#475569'}}}%%
graph TB
subgraph AGENTS["🤖 14 Copilot Agents"]
style AGENTS fill:#1e1b4b,stroke:#6366f1,color:#e0e7ff
A1["🎯 product-task-agent"]
A2["📝 documentation-writer"]
A3["🔧 frontend-specialist"]
A4["🔌 api-integration-engineer"]
A5["⚙️ mcp-developer"]
A6["🛡️ security-specialist"]
A7["🧪 test-engineer"]
A8["🕵️ intelligence-operative"]
A9["🏛️ european-parliament-specialist"]
A10["📊 performance-optimizer"]
A11["📋 isms-compliance-auditor"]
A12["💼 business-development-specialist"]
A13["📣 marketing-specialist"]
A14["🧩 zod-schema-architect"]
end
subgraph SKILLS["🎯 41 Reusable Skills"]
style SKILLS fill:#1c1917,stroke:#f59e0b,color:#fef3c7
S1["🔧 10 Core Dev Skills"]
S2["🛡️ 6 Security Skills"]
S3["⚙️ 4 DevOps Skills"]
S4["🔍 10 Intel & OSINT Skills"]
S5["💼 2 Business Skills"]
S6["🤖 3 AI & MCP Gateway Skills"]
S7["📋 6 ISMS Compliance Skills"]
end
subgraph WORKFLOWS["⚙️ 11 CI/CD Workflows"]
style WORKFLOWS fill:#022c22,stroke:#10b981,color:#d1fae5
W1["🧪 test-and-report"]
W2["🔍 codeql"]
W3["📦 release"]
W4["🌐 integration-tests"]
W5["📋 sbom-generation"]
W6["🔒 slsa-provenance"]
W7["📊 scorecard"]
W8["🔎 dependency-review"]
W9["🏷️ labeler"]
W10["⚙️ setup-labels"]
W11["🤖 copilot-setup-steps"]
end
subgraph TOOLS["🔌 62 MCP Tools"]
style TOOLS fill:#172554,stroke:#3b82f6,color:#dbeafe
T1["🕵️ 15 OSINT Intelligence"]
T2["📊 3 Advanced Analysis + 1 Diagnostics"]
T3["👤 7 MEP Data"]
T4["🏛️ 9 Plenary & Meeting"]
T5["📄 12 Document, Committee & Legislative"]
end
AGENTS --> SKILLS
AGENTS --> TOOLS
SKILLS --> WORKFLOWS
WORKFLOWS --> TOOLS
📅 未来高级路线图:2026–2037
从今天的 62 个 MCP 工具,迈向服务于全部 195 个议会体系的变革性民主情报平台——由 AI 模型世代的持续演进驱动。
阶段 5:高级智能(2026–2027)
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366f1', 'primaryTextColor': '#fff', 'primaryBorderColor': '#4f46e5', 'lineColor': '#94a3b8', 'secondaryColor': '#22d3ee', 'tertiaryColor': '#10b981'}}}%%
timeline
title 2026–2027 · Advanced Intelligence Era
section Q1–Q2 2026
Agentic News Generation : Opus 4.6–4.7
: AI-generated parliamentary briefings
: Automated committee intelligence reports
: Real-time vote analysis summaries
section Q3–Q4 2026
Deep Analysis Pipelines : Opus 4.8–4.9
: Cross-institutional correlation engine
: MEP behavioral prediction models
: Legislative outcome forecasting
section Q1–Q2 2027
Predictive Analytics : Opus 5.0–5.1
: Coalition formation prediction
: Amendment survival probability
: Policy impact pre-assessment
section Q3–Q4 2027
Multi-source Intelligence : Opus 5.2–5.3
: EUR-Lex deep integration
: Council position analysis
: Commission proposal tracking
阶段 6:AGI 时代与变革性民主(2034–2037)
情景:通过 Amazon Bedrock 或后继平台提供 AGI 或接近 AGI 的系统
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#a855f7', 'primaryTextColor': '#fff', 'lineColor': '#c084fc', 'secondaryColor': '#f59e0b', 'tertiaryColor': '#ec4899'}}}%%
mindmap
root(("🌐 AGI Era\n2034–2037"))
🤖 AGI-Enhanced Intelligence
Autonomous real-time analysis
All 195 parliamentary systems
Every legislative session globally
Sub-second pattern detection
Universal language support
All UN official languages
Regional dialects & legal terminology
Real-time translation & summarization
📊 Predictive Governance
Policy impact prediction
Before legislation is proposed
Economic modeling integration
Social impact forecasting
Democratic health monitoring
Voter engagement indices
Institutional resilience scores
Democratic backsliding alerts
⚖️ Ethical AI Governance
Human oversight maintained
Regardless of AI capability level
Escalation protocols for critical decisions
Transparency reports on AI judgments
Bias detection & correction
Multi-cultural fairness auditing
Political neutrality verification
Algorithmic accountability logs
🛡️ Democratic Safeguards
Anti-weaponization architecture
Platform prevents manipulation
Disinformation detection layer
Foreign influence monitoring
Sovereignty protection
EU data sovereignty enforced
Quantum-resistant encryption
Air-gapped government deployments
🧬 AI 模型演进策略
**假设:**Anthropic Opus 每约 2.3 个月进行一次小版本更新,持续至 2037 年(或直至出现后继范式)。每年进行一次大版本升级。每次重大版本发布时评估竞争对手(OpenAI、Google、Meta、欧盟主权 AI)。架构必须能够适应潜在的范式转变(量子 AI、神经形态计算)。
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366f1', 'primaryTextColor': '#fff', 'primaryBorderColor': '#4f46e5', 'lineColor': '#94a3b8', 'secondaryColor': '#f59e0b', 'tertiaryColor': '#10b981'}}}%%
gantt
title AI Model Evolution & Platform Capability Growth
dateFormat YYYY
axisFormat %Y
todayMarker off
section AI Models
Opus 4.6–4.9 :a1, 2026, 2027
Opus 5.x :a2, 2027, 2028
Opus 6.x Multimodal :a3, 2028, 2029
Opus 7.x Autonomous :a4, 2029, 2030
Opus 8.x Near-Expert :a5, 2030, 2031
Opus 9–10.x Pre-AGI :a6, 2031, 2034
AGI / Post-AGI :a7, 2034, 2037
section Platform Phases
Phase 5 Advanced Intel :p5, 2026, 2028
Phase 5b Predictive :p5b, 2028, 2030
Phase 5c Autonomous :p5c, 2030, 2031
Phase 6 Pre-AGI Global :p6a, 2031, 2034
Phase 6 AGI Transformative :p6b, 2034, 2037
📊 工作流数量与能力预测
**基线:**目前有 11 个 GitHub Actions 工作流。预计增长包括 AI 生成的工作流、定时智能流水线、多环境部署链以及自动化 OSINT 处理——详细扩展计划请参阅 FUTURE_WORKFLOWS.md。
| 年份 | 工作流总数 | AI 模型 | 关键能力 | 工具 |
|---|---|---|---|---|
| 2026 | 44–50 | Opus 4.6–4.9 | 🤖 Agent 式新闻生成、AI 撰写的简报 | 46→55 |
| 2027 | 50–55 | Opus 5.x | 📈 预测分析、联盟预测 | 55→65 |
| 2028 | 55–65 | Opus 6.x | 🎥 多模态内容、视频/语音分析 | 65→80 |
| 2029 | 65–75 | Opus 7.x | ⚡ 自主流水线、自优化 CI/CD | 80→90 |
| 2030 | 75–85 | Opus 8.x | 🧠 近专家级分析、领域专家 AI | 90→100 |
| 2031–2033 | 85–100 | Opus 9–10.x / Pre-AGI | 🌍 全球覆盖、所有欧盟国家议会 | 100→120 |
| 2034–2037 | 100–120+ | AGI / Post-AGI | 🌐 变革性平台、195 个议会 | 120→200+ |
🔮 战略考量
| 支柱 | 描述 | 安全保障 |
|---|---|---|
| 🤖 自主分析 | 由 AGI 驱动,覆盖全部 195 个议会体系的实时政治情报 | 对高风险评估进行人工分析师审查 |
| 🌐 通用语言 | 原生支持所有联合国官方语言,并精准处理法律术语 | 每次发布均进行多元文化公平性审计 |
| 📊 预测式治理 | 在提出立法前预测政策影响 | 必须提供置信区间并量化不确定性 |
| ⚖️ AI 伦理治理 | 无论 AI 能力水平如何,均保留人工监督 | 符合 ISMS 的升级流程和透明度报告 |
| 🛡️ 民主保障 | 平台架构可防止武器化或操纵 | 每季度进行红队演练,数据政策优先保障主权 |
🗺️ 扩展路线图可视化
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#6366f1', 'primaryTextColor': '#fff', 'lineColor': '#94a3b8'}}}%%
graph LR
subgraph Y2026["2026"]
style Y2026 fill:#1e40af,stroke:#3b82f6,color:#dbeafe
Y26["🤖 Opus 4.6–4.9\n44–50 workflows\nAgentic news gen"]
end
subgraph Y2027["2027"]
style Y2027 fill:#1e3a8a,stroke:#3b82f6,color:#dbeafe
Y27["📈 Opus 5.x\n50–55 workflows\nPredictive analytics"]
end
subgraph Y2028["2028"]
style Y2028 fill:#312e81,stroke:#6366f1,color:#e0e7ff
Y28["🎥 Opus 6.x\n55–65 workflows\nMulti-modal content"]
end
subgraph Y2029["2029"]
style Y2029 fill:#4c1d95,stroke:#8b5cf6,color:#ede9fe
Y29["⚡ Opus 7.x\n65–75 workflows\nAutonomous pipeline"]
end
subgraph Y2030["2030"]
style Y2030 fill:#581c87,stroke:#a855f7,color:#f3e8ff
Y30["🧠 Opus 8.x\n75–85 workflows\nNear-expert analysis"]
end
subgraph Y2031_33["2031–33"]
style Y2031_33 fill:#701a75,stroke:#d946ef,color:#fae8ff
Y31["🌍 Pre-AGI\n85–100 workflows\nGlobal coverage"]
end
subgraph Y2034_37["2034–37"]
style Y2034_37 fill:#831843,stroke:#ec4899,color:#fce7f3
Y34["🌐 AGI Era\n100–120+ workflows\nTransformative platform"]
end
Y26 --> Y27 --> Y28 --> Y29 --> Y30 --> Y31 --> Y34
📚 未来架构文档
如需深入了解特定演进方向,请参阅:
| 文档 | 重点 | 链接 |
|---|---|---|
| 📊 EP 政治格局 | OSINT 情报仪表板(2004–2026)——席位构成、碎片化程度、政治光谱、联盟动态、衍生指标;所有年份均已通过 EP API v2 验证 | EP_POLITICAL_LANDSCAPE.md |
| 🧠 未来思维导图 | 能力扩展愿景、AI 分析、OSINT 演进 | FUTURE_MINDMAP.md |
| ⚙️ 未来工作流 | CI/CD 演进、AI 增强流水线、2027–2037 路线图 | FUTURE_WORKFLOWS.md |
| 🏛️ 未来架构 | 平台架构演进、AWS 部署、联邦化 | FUTURE_ARCHITECTURE.md |
| 🛡️ 未来安全 | 安全成熟度路线图、量子就绪加密 | FUTURE_SECURITY_ARCHITECTURE.md |
| 📊 未来数据模型 | 增强型数据结构、图数据库、时序模型 | FUTURE_DATA_MODEL.md |
| 💼 未来 SWOT 分析 | 战略定位、竞争分析、市场演进 | FUTURE_SWOT.md |
📜 许可证
本项目采用 Apache License 2.0 许可——详情请参阅 LICENSE.md。
🔗 链接
项目资源
Hack23 生态系统
- 🏢 Hack23 AB — 瑞典网络安全与开源情报咨询公司(博客 · LinkedIn)
- 🏛️ EU Parliament Monitor(代码仓库 · npm · 政治情报中心 · DeepWiki)— 由此 MCP 服务驱动,每日以 14 种语言生成欧盟议会情报
- 🗳️ Riksdagsmonitor(代码仓库 · npm · 新闻 · 仪表板 · DeepWiki)— 瑞典议会情报,11 个 Agent 工作流,涵盖 50 多年的历史证据
- 🕵️ 公民情报机构(CIA)(Pages · DeepWiki)— Java/Spring 政治分析后端,包含 15 个子系统,以及 1971–2024 年的投票与文档语料库
- 🛡️ Hack23 ISMS-PUBLIC — 公开的 ISO 27001:2022 / NIST CSF 2.0 / CIS Controls v8.1 信息安全管理体系
欧洲议会
MCP 协议
MCP 注册表
- npm 包 — npm 注册表
政治与政府 MCP 服务
- Congress.gov API MCP 服务 — 美国国会数据(TypeScript)
- UK Parliament MCP — 英国 Hansard、议员与辩论
- Riksdag & Regering MCP — 瑞典议会数据
- 波兰议会 MCP — 波兰议会数据
- OpenTK MCP — 荷兰议会(Tweede Kamer)文件
- Knesset MCP — 以色列议会数据
- CKAN MCP 服务 — 通用 CKAN 门户访问
- OpenGov MCP 服务 — 由 Socrata 驱动的门户
Hack23 ISMS
🙏 致谢
- 欧洲议会提供开放数据访问
- Model Context Protocol 团队制定 MCP 规范
- Hack23 AB 提供 ISMS 政策和安全标准
- OpenSSF 提供供应链安全工具
- 帮助改进本项目的贡献者
由 Hack23 AB 倾情打造 ❤️
通过透明的开源实践展现卓越安全能力
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。