MCP(Model Context Protocol,模型上下文协议)是一套让 AI 应用以标准方式连接外部工具和数据源的开放协议。它由 Anthropic 在 2024 年 11 月开源发布,官方把它类比为「AI 应用的 USB-C 端口」。本文梳理它解决的问题、运行原理、典型步骤、传输与鉴权方式,以及接入时容易踩的几个误区。
MCP 到底解决什么问题

大模型本身主要负责理解和生成文本。真正要完成任务时,应用还要读文件、查数据库、调接口、访问代码仓库。过去每接一个新数据源都要写一套定制代码,结果是 M 个模型乘 N 个工具,等于 M×N 次集成。MCP 把这个乘法拆成加法:模型侧实现一次协议,工具侧暴露一次协议,任意兼容客户端就能调用任意兼容服务器。
官方文档把它定义为连接 AI 应用与外部系统的开放标准,覆盖本地文件、数据库,也覆盖搜索、计算器这类工具。一个文件系统服务器暴露读写能力,一个数据库服务器暴露查询能力,客户端用同一套消息格式调用。协议原文见 MCP 官方文档。
从实现看,MCP 在消息层借用 JSON-RPC 2.0 的请求、响应与通知三种形式:客户端发起请求,服务器返回结果,过程中还可以推送通知。因此它不是一套私有 SDK,而是一份公开规范加若干语言的参考实现。
三个角色和三类原语
MCP 采用客户端—服务器架构,涉及三个角色。Host 是用户正在使用的 AI 应用,例如桌面助手、IDE 或聊天客户端;Client 是 Host 内负责通信的部分,每个 Client 与一个 Server 保持 1 对 1 连接;Server 是暴露数据或能力的程序,可以访问本地文件、数据库,也可以访问远程接口。
Server 通过三类原语暴露能力:
- Tools(工具):模型可以调用的函数,例如查询数据库、发送消息、执行检索。
- Resources(资源):可以被引用和读取的数据对象,例如文档、数据库结构、接口返回结果。
- Prompts(提示模板):预先写好的模板,把特定任务的流程固定下来。
三者的区别可以概括为:Tools 是「能做什么」,Resources 是「能读到什么」,Prompts 是「按什么套路做」。模型实际看到什么,取决于 Server 暴露了什么,协议不会自动补齐没暴露的部分。
一次工具调用是怎么发生的
- 用户在 AI 应用里提问,Host 把问题交给模型。
- 模型判断需要某个工具,Client 向对应 Server 发起请求。
- 需要权限时,Host 弹出确认,用户批准后才执行。
- Server 执行工具,把结果返回给 Client。
- 结果作为上下文交给模型,模型生成最终回答。
这条链路的约束在于:模型看到的是协议暴露出来的工具清单和返回内容,真正的权限边界由 Host 和用户控制。
本地 stdio 与远程 HTTP 两种传输
MCP 不规定数据必须走哪条通道,规范里给出两类典型传输。本地 stdio 传输由客户端启动一个服务器进程,双方通过标准输入输出传消息,适合文件系统、数据库这类与应用同机的场景,凭据一般从环境变量读取。远程传输走 HTTP,服务器可以放在另一台机器或云上,客户端用 HTTPS 请求调用。
选择传输时要看数据位置和权限边界。数据在本地、生命周期与应用一致,用 stdio 更简单;数据在远端、需要跨团队共享或部署到云上,用 HTTP 更合适。2026-07-28 规范把 HTTP 传输的核心改为无状态,请求可以落到负载均衡后面的任意实例,这更适合水平扩展,也要求服务器不再依赖进程内会话。
2025 到 2026 年的关键变化
MCP 的规范用日期做版本号,只在有向后不兼容改动时才递增。2025 年 11 月 25 日的周年版规范补齐了多项能力:新增任务型工作流,长任务可以轮询状态;简化授权流程,改用 URL 形式的客户端注册文档;引入扩展机制,让厂商在核心规范之外添加场景化能力。详见 2025-11-25 规范说明。
2025 年 12 月 9 日,Anthropic 把 MCP 捐赠给 Linux 基金会旗下的 Agentic AI Foundation,由 Anthropic、Block、OpenAI 共同创立,Google、Microsoft、AWS、Cloudflare、Bloomberg 提供支持,协议的法律归属与商标转入基金会。同一批进入基金会的还有 Block 的 goose 与 OpenAI 的 AGENTS.md。参见 Anthropic 的捐赠说明。
2026 年 7 月 28 日的规范是一次较大修订:核心改为无状态,去掉了 initialize 握手和协议层会话,请求可以落到负载均衡后面的任意实例;引入 MRTR 处理采样和补全;方法名与工具名放进 HTTP 头,方便网关路由和限流;列表结果附带缓存提示。同时 Roots、Sampling、Logging 被标记为弃用,旧的 HTTP+SSE 传输也进入弃用流程。Tier 1 SDK 包括 TypeScript、Python、Go 和 C#,官方称 TypeScript 与 Python SDK 的累计下载量已超过 10 亿次。详见 2026-07-28 规范说明。
常见的几个误区
| 误区 | 实际情况 |
|---|---|
| MCP 是一个大模型 | 它是连接协议,不含模型,也不负责生成回答。 |
| MCP 是插件市场 | 生态里有服务器目录,但协议本身只定义连接方式,能力来自具体 Server。 |
| MCP 只能连本地数据 | 规范同时覆盖本地与远程,实际能力取决于 Server 的传输与实现。 |
| 规范升级后旧实现不能用 | 多数改动保持向后兼容,只有不兼容改动才递增版本号,并保留迁移窗口。 |
| 接上 MCP 就等于安全 | 协议只解决连接,能读什么、调什么、要不要确认仍要单独配置。 |
| 挂的工具越多越好 | 工具清单会占用上下文,应按任务裁剪,而不是全量塞入。 |
安全上要区分两种传输:本地 stdio 服务器从环境变量取凭据,远程 HTTP 服务器应按规范走 OAuth 授权。规范中的授权章节列出了它所依据的 OAuth 2.1 与相关 RFC。官方在 2026 年 6 月把企业托管授权扩展标记为稳定,让组织通过身份提供商统一授权,用户首次登录即可连接,不必逐个服务器确认。
另一个常见问题是工具清单膨胀。工具描述和返回结果都会占用上下文窗口,挂载过多工具会让模型选错或响应变慢。比较稳妥的做法是按任务筛选,只暴露当前需要的一组能力。
适用人群与上手建议
想用 AI 助手读本地文件、查数据库或操作内部系统的个人开发者,可以先选一个 MCP 客户端,再配一个官方的文件系统或数据库服务器,从本地 stdio 连接开始。要给团队接远程服务,优先确认授权方式,并把权限范围收紧到只读或最小集合。
如果你已经在用多家模型的 API,可以把 LiteLLM 这类统一入口(LiteLLM 统一模型入口)和 MCP 分开看:前者管模型调用,后者管工具与数据。模型侧的变化可以配合 OpenRouter 这类聚合服务(OpenRouter 周榜)观察。
常见问题
MCP 和 function calling 有什么区别?function calling 解决单个应用内模型调函数的问题;MCP 是跨应用、跨厂商的连接标准。
旧配置会失效吗?2026-07-28 规范移除了会话机制,依赖 session 的实现需要按迁移说明调整。
需要自己写服务器吗?多数场景可以直接用社区或厂商提供的 Server,只有数据落在内部系统时才需要自建。
安全边界由谁负责?协议只规定连接与鉴权格式,能访问什么、执行前是否确认,仍由具体 Server、客户端和用户配置决定。
© 版权声明
文章版权归作者所有,转载需注明出处。未声明原创的皆为网络收集,如有侵权请邮箱lishiwenhuagx@sina.com联系下架处理。




