MCP:统一连接工具与上下文
Model Context Protocol 用标准消息和能力协商连接宿主、Client 与提供 Tool、Resource、Prompt 的 Server。
学习目标
- 能说明MCP:统一连接工具与上下文解决什么问题,以及何时适用。
- 能解释为什么“把 MCP 当 Agent”是误区。
学习前需要掌握
背景与问题
AI 应用连接文件、数据库和业务服务时,如果每个宿主都维护一套专有的能力发现与调用格式,集成和迁移会越来越复杂。MCP 为宿主和能力提供方建立共同协议,让双方先在接口层使用同一种语言。
协议统一不代表业务自动统一。不同服务仍有不同的数据含义、权限和错误条件,宿主也仍需决定哪些能力适合当前用户与任务。
概念定义
MCP 全称 Model Context Protocol。它规定 Client 与 Server 如何发现和调用能力,不等同于某个具体工具、API 或 Agent。
直观理解
MCP 像通用插座规范:Server 提供插口后的工具与资料,Client 负责连接,Agent 决定何时使用;插座本身不替你完成任务。
核心原理
MCP 采用 Host、Client 与 Server 分工:Host 管理 AI 应用与用户交互,Client 负责对接某个 Server,Server 暴露具体能力。Agent 可以利用这些能力推进任务,但 MCP 本身不是负责目标与规划的 Agent。
Server 可以提供 Tools、Resources 与 Prompts。Tool 表示可执行能力,Resource 提供可读取的上下文,Prompt 提供可参数化的交互模板;它们不能都简化成“远程函数”。宿主决定如何把发现的内容呈现给模型或用户。
Client 通过协议发现能力、发送请求并关联结果,宿主再过滤工具、执行审批和验证输出。普通 API 定义某个业务服务的操作,MCP 可以将这些操作包装成面向 AI 应用的统一发现与调用接口;它不会取代业务实现。
协议行为需要注明版本。2026-07-28 规范以自包含请求携带版本与客户端能力,Server 可通过 server/discover 提供能力发现;旧版本采用连接级初始化。不能把旧教程中的 initialize 握手视为所有版本都必须执行的固定前提。
版本与职责可对照 MCP 官方架构。
案例:两个宿主复用同一个知识服务
知识服务通过 MCP 提供文档检索 Tool、政策文档 Resource 和一份审阅 Prompt。桌面助手可以用 Tool 找片段,再读取 Resource;另一个支持相应 MCP 功能的编辑器也可按协议接入,而不必复制完全不同的私有调用格式。
两个宿主仍可能暴露不同的能力子集。只获检索授权的用户不能因为 Server 同时提供更新工具就自动修改知识库;某宿主不支持某种内容类型时也需要适配。复用的是协议与能力描述,任务流程、授权和效果验收仍由各应用落实。
理解与实践步骤
- 用户任务进入 Agent
- Agent 查看 Client 暴露的允许能力
- MCP Client 与 Server 协商并发现能力
- Agent 选择 Tool 或请求 Resource
- Client 发送协议请求
- Server 执行并返回结构化结果
- Agent 验证结果并继续或完成
实际应用
- 本地文件服务
- 远程业务服务
- 统一工具目录
常见错误
- 把接通 MCP 当成已经获得自主 Agent、业务权限或完整的任务流程。
- 默认信任 Server 的所有能力与返回内容,不做过滤和结果验证。
- 混用不同协议版本的初始化、元数据和传输示例,却不检查实际 SDK 与 Server 支持范围。
输入、输出与执行边界
输入
- Server 地址或本地进程配置
- 协议请求
- 授权信息
输出
- 工具列表
- 资源或 Prompt 元数据
- 调用结果或协议错误
能力
- 本地文件服务
- 远程业务服务
- 统一工具目录
安全风险与信任边界
MCP 统一连接和能力暴露方式,不会自动证明服务端可信、工具结果正确或执行环境已隔离。外部资源与服务响应仍是有来源的数据;工具发现后还要核对它操作的对象、实际副作用和当前任务是否需要这些能力。
性能与失败模式
协议本身不决定模型质量。实际成本包括能力列表占用的上下文、连接启动、网络往返与后端工具耗时;应按完整任务比较调用成功、结果正确性和恢复能力,避免把“接口统一”直接解释为速度或准确率提升。
推荐学习资料
Model Context Protocol Introduction
从客户端、服务器、工具、资源和提示等对象解释 MCP 的连接模型。
Model Context Protocol · MCP
资料笔记
modelcontextprotocol/servers
MCP 官方参考服务器与 SDK 使用示例,适合学习工具和资源暴露方式。
MCP Steering Group · GitHub
仓库信息
展示 MCP 服务器能力和协议用法
主要语言:TypeScript / Python不包含数据集或实验需要额外环境