云计算百科
云计算领域专业知识百科平台

模型上下文协议(MCP)

模型上下文协议(MCP)

补充说明:MCP 由 Anthropic 公司于 2023 年提出,旨在解决 LLM 与外部系统集成的标准化问题。它类似于计算机领域的 USB 或 HTTP 协议,为 AI 系统提供统一的"插件"接口,让不同厂商的工具能够即插即用。

为了让 LLM 成为真正的智能体,必须具备与外部环境交互的能力——访问实时数据、调用外部软件。没有标准化通信协议,每次集成都需定制开发,难以复用,阻碍了复杂 AI 系统的扩展和互联。

模型上下文协议(MCP)通过开放标准,成为 LLM 与外部系统的通用接口。它定义了能力发现和调用的标准流程,采用客户端-服务器架构,服务器可向任意合规客户端暴露工具、数据资源和 Prompt。

核心思想:标准化连接 —— MCP 像通用电源插座系统,不直接提供工具,但允许任何合规工具接入,打造动态、可扩展的智能体工作坊。

与函数调用的区别

函数调用适合简单场景(固定少量函数),MCP 则是复杂、互联 AI 系统不可或缺的标准化通信框架。

对比函数调用MCP
定义方式 代码中硬编码函数 服务器动态暴露工具
发现机制 无,开发者预先定义 客户端可动态查询服务器能力
可扩展性 每次新增需改代码 新服务器上线即可被发现使用
适用场景 简单、固定的工具集 复杂、多工具、多数据源的企业系统

补充说明:在实际项目中,函数调用和 MCP 可以结合使用。例如,核心业务逻辑使用函数调用保证性能,而需要动态扩展的部分(如第三方服务集成)使用 MCP。这种混合架构既能保持核心系统的稳定性,又能享受 MCP 带来的扩展性优势。

MCP 架构

MCP 采用客户端-服务器模型,标准化信息流:

用户 → [LLM] → [MCP 客户端] ←→ [MCP 服务器] ←→ [第三方服务]
(数据库/API/SaaS)

