MCP(Model Context Protocol,模型上下文协议)是一套开放协议,用来规范"模型如何统一接入外部工具与数据源"。它由 Anthropic 在 2024 年底开源,随后被多家模型与工具厂商采纳,也可以独立用在企业自建的系统集成里。
它解决的问题:N×M 变成 N+M
在没有统一协议之前,每个模型要接每个业务系统,都要单独开发一套对接逻辑。有 N 个模型和 M 个系统,就是 N×M 份工作量。协议把这个矩阵拆开:系统侧按协议暴露一次能力,模型侧按协议实现一次接入,工作量降到 N+M。
| 无统一协议 | 有统一协议 | |
|---|---|---|
| 对接工作量 | 模型数 × 系统数 | 模型数 + 系统数 |
| 新增系统成本 | 需为每个模型改一次 | 只需实现一次协议 |
| 更换模型成本 | 需重做全部对接 | 协议不变则无需改动 |
| 可复用的资产 | 基本没有 | 系统侧的协议实现可长期复用 |
工作方式:客户端与服务端
协议把参与方分成两类:一边是运行在宿主环境里的客户端(例如智能体应用本身),一边是暴露能力的服务端。服务端把自己的能力声明出来,客户端在需要时调用。能力通常分为三类——可执行的工具、可读取的资源、可复用的提示模板。
为什么企业要关心
因为它把"接入"从一次性开发变成了可积累的资产。一个已经封装好的内部系统连接器,可以被不同的智能体应用复用,也可以在更换底层模型时保持不动。这一点对长期投入的企业比对接口数量更重要。
企业接入时要做的三类适配工作
- 封装现有接口。把内部系统的 API 包装成协议规定的形式,明确每个工具的名称、用途说明和参数结构。参数结构描述得越清晰,模型调用出错的概率越低。
- 定义权限边界。协议本身不解决授权问题。必须明确每个工具能被哪些角色调用、能操作哪些范围的数据,并在服务端而不是模型侧做校验。
- 处理脏数据与异常。真实系统的返回往往包含字段缺失、格式不一、超时。这些必须在封装层处理干净,否则模型会把数据问题当成事实来推理。
五个容易踩的坑
- 把写操作当成读操作接。查询类工具和提交类工具必须分开定义,后者需要额外的人工确认环节。
- 工具粒度太粗。一个"处理订单"的工具不如"查订单"、"改地址"、"取消订单"三个工具好用,后者模型更容易正确调用。
- 在描述里写业务黑话。工具说明是给模型读的,需要用准确、无歧义的语言描述适用条件与副作用。
- 忽略调用的可观测性。每次工具调用都应有日志,否则出问题时无法判断是模型选错工具还是工具本身出错。
- 以为接上就万事大吉。协议只保证接得上,数据是否准确、口径是否统一,仍然要靠企业自己的数据治理。
把一个协议当成万能钥匙是常见的期待错位。它降低的是连接成本,不是数据治理成本——后者往往才是项目里真正的大头。
如果你在评估内部系统该怎么接,我们可以一起把接口清单过一遍,标出哪些适合封装成工具、哪些存在权限风险需要额外设计。
预约技术方案沟通