mcpField
S
srgssr-mcp

srgssr-mcp

本地服务
github.com游戏娱乐12 周前更新

关于 srgssr-mcp

srgssr-mcp 是面向 AI 助手的只读 MCP 服务,可通过统一接口查询瑞士天气、广播节目与节目表,以及投票和选举结果。它覆盖五类数据,并支持本地与云端传输方式。

主要功能

  1. 01瑞士天气实况与预报
  2. 02电视和广播节目、剧集及直播
  3. 03每日电子节目表
  4. 041900 年以来的瑞士投票和选举结果
  5. 05覆盖 SRF、RTS、RSI、RTR 和 SWI
  6. 06提供工具、资源和可复用提示词

适用场景

  1. 01查询瑞士地点的天气实况或预报
  2. 02查看频道每日电视或广播节目表
  3. 03检索剧集或直播节目列表
  4. 04查询国家及州级投票或选举结果

MCP 相关

通过工具、资源和提示词向 MCP 客户端提供 SRG SSR 公共 API 数据。支持 stdio、SSE 和 Streamable HTTP 传输方式。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"malkreide-srgssr": {
"command": "uvx",
"args": [
"srgssr-mcp"
]
}
}
}
启动命令uvx srgssr-mcp

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

安装包
pypisrgssr-mcp2.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🇨🇭 属于 瑞士公共数据 MCP 组合

📺 srgssr-mcp

Version License: MIT Python 3.11+ MCP CI Data Source

连接 AI 模型与 SRG SSR 公共 API 的 MCP 服务——天气、电视/广播元数据、节目指南,以及自 1900 年以来的瑞士公投/选举数据(SRF、RTS、RSI、RTR、SWI)。

🇩🇪 德语版

演示:Claude 提出问题 → srgssr-mcp 工具调用 → 来自 SRG SSR Polis API 的可靠回答


概述

srgssr-mcp 让 Claude 等 AI 助手能够直接访问 SRG SSR 的公共 API——瑞士的国家公共广播机构。天气预报、电视和广播元数据、电子节目指南,以及历史民主数据(自 1900 年以来的公投和选举),都可以通过一个标准化的 MCP 接口访问。

该服务涵盖五个主题类别:SRF 天气、视频、音频、EPG 和 Polis(瑞士民主)。每个类别都对应一组专用工具,可将原始 SRG SSR API 数据转换为简洁的 JSON 响应。

演示示例查询: “倡议 X 的公投在苏黎世有哪些州级结果?”——回答基于 Polis 系统的历史实时数据,而非幻觉。


功能

  • 🌦️ 天气——地点搜索、当前天气状况、24 小时逐小时预报、7 天预报(SRF Meteo)
  • 📺 视频——电视节目列表、最新剧集、所有业务部门的电视频道直播
  • 🎙️ 音频——广播节目列表、音频剧集、电台直播
  • 📅 EPG——任意电视频道或广播频道的每日节目安排
  • 🗳️ Polis——自 1900 年以来的公投和选举,全国及州级结果
  • 🏢 多业务部门——SRF(DE)、RTS(FR)、RSI(IT)、RTR(RM)、SWI(多语言)
  • 🔐 OAuth2——通过 Client Credentials 流自动管理令牌
  • ☁️ 双传输方式——供 Claude Desktop 使用的 stdio,以及用于云端部署的 Streamable HTTP/SSE

前提条件

  • Python 3.11+
  • 来自 developer.srgssr.ch 的 API 密钥(免费注册):
    1. 创建账户并登录
    2. 在“My Apps”下创建新应用
    3. 添加产品 SRG SSR PUBLIC API V2
    4. 记下你的 Consumer Key 和 Consumer Secret

⚠️ 使用条款: SRG SSR API 可用于非商业用途。如需商业使用,请直接联系 [email protected]。


安装

# Clone the repository
git clone https://github.com/malkreide/srgssr-mcp.git
cd srgssr-mcp

# Install
pip install -e .

或使用 uvx(无需永久安装):

uvx srgssr-mcp

或通过 pip 安装:

pip install srgssr-mcp

快速开始

# Set credentials
export SRGSSR_CONSUMER_KEY="your-consumer-key"
export SRGSSR_CONSUMER_SECRET="your-consumer-secret"