四个核心组件

  • LLM:核心 Agent,处理用户请求、制定计划、决定何时访问外部信息或执行操作
  • MCP 客户端:LLM 的应用或包装层,将 LLM 意图转化为 MCP 标准请求,负责发现、连接和通信
  • MCP 服务器:外部世界的入口,向授权客户端暴露工具、资源和 Prompt,通常负责某一领域(如数据库、邮件服务、API)
  • 第三方服务:实际的外部工具、应用或数据源,由 MCP 服务器管理和暴露(如数据库查询、SaaS 平台、天气 API)
  • 补充说明:这四个组件构成了 MCP 的完整生态链。LLM 作为"大脑"负责决策,MCP 客户端作为"翻译官"负责协议转换,MCP 服务器作为"网关"负责权限控制,第三方服务则是具体的"执行者"。这种分层设计实现了关注点分离,让每个组件专注于自己的职责。

    交互流程

  • 发现:MCP 客户端代表 LLM 查询服务器能力,服务器返回工具、资源和 Prompt 清单
  • 请求构造:LLM 决定使用某工具(如发邮件),构造请求并指定参数(收件人、主题、正文)
  • 客户端通信:MCP 客户端将请求按标准格式发送至 MCP 服务器
  • 服务器执行:MCP 服务器认证客户端、校验请求,调用底层软件执行操作(如邮件 API 的 send 函数)
  • 响应与上下文更新:服务器返回标准化响应(如邮件发送确认 ID),客户端将结果反馈给 LLM,更新上下文,智能体继续后续任务
  • 补充说明:MCP 的交互流程体现了"声明式"编程思想。LLM 只需要声明"要做什么",而不需要关心"如何做"。这种抽象让 LLM 能够专注于高级推理和规划,而将具体的执行细节交给专门的 MCP 服务器处理。

    #mermaid-svg-QHZB1kt3deTKEmuc{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QHZB1kt3deTKEmuc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QHZB1kt3deTKEmuc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QHZB1kt3deTKEmuc .error-icon{fill:#552222;}#mermaid-svg-QHZB1kt3deTKEmuc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QHZB1kt3deTKEmuc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QHZB1kt3deTKEmuc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QHZB1kt3deTKEmuc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QHZB1kt3deTKEmuc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QHZB1kt3deTKEmuc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QHZB1kt3deTKEmuc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QHZB1kt3deTKEmuc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QHZB1kt3deTKEmuc .marker.cross{stroke:#333333;}#mermaid-svg-QHZB1kt3deTKEmuc svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QHZB1kt3deTKEmuc p{margin:0;}#mermaid-svg-QHZB1kt3deTKEmuc .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-QHZB1kt3deTKEmuc .cluster-label text{fill:#333;}#mermaid-svg-QHZB1kt3deTKEmuc .cluster-label span{color:#333;}#mermaid-svg-QHZB1kt3deTKEmuc .cluster-label span p{background-color:transparent;}#mermaid-svg-QHZB1kt3deTKEmuc .label text,#mermaid-svg-QHZB1kt3deTKEmuc span{fill:#333;color:#333;}#mermaid-svg-QHZB1kt3deTKEmuc .node rect,#mermaid-svg-QHZB1kt3deTKEmuc .node circle,#mermaid-svg-QHZB1kt3deTKEmuc .node ellipse,#mermaid-svg-QHZB1kt3deTKEmuc .node polygon,#mermaid-svg-QHZB1kt3deTKEmuc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QHZB1kt3deTKEmuc .rough-node .label text,#mermaid-svg-QHZB1kt3deTKEmuc .node .label text,#mermaid-svg-QHZB1kt3deTKEmuc .image-shape .label,#mermaid-svg-QHZB1kt3deTKEmuc .icon-shape .label{text-anchor:middle;}#mermaid-svg-QHZB1kt3deTKEmuc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QHZB1kt3deTKEmuc .rough-node .label,#mermaid-svg-QHZB1kt3deTKEmuc .node .label,#mermaid-svg-QHZB1kt3deTKEmuc .image-shape .label,#mermaid-svg-QHZB1kt3deTKEmuc .icon-shape .label{text-align:center;}#mermaid-svg-QHZB1kt3deTKEmuc .node.clickable{cursor:pointer;}#mermaid-svg-QHZB1kt3deTKEmuc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QHZB1kt3deTKEmuc .arrowheadPath{fill:#333333;}#mermaid-svg-QHZB1kt3deTKEmuc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QHZB1kt3deTKEmuc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QHZB1kt3deTKEmuc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QHZB1kt3deTKEmuc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QHZB1kt3deTKEmuc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QHZB1kt3deTKEmuc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QHZB1kt3deTKEmuc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QHZB1kt3deTKEmuc .cluster text{fill:#333;}#mermaid-svg-QHZB1kt3deTKEmuc .cluster span{color:#333;}#mermaid-svg-QHZB1kt3deTKEmuc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QHZB1kt3deTKEmuc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QHZB1kt3deTKEmuc rect.text{fill:none;stroke-width:0;}#mermaid-svg-QHZB1kt3deTKEmuc .icon-shape,#mermaid-svg-QHZB1kt3deTKEmuc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QHZB1kt3deTKEmuc .icon-shape p,#mermaid-svg-QHZB1kt3deTKEmuc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QHZB1kt3deTKEmuc .icon-shape .label rect,#mermaid-svg-QHZB1kt3deTKEmuc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QHZB1kt3deTKEmuc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QHZB1kt3deTKEmuc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QHZB1kt3deTKEmuc :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    5. 响应与更新

    返回标准化响应

    更新LLM上下文

    继续后续任务

    4. 服务器执行

    认证与校验

    调用底层服务

    执行操作

    3. 客户端通信

    MCP客户端标准化请求

    发送至MCP服务器

    2. 请求构造

    LLM决策选择工具

    构造请求指定参数

    1. 发现阶段

    MCP客户端查询能力

    MCP服务器返回工具/资源/Prompt清单

    图2:MCP 交互流程图 – 展示从发现到执行的完整5步流程

    #mermaid-svg-hMY13YjKg96vtBFA{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hMY13YjKg96vtBFA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hMY13YjKg96vtBFA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hMY13YjKg96vtBFA .error-icon{fill:#552222;}#mermaid-svg-hMY13YjKg96vtBFA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hMY13YjKg96vtBFA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hMY13YjKg96vtBFA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hMY13YjKg96vtBFA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hMY13YjKg96vtBFA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hMY13YjKg96vtBFA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hMY13YjKg96vtBFA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hMY13YjKg96vtBFA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hMY13YjKg96vtBFA .marker.cross{stroke:#333333;}#mermaid-svg-hMY13YjKg96vtBFA svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hMY13YjKg96vtBFA p{margin:0;}#mermaid-svg-hMY13YjKg96vtBFA .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-hMY13YjKg96vtBFA .cluster-label text{fill:#333;}#mermaid-svg-hMY13YjKg96vtBFA .cluster-label span{color:#333;}#mermaid-svg-hMY13YjKg96vtBFA .cluster-label span p{background-color:transparent;}#mermaid-svg-hMY13YjKg96vtBFA .label text,#mermaid-svg-hMY13YjKg96vtBFA span{fill:#333;color:#333;}#mermaid-svg-hMY13YjKg96vtBFA .node rect,#mermaid-svg-hMY13YjKg96vtBFA .node circle,#mermaid-svg-hMY13YjKg96vtBFA .node ellipse,#mermaid-svg-hMY13YjKg96vtBFA .node polygon,#mermaid-svg-hMY13YjKg96vtBFA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hMY13YjKg96vtBFA .rough-node .label text,#mermaid-svg-hMY13YjKg96vtBFA .node .label text,#mermaid-svg-hMY13YjKg96vtBFA .image-shape .label,#mermaid-svg-hMY13YjKg96vtBFA .icon-shape .label{text-anchor:middle;}#mermaid-svg-hMY13YjKg96vtBFA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-hMY13YjKg96vtBFA .rough-node .label,#mermaid-svg-hMY13YjKg96vtBFA .node .label,#mermaid-svg-hMY13YjKg96vtBFA .image-shape .label,#mermaid-svg-hMY13YjKg96vtBFA .icon-shape .label{text-align:center;}#mermaid-svg-hMY13YjKg96vtBFA .node.clickable{cursor:pointer;}#mermaid-svg-hMY13YjKg96vtBFA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-hMY13YjKg96vtBFA .arrowheadPath{fill:#333333;}#mermaid-svg-hMY13YjKg96vtBFA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hMY13YjKg96vtBFA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hMY13YjKg96vtBFA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hMY13YjKg96vtBFA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-hMY13YjKg96vtBFA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hMY13YjKg96vtBFA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-hMY13YjKg96vtBFA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hMY13YjKg96vtBFA .cluster text{fill:#333;}#mermaid-svg-hMY13YjKg96vtBFA .cluster span{color:#333;}#mermaid-svg-hMY13YjKg96vtBFA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hMY13YjKg96vtBFA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-hMY13YjKg96vtBFA rect.text{fill:none;stroke-width:0;}#mermaid-svg-hMY13YjKg96vtBFA .icon-shape,#mermaid-svg-hMY13YjKg96vtBFA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hMY13YjKg96vtBFA .icon-shape p,#mermaid-svg-hMY13YjKg96vtBFA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-hMY13YjKg96vtBFA .icon-shape .label rect,#mermaid-svg-hMY13YjKg96vtBFA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hMY13YjKg96vtBFA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-hMY13YjKg96vtBFA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-hMY13YjKg96vtBFA :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    第三方服务

    MCP 服务器

    MCP 客户端

    大语言模型

    用户

    自然语言请求

    LLM Agent决策与规划

    协议转换器发现与通信

    服务网关认证与执行

    数据库

    API服务

    SaaS平台

    文件系统

    物联网设备

    图1:MCP 整体架构图 – 展示用户、LLM、MCP客户端、MCP服务器和第三方服务之间的数据流

    工具、资源与 Prompt 的区别

    概念说明示例
    资源(Resource) 静态数据,供 LLM 读取 PDF 文件、数据库记录、配置文件
    工具(Tool) 可执行功能,供 LLM 调用 发邮件、API 查询、文件写入
    Prompt 引导 LLM 与资源或工具交互的模板 结构化查询模板、操作指引

    补充说明:理解这三者的区别对设计 MCP 服务器至关重要。资源适合提供静态参考数据,工具适合执行具体操作,而 Prompt 则用于引导 LLM 的思考过程。一个设计良好的 MCP 服务器通常会同时提供这三种能力,形成完整的能力矩阵。

    MCP 的更多考量

    考量说明
    可发现性 客户端可动态查询服务器能力,实现"即时发现",智能体无需重启即可适应新功能
    安全性 必须支持认证和授权,控制客户端访问权限和操作范围
    实现复杂度 部分厂商(Anthropic、FastMCP)已推出 SDK,简化开发流程
    错误处理 协议需定义错误如何反馈给 LLM,便于智能体尝试替代方案
    本地 vs 远程 本地适合敏感数据和高性能,远程便于共享和扩展
    按需 vs 批量 支持实时交互(对话型)和批量处理(数据分析流水线)
    传输机制 本地:JSON-RPC over STDIO;远程:Streamable HTTP + SSE

    适用场景

    MCP 极大拓展了 AI/LLM 能力,常见九大应用场景:

    场景说明
    数据库集成 通过 MCP 无缝访问结构化数据库,如查询 BigQuery,自然语言驱动
    生成式媒体编排 集成 Imagen(图片)、Veo(视频)、Chirp 3 HD(语音)、Lyria(音乐)等生成服务
    外部 API 交互 获取实时天气、股票价格,发送邮件,对接 CRM 系统
    推理型信息抽取 利用 LLM 推理能力按需抽取信息,超越传统检索
    自定义工具开发 用 FastMCP 等框架快速开发工具,通过 MCP 服务器暴露
    标准化通信 降低集成成本,促进不同厂商间互操作
    复杂流程编排 组合多种工具实现多步骤流程(获取数据→生成图片→撰写邮件→发送)
    物联网设备控制 通过 MCP 控制智能家居、工业传感器、机器人
    金融服务自动化 对接数据源、交易平台、合规系统,实现分析、交易、报告

    经验法则

    构建复杂、可扩展或企业级智能体系统,需与多样化外部工具、数据源和 API 交互时,优先采用 MCP。尤其当需要不同 LLM 与工具互操作、智能体可动态发现新能力时,MCP 是最佳选择。若仅需固定少量函数,直接工具调用即可。

    代码示例

    示例 1:ADK 连接文件系统 MCP 服务器

    #mermaid-svg-wjPIygx61uETytOm{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wjPIygx61uETytOm .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wjPIygx61uETytOm .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wjPIygx61uETytOm .error-icon{fill:#552222;}#mermaid-svg-wjPIygx61uETytOm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wjPIygx61uETytOm .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wjPIygx61uETytOm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wjPIygx61uETytOm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wjPIygx61uETytOm .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wjPIygx61uETytOm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wjPIygx61uETytOm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wjPIygx61uETytOm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wjPIygx61uETytOm .marker.cross{stroke:#333333;}#mermaid-svg-wjPIygx61uETytOm svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wjPIygx61uETytOm p{margin:0;}#mermaid-svg-wjPIygx61uETytOm .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-wjPIygx61uETytOm .cluster-label text{fill:#333;}#mermaid-svg-wjPIygx61uETytOm .cluster-label span{color:#333;}#mermaid-svg-wjPIygx61uETytOm .cluster-label span p{background-color:transparent;}#mermaid-svg-wjPIygx61uETytOm .label text,#mermaid-svg-wjPIygx61uETytOm span{fill:#333;color:#333;}#mermaid-svg-wjPIygx61uETytOm .node rect,#mermaid-svg-wjPIygx61uETytOm .node circle,#mermaid-svg-wjPIygx61uETytOm .node ellipse,#mermaid-svg-wjPIygx61uETytOm .node polygon,#mermaid-svg-wjPIygx61uETytOm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wjPIygx61uETytOm .rough-node .label text,#mermaid-svg-wjPIygx61uETytOm .node .label text,#mermaid-svg-wjPIygx61uETytOm .image-shape .label,#mermaid-svg-wjPIygx61uETytOm .icon-shape .label{text-anchor:middle;}#mermaid-svg-wjPIygx61uETytOm .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wjPIygx61uETytOm .rough-node .label,#mermaid-svg-wjPIygx61uETytOm .node .label,#mermaid-svg-wjPIygx61uETytOm .image-shape .label,#mermaid-svg-wjPIygx61uETytOm .icon-shape .label{text-align:center;}#mermaid-svg-wjPIygx61uETytOm .node.clickable{cursor:pointer;}#mermaid-svg-wjPIygx61uETytOm .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wjPIygx61uETytOm .arrowheadPath{fill:#333333;}#mermaid-svg-wjPIygx61uETytOm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wjPIygx61uETytOm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wjPIygx61uETytOm .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wjPIygx61uETytOm .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wjPIygx61uETytOm .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wjPIygx61uETytOm .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-wjPIygx61uETytOm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wjPIygx61uETytOm .cluster text{fill:#333;}#mermaid-svg-wjPIygx61uETytOm .cluster span{color:#333;}#mermaid-svg-wjPIygx61uETytOm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wjPIygx61uETytOm .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-wjPIygx61uETytOm rect.text{fill:none;stroke-width:0;}#mermaid-svg-wjPIygx61uETytOm .icon-shape,#mermaid-svg-wjPIygx61uETytOm .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wjPIygx61uETytOm .icon-shape p,#mermaid-svg-wjPIygx61uETytOm .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wjPIygx61uETytOm .icon-shape .label rect,#mermaid-svg-wjPIygx61uETytOm .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wjPIygx61uETytOm .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-wjPIygx61uETytOm .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wjPIygx61uETytOm :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    MCP 服务器

    ADK 环境

    用户自然语言指令

    filesystem_assistant_agentLLM Agent

    MCPToolsetADK工具集

    StdioServerParametersSTDIO连接参数

    npx @modelcontextprotocol/server-filesystemNode.js文件系统服务器

    本地文件系统mcp_managed_files目录

    图3:ADK连接文件系统MCP服务器架构 – 展示从用户到文件系统的完整调用链

    演示如何通过 MCPToolset + StdioServerParameters 连接本地文件系统 MCP 服务器:

    用户 → [filesystem_assistant_agent] → MCPToolset → npx @modelcontextprotocol/server-filesystem → 本地文件系统

    • MCPToolset:ADK 中连接 MCP 服务器的工具集
    • StdioServerParameters:通过 STDIO 启动本地 MCP 服务器进程
    • npx:npm 自带的包执行工具,无需全局安装即可运行 Node.js 包
    • tool_filter(可选):限制暴露的工具,如只允许读取

    运行方式:进入脚本所在父目录,执行 adk web,在浏览器中选择 filesystem_assistant_agent,即可通过自然语言管理文件。

    import os
    from google.adk.agents import LlmAgent
    from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StdioServerParameters

    GEMINI_MODEL = "gemini-2.0-flash"

    # 获取 agent.py 同级目录下 'mcp_managed_files' 文件夹的绝对路径
    TARGET_FOLDER_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "mcp_managed_files")
    os.makedirs(TARGET_FOLDER_PATH, exist_ok=True)

    root_agent = LlmAgent(
    model=GEMINI_MODEL,
    name='filesystem_assistant_agent',
    instruction=(
    '帮助用户管理文件。你可以列出、读取和写入文件。'
    f'你的操作目录为:{TARGET_FOLDER_PATH}'
    ),
    tools=[
    MCPToolset(
    connection_params=StdioServerParameters(
    command='npx',
    args=[
    "-y",
    "@modelcontextprotocol/server-filesystem",
    TARGET_FOLDER_PATH,
    ],
    ),
    # 可选:限制暴露的工具,如只允许读取
    # tool_filter=['list_directory', 'read_file']
    )
    ],
    )

    示例 2:FastMCP 服务器

    #mermaid-svg-d28tdsJoV2phloBm{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-d28tdsJoV2phloBm .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-d28tdsJoV2phloBm .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-d28tdsJoV2phloBm .error-icon{fill:#552222;}#mermaid-svg-d28tdsJoV2phloBm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-d28tdsJoV2phloBm .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-d28tdsJoV2phloBm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-d28tdsJoV2phloBm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-d28tdsJoV2phloBm .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-d28tdsJoV2phloBm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-d28tdsJoV2phloBm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-d28tdsJoV2phloBm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-d28tdsJoV2phloBm .marker.cross{stroke:#333333;}#mermaid-svg-d28tdsJoV2phloBm svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-d28tdsJoV2phloBm p{margin:0;}#mermaid-svg-d28tdsJoV2phloBm .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-d28tdsJoV2phloBm .cluster-label text{fill:#333;}#mermaid-svg-d28tdsJoV2phloBm .cluster-label span{color:#333;}#mermaid-svg-d28tdsJoV2phloBm .cluster-label span p{background-color:transparent;}#mermaid-svg-d28tdsJoV2phloBm .label text,#mermaid-svg-d28tdsJoV2phloBm span{fill:#333;color:#333;}#mermaid-svg-d28tdsJoV2phloBm .node rect,#mermaid-svg-d28tdsJoV2phloBm .node circle,#mermaid-svg-d28tdsJoV2phloBm .node ellipse,#mermaid-svg-d28tdsJoV2phloBm .node polygon,#mermaid-svg-d28tdsJoV2phloBm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-d28tdsJoV2phloBm .rough-node .label text,#mermaid-svg-d28tdsJoV2phloBm .node .label text,#mermaid-svg-d28tdsJoV2phloBm .image-shape .label,#mermaid-svg-d28tdsJoV2phloBm .icon-shape .label{text-anchor:middle;}#mermaid-svg-d28tdsJoV2phloBm .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-d28tdsJoV2phloBm .rough-node .label,#mermaid-svg-d28tdsJoV2phloBm .node .label,#mermaid-svg-d28tdsJoV2phloBm .image-shape .label,#mermaid-svg-d28tdsJoV2phloBm .icon-shape .label{text-align:center;}#mermaid-svg-d28tdsJoV2phloBm .node.clickable{cursor:pointer;}#mermaid-svg-d28tdsJoV2phloBm .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-d28tdsJoV2phloBm .arrowheadPath{fill:#333333;}#mermaid-svg-d28tdsJoV2phloBm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-d28tdsJoV2phloBm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-d28tdsJoV2phloBm .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d28tdsJoV2phloBm .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-d28tdsJoV2phloBm .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d28tdsJoV2phloBm .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-d28tdsJoV2phloBm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-d28tdsJoV2phloBm .cluster text{fill:#333;}#mermaid-svg-d28tdsJoV2phloBm .cluster span{color:#333;}#mermaid-svg-d28tdsJoV2phloBm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-d28tdsJoV2phloBm .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-d28tdsJoV2phloBm rect.text{fill:none;stroke-width:0;}#mermaid-svg-d28tdsJoV2phloBm .icon-shape,#mermaid-svg-d28tdsJoV2phloBm .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-d28tdsJoV2phloBm .icon-shape p,#mermaid-svg-d28tdsJoV2phloBm .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-d28tdsJoV2phloBm .icon-shape .label rect,#mermaid-svg-d28tdsJoV2phloBm .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-d28tdsJoV2phloBm .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-d28tdsJoV2phloBm .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-d28tdsJoV2phloBm :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    FastMCP 服务器

    MCP 客户端

    ADK Agent

    其他MCP客户端

    自定义客户端

    FastMCP实例

    @mcp_server.tool装饰器注册greet函数

    HTTP服务127.0.0.1:8000

    图4:FastMCP服务器架构 – 展示FastMCP服务器与多个客户端的连接关系

    用 FastMCP 框架快速创建一个 greet 工具的 MCP 服务器:

    • @mcp_server.tool:装饰器注册工具函数,文档字符串和类型提示自动生成接口规范
    • 运行后监听 127.0.0.1:8000,任何 MCP 客户端均可调用

    # pip install fastmcp
    from fastmcp import FastMCP, Client

    mcp_server = FastMCP()

    @mcp_server.tool
    def greet(name: str) > str:
    """
    生成个性化问候语。

    Args:
    name: 要问候的人名。

    Returns:
    问候语字符串。
    """
    return f"你好,{name}!很高兴认识你。"

    if __name__ == "__main__":
    mcp_server.run(
    transport="http",
    host="127.0.0.1",
    port=8000
    )

    示例 3:ADK 消费 FastMCP 服务器

    #mermaid-svg-CVrGF3t4gr376Xxr{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CVrGF3t4gr376Xxr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CVrGF3t4gr376Xxr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CVrGF3t4gr376Xxr .error-icon{fill:#552222;}#mermaid-svg-CVrGF3t4gr376Xxr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CVrGF3t4gr376Xxr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CVrGF3t4gr376Xxr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CVrGF3t4gr376Xxr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CVrGF3t4gr376Xxr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CVrGF3t4gr376Xxr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CVrGF3t4gr376Xxr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CVrGF3t4gr376Xxr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CVrGF3t4gr376Xxr .marker.cross{stroke:#333333;}#mermaid-svg-CVrGF3t4gr376Xxr svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CVrGF3t4gr376Xxr p{margin:0;}#mermaid-svg-CVrGF3t4gr376Xxr .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-CVrGF3t4gr376Xxr .cluster-label text{fill:#333;}#mermaid-svg-CVrGF3t4gr376Xxr .cluster-label span{color:#333;}#mermaid-svg-CVrGF3t4gr376Xxr .cluster-label span p{background-color:transparent;}#mermaid-svg-CVrGF3t4gr376Xxr .label text,#mermaid-svg-CVrGF3t4gr376Xxr span{fill:#333;color:#333;}#mermaid-svg-CVrGF3t4gr376Xxr .node rect,#mermaid-svg-CVrGF3t4gr376Xxr .node circle,#mermaid-svg-CVrGF3t4gr376Xxr .node ellipse,#mermaid-svg-CVrGF3t4gr376Xxr .node polygon,#mermaid-svg-CVrGF3t4gr376Xxr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CVrGF3t4gr376Xxr .rough-node .label text,#mermaid-svg-CVrGF3t4gr376Xxr .node .label text,#mermaid-svg-CVrGF3t4gr376Xxr .image-shape .label,#mermaid-svg-CVrGF3t4gr376Xxr .icon-shape .label{text-anchor:middle;}#mermaid-svg-CVrGF3t4gr376Xxr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CVrGF3t4gr376Xxr .rough-node .label,#mermaid-svg-CVrGF3t4gr376Xxr .node .label,#mermaid-svg-CVrGF3t4gr376Xxr .image-shape .label,#mermaid-svg-CVrGF3t4gr376Xxr .icon-shape .label{text-align:center;}#mermaid-svg-CVrGF3t4gr376Xxr .node.clickable{cursor:pointer;}#mermaid-svg-CVrGF3t4gr376Xxr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CVrGF3t4gr376Xxr .arrowheadPath{fill:#333333;}#mermaid-svg-CVrGF3t4gr376Xxr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CVrGF3t4gr376Xxr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CVrGF3t4gr376Xxr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CVrGF3t4gr376Xxr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CVrGF3t4gr376Xxr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CVrGF3t4gr376Xxr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CVrGF3t4gr376Xxr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CVrGF3t4gr376Xxr .cluster text{fill:#333;}#mermaid-svg-CVrGF3t4gr376Xxr .cluster span{color:#333;}#mermaid-svg-CVrGF3t4gr376Xxr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CVrGF3t4gr376Xxr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CVrGF3t4gr376Xxr rect.text{fill:none;stroke-width:0;}#mermaid-svg-CVrGF3t4gr376Xxr .icon-shape,#mermaid-svg-CVrGF3t4gr376Xxr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CVrGF3t4gr376Xxr .icon-shape p,#mermaid-svg-CVrGF3t4gr376Xxr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CVrGF3t4gr376Xxr .icon-shape .label rect,#mermaid-svg-CVrGF3t4gr376Xxr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CVrGF3t4gr376Xxr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CVrGF3t4gr376Xxr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CVrGF3t4gr376Xxr :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    远程服务器

    ADK 环境

    用户输入'向 John Doe 问好'

    fastmcp_greeter_agentADK LLM Agent

    MCPToolset工具集

    HttpServerParametersHTTP连接参数

    FastMCP服务器localhost:8000

    greet工具函数返回问候语

    响应:'你好,John Doe!很高兴认识你。'

    图5:ADK消费FastMCP服务器流程 – 展示HTTP连接和工具调用的完整过程

    ADK Agent 作为 MCP 客户端连接 FastMCP 服务器:

    "向 John Doe 问好" → [fastmcp_greeter_agent] → HttpServerParameters → FastMCP 服务器 → greet("John Doe")

    • HttpServerParameters:通过 HTTP 连接远程 MCP 服务器
    • tool_filter=['greet']:只允许使用 greet 工具

    运行步骤:

  • 先启动 FastMCP 服务器:python 7.2MCP示例_FastMCP服务器.py
  • 再启动 ADK Web:adk web
  • 选择 fastmcp_greeter_agent,输入 Prompt
  • import os
    from google.adk.agents import LlmAgent
    from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, HttpServerParameters

    GEMINI_MODEL = "gemini-2.0-flash"

    # 定义 FastMCP 服务器地址
    # 请确保 7.2MCP示例_FastMCP服务器.py 已在该端口运行
    FASTMCP_SERVER_URL = "http://localhost:8000"

    root_agent = LlmAgent(
    model=GEMINI_MODEL,
    name='fastmcp_greeter_agent',
    instruction='你是一个友好的助手,可以通过 "greet" 工具向人问好。',
    tools=[
    MCPToolset(
    connection_params=HttpServerParameters(
    url=FASTMCP_SERVER_URL,
    ),
    # 可选:限制 MCP 服务器暴露的工具
    # 本例只允许使用 'greet'
    tool_filter=['greet']
    )
    ],
    )

    示例 4:其他连接方式

    展示 python3 和 uvx 两种 STDIO 连接参数配置:

    • python3:连接自己编写的 Python MCP 服务器脚本,可通过 env 传递环境变量
    • uvx:Python 命令行工具,利用 uv 临时隔离环境运行 Python 包,无需全局安装,适合运行社区 MCP 服务器

    """
    MCP 服务器的其他连接方式示例。
    展示 python3 和 uvx 两种 STDIO 连接参数配置。
    """

    from google.adk.tools.mcp_tool.mcp_toolset import StdioServerParameters

    # ============================================================
    # 示例 1:通过 python3 连接自定义 MCP 服务器
    # ============================================================
    # 适用于自己编写的 Python MCP 服务器脚本
    SERVICE_ACCOUNT_PATH = "/path/to/service_account.json"
    DRIVE_FOLDER_ID = "your-drive-folder-id"

    python_connection_params = StdioServerParameters(
    command="python3",
    args=["./agent/mcp_server.py"],
    env={
    "SERVICE_ACCOUNT_PATH": SERVICE_ACCOUNT_PATH,
    "DRIVE_FOLDER_ID": DRIVE_FOLDER_ID
    }
    )

    # ============================================================
    # 示例 2:通过 uvx 连接社区 MCP 服务器
    # ============================================================
    # uvx 是 Python 命令行工具,利用 uv 临时隔离环境运行 Python 包,无需全局安装
    uvx_connection_params = StdioServerParameters(
    command="uvx",
    args=["mcp-google-sheets@latest"],
    env={
    "SERVICE_ACCOUNT_PATH": SERVICE_ACCOUNT_PATH,
    "DRIVE_FOLDER_ID": DRIVE_FOLDER_ID
    }
    )

    关键要点

    • MCP 是开放标准,规范 LLM 与外部应用、数据源和工具的通信
    • 采用客户端-服务器架构,定义资源、Prompt 和工具的暴露与消费方式
    • ADK 支持消费现有 MCP 服务器,也可将自身工具暴露为 MCP 服务
    • FastMCP 简化 MCP 服务器开发,尤其适合 Python 工具的快速集成
    • MCP Genmedia 工具支持智能体集成 Google Cloud 生成式媒体服务
    • MCP 让 LLM 和智能体能访问真实世界系统、动态信息,并执行超越文本生成的操作

    总结

    模型上下文协议(MCP)是连接大语言模型与外部系统的开放标准。它采用客户端-服务器架构,让 LLM 能通过标准化工具访问资源、利用 Prompt、执行操作。MCP 支持数据库访问、生成式媒体编排、物联网控制和金融自动化等场景。文中通过文件系统服务器和 FastMCP 服务器的智能体集成示例,展示了 MCP 与 ADK 的实际应用。MCP 是打造具备交互能力的智能体系统不可或缺的核心组件。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 模型上下文协议(MCP)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!