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 能访问实时数据、执行操作、控制设备,超越文本生成
相关推荐
七月丶1 天前
别再手动凑 PR 了:这个 AI Skill 会按仓库习惯自动建分支、拆提交、提 PR
人工智能·设计模式·程序员
刀法如飞1 天前
从程序员到架构师:6大编程范式全解析与实践对比
设计模式·系统架构·编程范式
九狼1 天前
Flutter + Riverpod +MVI 架构下的现代状态管理
设计模式
静水流深_沧海一粟2 天前
04 | 别再写几十个参数的构造函数了——建造者模式
设计模式
StarkCoder2 天前
从UIKit到SwiftUI的迁移感悟:数据驱动的革命
设计模式
阿星AI工作室2 天前
给openclaw龙虾造了间像素办公室!实时看它写代码、摸鱼、修bug、写日报,太可爱了吧!
前端·人工智能·设计模式
_哆啦A梦3 天前
Vibe Coding 全栈专业名词清单|设计模式·基础篇(创建型+结构型核心名词)
前端·设计模式·vibecoding
阿闽ooo6 天前
中介者模式打造多人聊天室系统
c++·设计模式·中介者模式
小米4966 天前
js设计模式 --- 工厂模式
设计模式
逆境不可逃6 天前
【从零入门23种设计模式08】结构型之组合模式(含电商业务场景)
线性代数·算法·设计模式·职场和发展·矩阵·组合模式