# Start the server (stdio mode for Claude Desktop)
srgssr-mcp

立即在 Claude Desktop 中试用:

“明天苏黎世的天气怎么样?” “今晚 SRF 1 有什么节目?” “2010 年至 2020 年间,伯尔尼州举行过哪些公投?”


配置

Claude Desktop

最简配置(推荐):

{
  "mcpServers": {
    "srgssr": {
      "command": "uvx",
      "args": ["srgssr-mcp"],
      "env": {
        "SRGSSR_CONSUMER_KEY": "your-consumer-key",
        "SRGSSR_CONSUMER_SECRET": "your-consumer-secret"
      }
    }
  }
}

配置文件位置:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

保存后,请完全重启 Claude Desktop。

其他 MCP 客户端

兼容 Cursor、Windsurf、VS Code + Continue、LibreChat、Cline,以及通过 mcp-proxy 使用的可自托管模型。设置相同的环境变量。

云端部署(用于浏览器访问的 SSE)

用于通过浏览器中的 claude.ai 访问(例如,在没有本地软件的受管工作站上):

SRGSSR_CONSUMER_KEY=... \
SRGSSR_CONSUMER_SECRET=... \
SRGSSR_MCP_TRANSPORT=streamable-http \
SRGSSR_MCP_HOST=0.0.0.0 \
SRGSSR_MCP_PORT=8000 \
  python -m srgssr_mcp.server

传输方式、主机、端口和挂载路径均由环境变量控制 (参见 srgssr_mcp.server.Settings)。SRGSSR_MCP_TRANSPORT 的有效值为 stdio(默认值)、sse 和 streamable-http。

💡 “开发者笔记本用 stdio,浏览器用 SSE。”


MCP 原语

此服务提供了 MCP 的全部三种正交原语:

原语理解方式内容
工具(动词)可执行函数/参数化查询15 个工具——搜索、列出、获取、汇总
资源(名词)可通过 URI 访问、适合缓存的被动数据EPG 条目和不可变的投票结果
提示词(方案)可复用的工作流模板投票分析和每日简报

工具涵盖参数化搜索(年份范围、自由文本、分页列表),每次调用都可能产生不同结果。资源提供稳定的数据点,适合安全缓存:指定频道和日期已发布的 EPG,或已结束的瑞士全民投票最终结果。提示词将重复进行的多步骤分析标准化,用户无需每次从头描述。

资源
URI 模板说明
epg://{bu}/{channel_id}/{date}SRF、RTS、RSI 的每日电视/广播节目指南(例如 epg://srf/srf-1/2026-04-30)
votation://{votation_id}已结束的瑞士全民投票详细结果(例如 votation://v1)

EPG 电台 ID——使用连字符,与直播流 ID 不同:

业务部门电视广播
SRFsrf-1、srf-2、srf-infosrf-1、srf-2、srf-2-kultur、srf-3、srf-4、srf-musikwelle、srf-virus
RTSrts-1、rts-2、rts-infoLA1ERE、ESPACE2、COULEUR3、OPTION_MUSIQUE
RSIla-1、la-2rete-uno、rete-due、rete-tre
提示词
名称参数用途
analyse_abstimmungsverhaltenvotation_id、focus(stadt_land/sprachregionen/kantone)对瑞士全民投票进行结构化分析
tagesbriefing_kantonlocation、channel_id、business_unit、date结合天气和 EPG 的每日简报

可用工具

工具命名约定

此服务的工具名称采用 snake_case,遵循 Python 生态惯例。虽然 MCP 最佳实践倾向于使用 camelCase,以便大模型更好地进行词元化,但 snake_case 仍然是可接受的,也能让工具名称与底层 Python 函数标识符保持一致。

所有工具均遵循 srgssr_<domain>_<action> 模式,使用命名空间前缀 srgssr_ 和语义明确的 <domain>_<action> 后缀(例如 srgssr_weather_current、srgssr_polis_get_votations)。

