Google 智能体设计模式:模型上下文协议 (MCP)

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 交互流程

  1. 发现:客户端查询服务器 → 返回工具/资源清单
  2. 请求制定:LLM 选择工具并生成调用参数
  3. 客户端通信:转化为标准化请求
  4. 服务器执行:验证、调用底层 API
  5. 响应与上下文更新:返回结果,LLM 更新上下文继续任务

7. 实际应用场景

  • 数据库集成:查询 Google BigQuery 等实时数据
  • 生成媒体编排:调用 Imagen(图像)、Veo(视频)、Chirp 3 HD(语音)、Lyria(音乐)
  • 外部 API 调用:天气、股票、CRM 系统
  • 信息提取:基于推理的精准条款/数据抽取
  • 自定义工具开发:通过 FastMCP 公开内部函数
  • 标准化通信:减少不同 LLM 与应用间的集成开销
  • 复杂工作流编排:跨数据库、媒体生成、邮件发送的多步骤任务
  • 物联网控制:智能家居、工业传感器、机器人
  • 金融服务自动化:交易、合规报告、个性化建议

8. 经验法则

  • 适用场景
    • 构建复杂、可扩展、需与多外部系统交互的 Agent
    • 需要跨 LLM/工具互操作性
    • 需要动态发现新能力
  • 不适用场景
    • 简单应用,仅需少量固定函数 → 工具函数调用即可

9. 关键要点总结

  • MCP 是开放标准,标准化 LLM 与外部系统的通信
  • 基于客户端-服务器架构,公开资源、工具、提示
  • 支持动态发现、可重用性和跨系统互操作
  • ADK 与 FastMCP 提供了便捷的开发与集成方式
  • MCP 让 Agent 能访问实时数据、执行操作、控制设备,超越文本生成
相关推荐
用户69190268133914 小时前
Vibe Coding 开发项目的基本范式
人工智能·设计模式·代码规范
怕浪猫2 天前
领域特定语言(Domain-Specific Language, DSL)
设计模式·程序员·架构
Larcher3 天前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
咖啡八杯5 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
:mnong5 天前
学习创建结构行为设计模式
设计模式
w_t_y_y5 天前
Agent设计模式(四)多模态融合模式(Multi-Modal Fusion)
设计模式
zhouhui0015 天前
订单状态的 if-else 地狱上线就崩——状态模式的工业级落地
设计模式
geovindu5 天前
go: Reactor Pattern
开发语言·后端·设计模式·golang·反应器模式
一只旭宝5 天前
【C++入门精讲22】常见设计模式
c++·设计模式