1. 背景与动机
- LLM 要成为真正有效的 Agent,必须超越文本生成,具备与外部环境交互的能力:
- MCP(Model Context Protocol) 提供了一个开放标准化接口,使 LLM 能与外部系统、数据库、工具交互,确保集成的一致性和可预测性。

2. MCP 模式概述
- 类比 通用适配器:让任何 LLM 无需定制即可连接任意外部系统。
- 目标:统一 Gemini、GPT、Claude、Mixtral 等 LLM 与外部应用/数据源的通信方式。
- 架构:客户端-服务器模式
- MCP 服务器:公开资源(数据)、提示模板、工具(函数)
- MCP 客户端:LLM 宿主应用或 Agent,负责发现和调用
- 优势:降低集成复杂性,提升互操作性和可重用性。
3. 设计挑战与注意事项
- API 设计质量决定 MCP 效果:
- 若底层 API 仅简单包装遗留接口,可能效率低下(如票务系统逐条检索)。
- 应提供过滤、排序等确定性功能,帮助非确定性 Agent 高效工作。
- 数据可理解性:
- MCP 仅是连接机制,若 API 返回 Agent 无法解析的数据(如 PDF),则无效。
- 应提供结构化、可读格式(如 Markdown 文本)。
4. MCP 与工具函数调用的对比
特性 | 工具函数调用 | 模型上下文协议(MCP) |
---|
标准化 | 专有、供应商特定 | 开放标准,跨 LLM/工具互操作 |
范围 | 直接调用预定义函数 | 广泛框架,支持发现与通信 |
架构 | 一对一交互 | 客户端-服务器,多工具可组合 |
发现 | 需显式告知可用工具 | 支持动态发现 |
可重用性 | 与特定应用紧耦合 | 可重用独立 MCP 服务器 |
- 类比:
- 工具函数调用 = 固定工具箱(螺丝刀、扳手)
- MCP = 通用电源插座系统,允许无限扩展工具生态
5. MCP 的关键要素
- 资源:静态数据(数据库记录、文件)
- 工具:可执行操作(发邮件、调用 API)
- 提示:交互模板,指导 LLM 如何使用资源/工具
- 可发现性:客户端可动态查询服务器能力
- 安全性:需身份验证与权限控制
- 错误处理:必须定义失败反馈机制
- 部署模式:本地 vs. 远程服务器
- 交互模式:按需实时 vs. 批处理
- 传输机制:本地用 JSON-RPC over STDIO,远程用 HTTP/SSE
6. MCP 交互流程
- 发现:客户端查询服务器 → 返回工具/资源清单
- 请求制定:LLM 选择工具并生成调用参数
- 客户端通信:转化为标准化请求
- 服务器执行:验证、调用底层 API
- 响应与上下文更新:返回结果,LLM 更新上下文继续任务
7. 实际应用场景
- 数据库集成:查询 Google BigQuery 等实时数据
- 生成媒体编排:调用 Imagen(图像)、Veo(视频)、Chirp 3 HD(语音)、Lyria(音乐)
- 外部 API 调用:天气、股票、CRM 系统
- 信息提取:基于推理的精准条款/数据抽取
- 自定义工具开发:通过 FastMCP 公开内部函数
- 标准化通信:减少不同 LLM 与应用间的集成开销
- 复杂工作流编排:跨数据库、媒体生成、邮件发送的多步骤任务
- 物联网控制:智能家居、工业传感器、机器人
- 金融服务自动化:交易、合规报告、个性化建议
8. 经验法则
- 适用场景:
- 构建复杂、可扩展、需与多外部系统交互的 Agent
- 需要跨 LLM/工具互操作性
- 需要动态发现新能力
- 不适用场景:
9. 关键要点总结
- MCP 是开放标准,标准化 LLM 与外部系统的通信
- 基于客户端-服务器架构,公开资源、工具、提示
- 支持动态发现、可重用性和跨系统互操作
- ADK 与 FastMCP 提供了便捷的开发与集成方式
- MCP 让 Agent 能访问实时数据、执行操作、控制设备,超越文本生成