MCP在Agent中的位置
核对日期:2026-05-09。
1. 定义与边界
MCP(Model Context Protocol)是连接 AI 应用与外部工具、资源、提示词的开放协议。它定义 Host、Client、Server 之间如何发现能力、协商能力、传输消息和调用工具。
MCP 不是 Agent 框架,也不是模型能力本身。它解决的是“上下文和工具如何标准化接入”的协议层问题。
2. 为什么重要
没有 MCP 时,每个 AI 应用都要为每个外部系统写专用插件。MCP 提供统一连接模型:
AI Host 1 ─┐
AI Host 2 ─┼── MCP Client ── MCP Server ── External System
AI Host 3 ─┘
它的价值在于:
- 工具、资源、提示词暴露方式标准化。
- 本地 stdio 和远程 Streamable HTTP 都有规范。
- Host 可以同时连接多个 Server。
- Server 可以复用于不同 IDE、桌面端、Agent 平台。
3. 核心机制
3.1 角色模型
| 角色 | 职责 |
|---|---|
| Host | 用户直接使用的 AI 应用,负责界面、模型、权限和用户意图 |
| Client | Host 内部的协议客户端,通常一个 Client 连接一个 Server |
| Server | 暴露 tools、resources、prompts 等能力 |
3.2 能力类型
| 能力 | 说明 | Agent 中的用途 |
|---|---|---|
| Tools | 可执行动作 | 查询系统、执行写操作、触发工作流 |
| Resources | 可读取上下文 | 文件、文档、数据库记录、知识源 |
| Prompts | 可复用提示模板 | 固定任务模板、团队工作流 |
| Sampling | Server 请求 Host 侧模型采样 | 让 Server 借助模型能力,但控制权仍在 Host |
| Elicitation | Server 向用户请求额外信息 | 工具执行中需要补充输入时使用 |
MCP 2025-11-25 规范中,基本协议基于 JSON-RPC 2.0,并明确了生命周期、传输、授权、安全和能力协商。
4. 架构模式
4.1 Agent Runtime + 内置工具
适合工具少、强业务耦合的系统。MCP 不是必须。
4.2 Agent Runtime + MCP Adapter
Agent Runtime 保留内部工具,同时通过 MCP Adapter 连接外部 Server。
4.3 MCP-first Host
IDE、桌面助手、企业 Agent 平台适合 MCP-first。Host 管理多个 Client,Server 由不同团队或供应商提供。
5. 工程实现
5.1 MCP 工具到内部 ToolCall 的映射
type InternalTool = {
name: string;
description: string;
inputSchema: JsonSchema;
outputSchema?: JsonSchema;
source: {
kind: "mcp";
serverId: string;
originalName: string;
};
risk: ToolRisk;
};
5.2 连接生命周期
1. Host 启动 MCP Client
2. Client 与 Server 建立传输连接
3. initialize 能力协商
4. list tools/resources/prompts
5. 用户任务触发工具调用
6. Client 发送 tools/call
7. Server 返回结果或错误
8. Host 记录 trace 并回填模型
6. 生产实践
- Host 侧仍然负责最终权限和用户确认,不把安全责任完全交给 Server。
- 对每个 MCP Server 建立 trust level:官方、内部、合作方、未知。
- stdio 适合本地开发工具;远程多用户服务优先 Streamable HTTP + OAuth。
- 连接第三方 Server 前展示其工具列表、权限范围和数据访问说明。
- 对 Server 版本、schema 变化、工具新增做审查。
- 不同租户的 MCP 连接、token、缓存和日志必须隔离。
7. 常见反模式
| 反模式 | 问题 |
|---|---|
| 把 MCP 当安全边界 | MCP 是协议,不自动完成业务授权 |
| 任意安装第三方 MCP Server | 工具投毒和数据泄露风险 |
| Server 暴露一个万能 shell 工具 | Host 无法做细粒度审批 |
| 忽视能力协商 | 客户端假设 Server 支持某能力导致运行时失败 |
| stdio Server 往 stdout 打日志 | 干扰 JSON-RPC 通信 |
8. 评测方法
- 协议兼容:initialize、list、call、error 是否符合规范。
- 能力发现:工具列表和 schema 是否稳定。
- 权限联动:Host 是否能对 MCP 工具应用本地策略。
- 安全测试:恶意 Server 描述、恶意工具返回是否被隔离。
- 断连恢复:Server 重启、网络中断、OAuth 过期后的行为。
9. 安全与治理
MCP Server 是新的供应链入口。治理重点:
- Server 来源验证和 allowlist。
- 工具描述审查。
- OAuth audience 和 scope 校验。
- token 不透传给无关服务。
- 工具返回作为不可信输入处理。
- 远程 Server 必须使用 HTTPS。
10. MCP 与内部工具网关的关系
MCP 解决“外部能力如何被发现和调用”,工具网关解决“这些能力是否能被当前用户安全使用”。两者不应混淆。
| 层 | 负责什么 | 不负责什么 |
|---|---|---|
| MCP Server | 暴露 tools/resources/prompts,按协议返回结果 | 替 Host 做最终业务审批 |
| MCP Client | 与单个 Server 建立连接、发送 JSON-RPC 请求 | 决定用户能否访问所有资源 |
| Host/Agent Runtime | 组织上下文、调用模型、展示审批 | 直接信任工具返回内容 |
| Tool Gateway | schema 校验、权限、审计、限流、输出过滤 | 替模型完成语义推理 |
11. 远程 MCP 接入流程
12. MCP 接入评测方案
| 评测项 | 用例 | 通过标准 |
|---|---|---|
| 能力发现 | Server 返回 tools/resources/prompts | Host 正确登记并版本化 |
| 协议错误 | Server 返回 JSON-RPC error | Agent 不崩溃,错误可审计 |
| 授权边界 | token audience 不匹配 | 连接被拒绝 |
| 工具投毒 | 工具描述含隐藏指令 | 注册审查拦截 |
| 断连恢复 | Server 重启或 OAuth 过期 | 不重复执行写操作 |
| 多租户隔离 | A 租户 Server 不可被 B 使用 | trace 中无串租户 |
13. 安全补充:MCP 不是信任豁免
连接 MCP Server 后,Host 仍要:
- 对工具列表做 allowlist 和风险标注。
- 对工具 schema 做安全扫描和人工审查。
- 对工具调用做本地 policy check。
- 对工具结果作为不可信内容处理。
- 对 OAuth token 做 audience、scope、过期时间校验。
- 对第三方 Server 变更建立重新审核流程。
14. 不适用场景
- 只有一两个强业务耦合内部工具时,直接内部工具注册更简单。
- 工具需要严格事务和低延迟,远程 MCP 可能增加复杂度。
- 组织没有 Server allowlist 和审计能力时,不应开放用户任意安装。
- 高风险生产写操作不应直接暴露为无审批 MCP tool。
15. 权威资料
- MCP Specification 2025-11-25: https://modelcontextprotocol.io/specification/2025-11-25
- MCP Architecture: https://modelcontextprotocol.io/docs/learn/architecture
- MCP Transports specification 2025-11-25: https://modelcontextprotocol.io/specification/2025-11-25/basic/transports
- MCP Authorization specification 2025-11-25: https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization
- Anthropic MCP connector docs: https://docs.anthropic.com/en/docs/agents-and-tools/mcp-connector
- OpenAI Remote MCP guide: https://platform.openai.com/docs/guides/tools-remote-mcp