🌦️ SRF 天气(4 个工具)
工具说明数据来源
srgssr_weather_search_location按名称或邮政编码搜索地点,以获取 geolocationIdSRF Meteo
srgssr_weather_current瑞士地点的当前天气状况SRF Meteo
srgssr_weather_forecast_24h24 小时逐小时预报SRF Meteo
srgssr_weather_forecast_7day7 天逐日预报SRF Meteo
📺 视频(3 个工具)
工具说明数据来源
srgssr_video_get_shows列出某业务部门的电视节目(character_filter 取 a–z/# 可选择一个首字母;省略则遍历全部 27 个)SRG SSR IL
srgssr_video_get_episodes获取某节目的最新剧集SRG SSR IL
srgssr_video_get_livestreams列出电视直播频道SRG SSR IL
🎙️ 音频(3 个工具)
工具描述数据来源
srgssr_audio_get_shows列出一个广播频道的节目(必须提供 channel_id——v2 API 不支持按业务单元列出节目)SRG SSR IL
srgssr_audio_get_episodes获取某个节目的音频剧集SRG SSR IL
srgssr_audio_get_livestreams列出正在直播的广播电台SRG SSR IL
📅 EPG – 电子节目指南(1 个工具)
工具描述数据来源
srgssr_epg_get_programs电视频道或广播频道的每日节目安排SRG SSR IL
🗳️ Polis – 瑞士民主(3 个工具)
工具描述数据来源
srgssr_polis_get_votations1900 年以来的全民投票(国家级或州级)Polis API
srgssr_polis_get_votation_results某项投票的详细结果Polis API
srgssr_polis_get_elections1900 年以来的选举结果Polis API
支持的业务单元
代码单元语言
srfSRF (Schweizer Radio und Fernsehen)德语
rtsRTS (Radio Télévision Suisse)法语
rsiRSI (Radiotelevisione svizzera)意大利语
rtrRTR (Radiotelevisiun Svizra Rumantscha)罗曼什语
swiSWI swissinfo.ch多语言
示例用例
查询工具
“明天苏黎世的天气怎么样?”srgssr_weather_forecast_24h
“今晚 SRF 1 播什么?”srgssr_epg_get_programs
“最新的 Tagesschau 剧集有哪些?”srgssr_video_get_episodes
“2010–2020 年伯尔尼州的全民投票有哪些?”srgssr_polis_get_votations
“口罩倡议投票的州级结果是什么?”srgssr_polis_get_votation_results
“RTS 当前播出的所有广播节目有哪些?”srgssr_audio_get_livestreams → srgssr_audio_get_shows

→ 按受众查看更多用例 →


架构

┌─────────────┐
│ Claude / LLM│
└──────┬──────┘
       │ MCP (stdio)
┌──────▼───────────────────┐
│ srgssr-mcp Server        │
│  ├─ Weather Tools (4)    │
│  ├─ EPG Tools (1)        │
│  ├─ Polis Tools (3)      │
│  ├─ Video Tools (3)      │
│  └─ Audio Tools (3)      │
└──────┬───────────────────┘
       │ HTTPS (OAuth2)
┌──────▼──────────────┐
│ SRG SSR Public APIs │
│  developer.srgssr.ch│
└─────────────────────┘
数据来源
来源数据访问方式
developer.srgssr.chSRG SSR PUBLIC API V2(天气、A/V、EPG、Polis)OAuth2(免费注册)

署名: SRG SSR API 受 SRG SSR 使用条款约束。


开发阶段

此服务处于 阶段 1:只读封装。

此服务仅针对 SRG SSR 公共 API 提供 GET 类操作。按照设计,不具备写入、修改或删除功能——有关威胁模型的影响,请参阅安全与限制。

阶段 1 完成标准
  • 五个主题类别(天气、视频、音频、EPG、Polis)共 14 个只读工具
  • 使用令牌缓存的 OAuth2 Client Credentials 身份验证
  • 双语文档(EN/DE)
  • 测试套件(单元测试 + 实时测试)——参阅 OPS-001
  • 结构化日志记录——参阅 OBS-003 和 CHANGELOG
  • 可用于生产环境的错误处理(统一重试/退避策略、类型化错误封装)
后续阶段
  • **阶段 2(写入):**未列入计划。 SRG SSR 公共 API 按约定仅支持只读;上游没有可供写入的接口。
  • **阶段 3(多 Agent):**暂缓评估。 待用户反馈表明存在此服务应协调的具体多 Agent 工作流后,再重新考虑(例如,与 swiss-statistics-mcp 或 swiss-transport-mcp 进行跨服务聚合)。

MCP 协议版本

mcp 2.x 在同一服务器上支持两个协议时代,客户端在连接上发送的第一个请求决定使用哪一个:

时代版本适用对象
initialize 握手2024-11-05 … 2025-11-25当今客户端使用的协议。服务器会返回请求中指定的版本;如果请求的版本更新,则返回上限 2025-11-25。
逐请求信封2026-07-28携带 2026-07-28 _meta 信封的请求会建立现代连接。

src/srgssr_mcp/_app.py 中的 PROTOCOL_VERSION 指定了现代时代的版本。它会在导入时根据已安装 SDK 的 SUPPORTED_PROTOCOL_VERSIONS 进行验证——但该列表向后兼容,仍包含 2024-11-05,因此成员检查只能捕获某个版本被移除,无法发现版本不一致。tests/test_protocol_version.py 会针对 SDK 检查这两个时代的版本,并负责捕获版本不一致。版本升级会记录在对应版本的 CHANGELOG.md 中。

服务器实际上在线路上发送的内容

上表曾是依据 SDK 常量作出的断言。现在,tests/test_spec_2026_07_28.py 会通过 httpx.ASGITransport 将真实请求发送到 MCPServer.streamable_http_app(),并验证两个时代的响应。该实测验证了以下内容:

属性线路上的表现
现代入口server/discover,没有 initialize,也没有 Mcp-Session-Id;supportedVersions: ["2026-07-28"]
握手版本上限客户端通过 initialize 请求 2026-07-28 时,会收到 2025-11-25——这是实测结果,并非推断
服务器身份io.modelcontextprotocol/serverInfo 随每个现代响应一起置于 _meta 中,并携带已安装的软件包版本
新鲜度(SEP-2549)server/discover 和四种列表方法的 ttlMs: 300000、cacheScope: public
工具显示名称根据 BaseMetadata 设置 title,并同步到 annotations.title,供只读取此处的握手时代客户端使用
2026-07-28 中已撤销ping、logging/setLevel、resources/subscribe、resources/unsubscribe 和 tasks/* 均返回 -32601
日志记录能力不声明,也不使用:SEP-2577 自 2026-07-28 起弃用该能力,而且该版本中的日志传递是逐请求选择加入,服务器不得默认启用。工具活动会通过 structlog 输出到 stderr——参见 src/srgssr_mcp/tools/__init__.py

这项实测在首次运行时就证明了其价值:当时有 425 项测试通过,覆盖率为 96%,但 serverInfo.version 是空字符串;每个 tools/call 都返回 isError(FastMCP 1.x 的 ctx.info(msg, **kwargs) 调用形式会被 mcp 2.x 拒绝);还有八个工具无法接受其自身已发布的 inputSchema 所声明的枚举字符串(ConfigDict(strict=True) 要求传入枚举实例,而 JSON 负载无法携带这种实例)。这些问题在进程内部都不可见——这正是测试线路数据的全部意义。

更新政策
  • SDK 依赖更新通过 Dependabot 提交(.github/dependabot.yml,每月执行,按 mcp-sdk 标签分组),并在合并前运行完整测试套件。
  • 在功能分支上,针对相关的 MCP SDK 版本评估规范升级;MCP 官方变更日志 是破坏性变更的权威来源。
  • 规范版本升级始终记录在 CHANGELOG.md 中;如果它会改变外部可观察到的线路契约,则根据 语义化版本 发布次要版本或主要版本。

项目结构

srgssr-mcp/
├── src/srgssr_mcp/
│   ├── __init__.py          # Package
│   └── server.py            # MCPServer: 15 tools, OAuth2 client
├── .github/
│   └── workflows/
│       └── ci.yml           # GitHub Actions CI (Python 3.11–3.13)
├── pyproject.toml           # Build configuration (hatchling)
├── CHANGELOG.md
├── CONTRIBUTING.md          # English
├── CONTRIBUTING.de.md       # German
├── SECURITY.md              # Security policy (English)
├── SECURITY.de.md           # Security policy (German)
├── LICENSE                  # MIT
├── README.md                # This file (English)
└── README.de.md             # German version

🛡️ 安全与限制

方面详情
访问权限只读 — 服务仅从 SRG SSR API 读取数据,无法发布、修改或删除任何内容
个人数据不涉及个人数据 — 所有端点均提供公开的广播元数据、天气观测数据以及历史投票/选举结果
速率限制受 developer.srgssr.ch 上 OAuth2 应用的等级限制;服务还会为每次查询设置合理的上限(例如,每次列表调用最多 100 个剧集、50 个节目)
超时每次上游 API 调用 30 秒
身份验证OAuth2 客户端凭据(免费注册);密钥保存在本地,绝不记录到日志中
许可与使用SRG SSR API 仅限非商业用途;商业用途需获得 [email protected] 的书面许可
服务条款受 SRG SSR Developer Terms of Use 约束 — 用户仍需自行负责署名并遵守相关规定

已知限制

  • 速率限制: SRG SSR API 设有速率限制 — 有关 OAuth2 应用等级的详情,请参阅 developer.srgssr.ch
  • 数据时效性: EPG 数据可能延迟最多 6 小时
  • 历史数据: Polis 数据可追溯至 1900 年 — 不提供更早的数据
  • 地理限制: 部分流媒体 API 仅在瑞士境内可用
  • 需要 API 密钥: SRG SSR API 需要从 developer.srgssr.ch 免费获取 OAuth2 凭据
  • 非商业用途: 未经 [email protected] 明确许可,SRG SSR API 条款禁止商业用途
  • 天气覆盖范围: SRF Meteo 仅覆盖瑞士

贡献

参阅 CONTRIBUTING.md(英语)· CONTRIBUTING.de.md(德语)


安全

有关完整的安全状况、漏洞报告流程以及已接受风险登记表,请参阅 SECURITY.md(英语)· SECURITY.de.md(德语)。 以下概述了关键的出站流量控制措施。

出站流量允许列表

服务实施了代码层出站流量允许列表(SEC-021,结合 SEC-004 SSRF 防护),以防止意外的外部请求。每个出站 HTTP 请求在发出前,都会由 src/srgssr_mcp/_http.py 中的 _validate_url_safe() 进行验证。

每个请求的三项控制措施:

  1. 仅限 HTTPS — 拒绝 http://、file://、ftp:// 及其他非 HTTPS 协议。
  2. 主机允许列表 — URL 主机名必须与 ALLOWED_HOSTS = {"api.srgssr.ch"} 完全相同(精确匹配 — 会拦截 api.srgssr.ch.attacker.example 等子域名伪装)。单个主机即可涵盖所有内容:OAuth2 令牌端点和所有数据端点。
  3. IP 阻止列表 — 检查该主机名解析出的每个 IP,确保其不属于私有、环回、链路本地(包括 169.254.169.254 云元数据)、CGNAT、多播和保留地址范围(IPv4 + IPv6)。任何一个地址匹配都会中止请求 — 以纵深防御应对 DNS 重绑定攻击。

违规会触发 ValueError,并由 _handle_error 转换为本地化的 Konfigurationsfehler: … 消息,因此内部网络详情绝不会泄露给 MCP 客户端。

添加新的 SRG SSR 域名:

  1. 更新 src/srgssr_mcp/_http.py 中的 ALLOWED_HOSTS。
  2. 在 PR 和 CHANGELOG.md 中说明原因。
  3. 在 tests/test_unit.py 中添加正向测试用例(参照 test_validate_url_safe_accepts_public_srgssr_host)。

**网络层出站流量(适用于未来的 SSE/HTTP 部署):**参阅 docs/network-egress.md。对于当前的 stdio 传输方式,网络层控制不适用 — 进程在 MCP 客户端的用户上下文中运行。


日志记录

服务器通过 structlog 使用结构化日志记录(OBS-003),并以 JSON 格式输出到 stderr — 让 stdout 保持干净,以便 stdio 传输承载 JSON-RPC 流量。

格式:

  • 每行一条 JSON 编码的事件
  • 每条记录都包含 ISO 8601 UTC timestamp
  • RFC 5424 严重性级别:debug、info、notice、warning、error、critical、alert、emergency
  • 每次调用绑定的上下文:tool、business_unit、channel_id、query 等

输出示例:

{"event": "tool_invoked", "tool": "srgssr_weather_search_location", "query": "Bern", "level": "info", "logger": "mcp.srgssr.weather", "timestamp": "2026-04-30T14:23:45.123Z"}
{"event": "tool_succeeded", "tool": "srgssr_weather_search_location", "query": "Bern", "result_count": 3, "matched_variant": "Bern", "level": "info", "logger": "mcp.srgssr.weather", "timestamp": "2026-04-30T14:23:45.456Z"}

日志级别(RFC 5424):

级别用途
debugOAuth 令牌缓存命中、内部状态
info工具调用、成功响应、服务器生命周期
warning可恢复的情况(即将触及速率限制、不受支持的业务单元)
errorAPI 故障、超时(可恢复)
critical凭据问题、服务降级

配置:

默认级别为 info。可通过 SRGSSR_LOG_LEVEL 环境变量覆盖(debug、info、warning、error、critical):

SRGSSR_LOG_LEVEL=debug srgssr-mcp

JSON 输出便于聚合 — 将 stderr 管道传输到 Datadog、Splunk、Loki 等,并按结构化字段(tool、business_unit、level)筛选,无需使用正则表达式解析。


测试

# Unit tests (no network required)
PYTHONPATH=src pytest tests/ -m "not live"

# Integration tests (requires SRG SSR API keys)
PYTHONPATH=src pytest tests/ -m "live"

# Linting
ruff check src/

更新日志

请参阅 CHANGELOG.md


数据来源与许可证

此服务公开的所有数据都从单一上游提供方实时获取,即 SRG SSR Public API V2(https://api.srgssr.ch)。每个工具的返回值都是一个带类型的 Pydantic BaseModel,在顶层包含 source / license / provenance_url / fetched_at — 因此下游使用方无需往返查阅本 README,即可记录数据来源。SDK 会在 tools/list 清单中公开相应的 outputSchema,以便 MCP 客户端精确规划后续调用。

集群提供方许可证备注
天气SRF Meteo(api.srgssr.ch)SRG SSR Terms of Use地理范围仅限瑞士
视频 / 音频 / EPGSRF · RTS · RSI · RTR · SWISRG SSR Terms of Use仅提供元数据 — 不再分发流媒体 URL
Polis(投票 / 选举)SRG SSR PolisSRG SSR Terms of Use历史数据始于 1900 年

SRG SSR API 的使用

  • 非商业用途:免费,无需申请。
  • 商业用途:需通过 [email protected] 获取书面许可。

本服务的 MIT 许可证仅涵盖源代码;不会更改上游数据的许可。


许可证

MIT License — 请参阅 LICENSE

本项目使用的 SRG SSR API 受 SRG SSR Terms of Use 约束。


作者

Hayal Oezkan · github.com/malkreide


致谢与相关项目

服务描述
zurich-opendata-mcp苏黎世市开放数据(OSTLUFT 空气质量、天气、停车、地理数据)
swiss-transport-mcp瑞士公共交通——OJP 2.0 行程规划、SIRI-SX 运行中断信息
swiss-environment-mcpBAFU 环境数据——空气质量、水文、自然灾害
swiss-statistics-mcpBFS STAT-TAB——682 个统计数据集
fedlex-mcp通过 Fedlex SPARQL 获取瑞士联邦法律

协同示例: “苏黎世州 2020 年全民投票的结果是什么?投票率与全国平均水平相比如何?” → srgssr-mcp(Polis,州级结果)+ swiss-statistics-mcp(BFS,投票率数据)

安装

通过 uv 的 uvx 运行——无需克隆或手动安装。将其添加到 MCP 客户端配置中(Claude Desktop、Cursor 和 Windsurf 使用 mcpServers;VS Code 在 .vscode/mcp.json 中使用顶层 servers 键):

{
  "mcpServers": {
    "srgssr-mcp": {
      "command": "uvx",
      "args": [
        "srgssr-mcp"
      ]
    }
  }
}

评论

支持 Markdown

第一次接触 MCP?

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

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