智能体设计模式-CH10:模型上下文协议(Model Context Protocol)

163 阅读23分钟

英文原地址:Chapter 10: Model Context Protocol (MCP)

要让 LLMs 能够作为智能体有效运作,其能力必须超越多模态生成。它们需要与外部环境交互,包括访问最新数据、使用外部软件以及执行特定的操作任务。Model Context Protocol(MCP,模型上下文协议)通过为 LLMs 提供一个与外部资源对接的标准化接口来满足这一需求。该协议作为关键机制,促进一致且可预期的集成。

概述

想象一个通用适配器,使任何 LLM 都能接入任何外部系统、数据库或工具,而无需为每一个单独做定制集成。这基本上就是模型上下文协议(MCP)的作用。它是一个开放标准,旨在规范像 Gemini、OpenAI 的 GPT 模型、Mixtral 和 Claude 等 LLM 与外部应用、数据源和工具的通信方式。把它看作一种通用连接机制,简化 LLM 获取上下文、执行动作并与各种系统交互的过程。

MCP 采用客户端-服务器架构。它定义了如何由 MCP 服务器暴露不同元素——数据(称为资源)、交互式模板(本质上是提示词),以及可执行函数(称为工具)。这些随后由 MCP 客户端消费,客户端可以是 LLM 的宿主应用,或 AI 智能体本身。这种标准化方法大幅降低了将 LLM 集成到多样化运营环境中的复杂度。

然而,MCP 是一种“智能体接口”的契约,其有效性在很大程度上取决于其所暴露的底层 API 的设计。存在一种风险,即开发者只是简单地包装现有的遗留 API 而不做改造,这对智能体来说可能并不理想。举例来说,如果某个工单系统的 API 只能逐条获取完整工单详情,当智能体被要求汇总高优先级工单时,在高量级场景下就会变得缓慢且不准确。要真正高效,底层 API 应该通过过滤、排序等确定性功能进行改进,以帮助非确定性的智能体高效工作。这强调了智能体并不会神奇地取代确定性工作流;它们往往需要更强的确定性支持才能成功。

此外,MCP 也可能包装一个其输入或输出对智能体并不直观可理解的 API。只有当数据格式对智能体友好时,API 才真正有用,而这并非 MCP 本身所能保证。例如,为一个文档存储创建 MCP 服务器,如果它返回的文件是 PDF,而消费它的智能体无法解析 PDF 内容,那基本无济于事。更好的做法是先创建一个能返回文本文档(如 Markdown)的 API,这样智能体才能真正读取和处理。这表明开发者必须不仅考虑连接本身,还要考虑所交换数据的性质,以确保真正的兼容性。

MCP 与工具函数调用的对比

模型上下文协议(MCP)与工具函数调用是两种不同的机制,均用于让 LLM 与外部能力(包括工具)交互并执行动作。虽然二者都用于将 LLM 的能力扩展到文本生成之外,但它们在方法和抽象层级上存在差异。

工具函数调用可以被视为 LLM 对某个特定、预定义工具或函数的直接请求。注意,在此语境中我们将“工具(tool)”与“函数(function)”视为可互换使用。这种交互以一对一通信模型为特征:LLM 基于其对用户需要外部操作意图的理解来格式化请求;随后应用程序代码执行该请求并将结果返回给 LLM。此过程通常是专有的,并且在不同的 LLM 提供商之间有所差异。

相比之下,Model Context Protocol(MCP)作为一个标准化接口,使 LLMs 能够发现、通信并利用外部能力。它作为一种开放协议,促进与各种工具和系统的交互,旨在建立一个任何兼容工具都可被任何兼容 LLM 访问的生态。这推动了不同系统与实现之间的互操作性、可组合性和可复用性。通过采用联邦式模型,我们显著提升互操作性,并释放既有资产的价值。该策略使我们只需为异构与遗留服务包上一层符合 MCP 的接口,便可将其引入现代生态。这些服务仍可独立运行,但如今能够被组合成新的应用与工作流,并由 LLMs 编排其协作。在无需对基础系统进行高成本重写的情况下,这促进了敏捷性与复用性。

以下是 MCP 与工具函数调用之间的基本差异概览:

特性工具函数调用模型上下文协议(MCP)
标准化(Standardization)专有且依赖厂商。不同 LLM 提供商在格式和实现上各不相同。开放、标准化的协议,促进不同 LLM 与工具之间的互操作。
范围(Scope)一种让 LLM 请求执行特定预定义函数的直接机制。一个更广泛的框架,用于说明 LLMs 与外部工具如何彼此发现并通信。
架构(Architecture)LLM 与应用程序的工具处理逻辑之间的一对一交互。一种客户端-服务器架构,其中由 LLM 驱动的应用程序(客户端)可以连接并使用各种 MCP 服务器(工具)。
发现(Discovery)在特定对话的上下文中,明确告知 LLM 哪些工具可用。支持对可用工具的动态发现。MCP 客户端可以查询服务器以了解其提供的能力。
可重用性(Reusability)工具集成通常与所使用的特定应用程序和 LLM 紧密耦合。促进可复用、独立的“MCP 服务器”的开发,任何符合规范的应用程序都可以访问它们。

可以将工具函数调用比作给 AI 配备一组特制的工具,比如某种扳手和螺丝刀。这对任务固定的车间很高效。相比之下,MCP(Model Context Protocol)就像打造一个通用、标准化的电源插座系统。它本身不提供工具,但允许任何厂商的合规工具插上即用,从而实现一个动态且不断扩展的“车间”。

简而言之,函数调用提供对少数特定功能的直接访问,而 MCP 是让 LLMs 发现并使用大量外部资源的标准化通信框架。对于简单应用,特定工具已足够;而对于需要适应性的复杂、互联 AI 系统,像 MCP 这样的通用标准至关重要。

关于 MCP 的其他注意事项

虽然 MCP 提供了一个强大的框架,但要进行全面评估,需要考虑多个影响其是否适用于特定用例的关键方面。下面我们更详细地看看一些方面:

  • 工具 vs. 资源 vs. 提示词: 理解这些组件的具体角色很重要。资源是静态数据(例如,PDF 文件、数据库记录)。工具是执行某个动作的可执行函数(例如,发送电子邮件、查询 API)。提示词是一个模板,用于指导 LLM 如何与资源或工具交互,确保交互具有结构性且有效。
  • 可发现性: MCP 的一个关键优势是,MCP 客户端可以动态查询服务器以了解其提供的工具和资源。这种“即时”发现机制对于需要在不重新部署的情况下适应新能力的智能体非常强大。
  • 安全性: 通过任何协议暴露工具和数据都需要强健的安全措施。MCP 实现必须包含身份验证与授权,以控制哪些客户端可以访问哪些服务器,以及它们被允许执行的具体操作。
  • 实现: 尽管 MCP 是一个开放标准,其实现可能比较复杂。然而,提供方正在开始简化这一过程。例如,一些模型提供商如 Anthropic 或 FastMCP 提供了 SDK,抽象掉了大量样板代码,使开发者更容易创建并连接 MCP 客户端和服务器。
  • 错误处理: 全面的错误处理策略至关重要。协议必须定义如何将错误(例如,工具执行失败、服务器不可用、请求无效)回传给 LLM,以便其理解失败原因并有可能尝试替代方案。
  • 本地 vs. 远程服务器: MCP 服务器可以部署在与智能体同一台机器上的本地,或部署在不同的远程服务器上。对于涉及敏感数据的场景,可能会选择本地服务器以获得速度和安全性;而远程服务器架构则允许在组织范围内共享、可扩展地访问通用工具。
  • 按需 vs. 批处理: MCP 可以同时支持按需的交互式会话和更大规模的批处理。选择取决于应用场景:从需要即时工具访问的实时对话智能体,到以批量方式处理记录的数据分析流水线。
  • 传输机制: 该协议还定义了用于通信的底层传输层。对于本地交互,它使用基于 STDIO(标准输入/输出)的 JSON-RPC,实现高效的进程间通信。对于远程连接,它利用 Streamable HTTP 和 Server-Sent Events(SSE)等对 Web 友好的协议,以实现持久而高效的客户端-服务器通信。

MCP 使用客户端-服务器模型来标准化信息流。理解组件之间的交互是 MCP 实现高级智能体行为的关键:

  • 大型语言模型(LLM): 核心智能。它处理用户请求、制定计划,并决定何时需要访问外部信息或执行某个动作。
  • MCP 客户端: 这是围绕 LLM 的一个应用或封装层。它充当中介,将 LLM 的意图转换为符合 MCP 标准的正式请求。它负责发现、连接并与 MCP 服务器进行通信。
  • MCP 服务器: 这是通往外部世界的网关。它向任何获授权的 MCP 客户端公开一组工具、资源和提示。每个服务器通常负责一个特定领域,例如连接到公司内部数据库、电子邮件服务或公共 API。
  • 可选第三方(3P)服务: 这代表由 MCP 服务器管理并对外暴露的实际外部工具、应用或数据源。它是执行所请求操作的最终端点,例如查询专有数据库、与 SaaS 平台交互或调用公共天气 API。

交互流程如下:

  1. 发现: MCP 客户端代表 LLM 向 MCP 服务器查询其提供的能力。服务器以清单的形式回应,列出可用的工具(例如,send_email)、资源(例如,customer_database)和提示。
  2. 请求制定: LLM 判断需要使用已发现的某个工具。例如,它决定发送一封电子邮件。它制定请求,指定要使用的工具(send_email)以及必要的参数(recipient、subject、body)。
  3. 客户端通信: MCP 客户端将 LLM 制定的请求,作为标准化调用发送到相应的 MCP 服务器。
  4. 服务器执行: MCP 服务器接收请求。它对客户端进行身份验证、校验请求,然后通过与底层软件交互来执行指定操作(例如,调用电子邮件 API 的 send() 函数)。
  5. 响应与上下文更新: 执行完成后,MCP 服务器向 MCP 客户端发送标准化响应。该响应指示操作是否成功,并包含任何相关输出(例如,已发送邮件的确认 ID)。随后客户端将此结果返回给 LLM,更新其上下文,使其能够继续执行下一步任务。

实际应用与使用场景

MCP 显著拓展了 AI/LLM 的能力,使其更通用、更强大。以下是九个关键用例:

  1. 数据库集成: MCP 允许 LLMs 和智能体无缝访问并与数据库中的结构化数据交互。例如,使用面向数据库的 MCP 工具箱,智能体可以查询 Google BigQuery 数据集以获取实时信息、生成报告或更新记录,且全部由自然语言指令驱动。
  2. 生成式媒体编排: MCP 使智能体能够集成先进的生成式媒体服务。通过面向生成媒体服务的 MCP 工具,智能体可以编排涉及 Google 的 Imagen(图像生成)、Veo(视频创作)、Chirp 3 HD(逼真语音)或 Lyria(音乐作曲)的工作流,从而在 AI 应用中实现动态内容创作。
  3. 外部 API 交互: MCP 提供一种标准化方式,让 LLMs 调用并接收任何外部 API 的响应。这意味着智能体可以获取实时天气数据、提取股票价格、发送电子邮件或与 CRM 系统交互,将其能力大幅扩展到核心语言模型之外。
  4. 基于推理的信息抽取: 借助 LLM 强大的推理能力,MCP 促进了高效的、与查询相关的信息抽取,超越了传统的搜索与检索系统。与传统搜索工具返回整份文档不同,智能体可以分析文本并提取直接回答用户复杂问题的精确条款、图表或陈述。
  5. 自定义工具开发: 开发者可以构建自定义工具,并通过 MCP 服务器(例如使用 FastMCP)对外提供。这使得专用的内部函数或专有系统能够以标准化、易于消费的格式提供给 LLMs 和其他智能体,而无需直接修改 LLM。
  6. 标准化的 LLM 与应用通信: MCP 确保 LLMs 与其交互的应用之间有一致的通信层。这减少了集成开销,促进不同 LLM 提供商与宿主应用之间的互操作性,并简化复杂智能体系统的开发。
  7. 复杂工作流编排: 通过组合多种通过 MCP 暴露的工具和数据源,智能体可以编排高度复杂的多步骤工作流。例如,一个智能体可以从数据库检索客户数据、生成个性化的营销图片、撰写定制邮件,然后发送,全部通过与不同的 MCP 服务交互完成。
  8. 物联网设备控制: MCP 可促进 LLM 与物联网(IoT)设备的交互。智能体可以使用 MCP 向智能家电、工业传感器或机器人发送指令,实现对物理系统的自然语言控制与自动化。
  9. 金融服务自动化: 在金融服务领域,MCP 可使 LLMs 与各类金融数据源、交易平台或合规系统交互。智能体可能会分析市场数据、执行交易、生成个性化理财建议,或自动化监管报告,同时保持安全且标准化的通信。

简而言之,Model Context Protocol(MCP)使智能体能够从数据库、API 和网络资源访问实时信息。它还允许智能体通过整合与处理各类来源的数据来执行发送电子邮件、更新记录、控制设备与执行复杂任务等操作。此外,MCP 还支持用于 AI 应用的媒体生成工具。

实战代码示例(ADK)

本节说明如何连接到提供文件系统操作的本地 MCP 服务器,使 ADK Agent 能够与本地文件系统交互。

使用 MCPToolset 进行智能体设置

要配置一个可进行文件系统交互的智能体,必须创建一个 agent.py 文件(例如位于 ./adk_agent_samples/mcp_agent/agent.py)。在 LlmAgent 对象的 tools 列表中实例化 MCPToolset。务必将 args 列表中的 "/path/to/your/folder" 替换为本地系统上 MCP 服务器可访问目录的绝对路径。该目录将作为智能体执行文件系统操作的根目录。

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

# Create a reliable absolute path to a folder named 'mcp_managed_files'
# within the same directory as this agent script.
# This ensures the agent works out-of-the-box for demonstration.
# For production, you would point this to a more persistent and secure location.
TARGET_FOLDER_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "mcp_managed_files")

# Ensure the target directory exists before the agent needs it.
os.makedirs(TARGET_FOLDER_PATH, exist_ok=True)

root_agent = LlmAgent(
   model='gemini-2.0-flash',
   name='filesystem_assistant_agent',
   instruction=(
       'Help the user manage their files. You can list files, read files, and write files. ',
       f'You are operating in the following directory: {TARGET_FOLDER_PATH}'
   ),
   tools=[
       MCPToolset(
           connection_params=StdioServerParameters(
               command='npx',
               args=[
                   "-y",  # Argument for npx to auto-confirm install
                   "@modelcontextprotocol/server-filesystem",
                   # This MUST be an absolute path to a folder.
                   TARGET_FOLDER_PATH,
               ],
           ),
           # Optional: You can filter which tools from the MCP server are exposed.
           # For example, to only allow reading:
           # tool_filter=['list_directory', 'read_file']
       )
   ],
)

npx(Node Package Execute),随 npm(Node Package Manager)5.2.0 及更高版本捆绑提供,是一种实用工具,可直接从 npm 注册表执行 Node.js 包,无需全局安装。本质上,npx 是一个 npm 包运行器,常用于运行许多以 Node.js 包形式分发的社区 MCP 服务器。

创建一个 __init__.py 文件是必要的,以确保 agent.py 文件被识别为 Agent Development Kit(ADK)可发现的 Python 包的一部分。该文件应与 agent.py 位于同一目录。

# ./adk_agent_samples/mcp_agent/__init__.py
from . import agent

当然,还可以使用其他受支持的命令。例如,连接到 python3 可以按如下方式进行:

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

在 Python 的语境中,UVX 指的是一个命令行工具,它利用 uv 在临时、隔离的 Python 环境中执行命令。本质上,它允许你在无需全局安装或在项目环境中安装的情况下运行 Python 工具和包。你可以通过 MCP 服务器运行它。

connection_params = StdioConnectionParams(
 server_params={   server_params={}
   "command": "uvx",
   "args": ["mcp-google-sheets@latest"],
   "env": {
     "SERVICE_ACCOUNT_PATH":SERVICE_ACCOUNT_PATH,
     "DRIVE_FOLDER_ID": DRIVE_FOLDER_ID
   }
 }
)

创建 MCP 服务器后,下一步是连接到它。

将 MCP 服务器连接到 ADK Web

首先,执行 'adk web'。在终端中导航到 mcp_agent 的父目录(例如 adk_agent_samples),然后运行:

cd ./adk_agent_samples # Or your equivalent parent directory
adk web

当 ADK Web UI 在浏览器中加载完成后,从智能体菜单中选择 filesystem_assistant_agent。接下来,尝试以下提示:

  • “给我看看这个文件夹的内容。”
  • “读取 sample.txt 文件。”(假设 sample.txt 位于 TARGET_FOLDER_PATH。)
  • another_file.md 里有什么?”

使用 FastMCP 创建 MCP 服务器

FastMCP 是一个高级 Python 框架,旨在简化 MCP 服务器的开发。它提供了一个抽象层来简化协议复杂性,使开发者能够专注于核心逻辑。

该库通过简单的 Python 装饰器,支持快速定义工具、资源和提示。其一大优势是自动模式生成功能,能够智能地解析 Python 函数签名、类型提示和文档字符串,以构建所需的 AI 模型接口规范。这种自动化最大限度地减少了手动配置并降低了人为错误。

超越基础的工具创建,FastMCP 还支持高级架构模式,如服务器组合与智能体。这使得复杂的多组件系统的模块化开发成为可能,并能将现有服务无缝集成到可供 AI 访问的框架中。此外,FastMCP 还包含针对高效、分布式、可扩展的 AI 驱动应用的优化。

使用 FastMCP 进行服务器设置

举例来说,考虑由服务器提供的一个基础“greet”工具。一旦它启动,ADK Agent 和其他 MCP 客户端就可以通过 HTTP 与该工具交互。

# fastmcp_server.py
# This script demonstrates how to create a simple MCP server using FastMCP.
# It exposes a single tool that generates a greeting.

# 1. Make sure you have FastMCP installed:
# pip install fastmcp
from fastmcp import FastMCP, Client

# Initialize the FastMCP server.
mcp_server = FastMCP()

# Define a simple tool function.
# The `@mcp_server.tool` decorator registers this Python function as an MCP tool.
# The docstring becomes the tool's description for the LLM.
@mcp_server.tool
def greet(name: str) -> str:
    """
    Generates a personalized greeting.

    Args:
        name: The name of the person to greet.

    Returns:
        A greeting string.
    """
    return f"Hello, {name}! Nice to meet you."

# Or if you want to run it from the script:
if __name__ == "__main__":
    mcp_server.run(
        transport="http",
        host="127.0.0.1",
        port=8000
    )

这段 Python 代码定义了一个名为 greet 的单一函数,它接收一个人的名字并返回个性化的问候。函数上方的 @tool() 装饰器会自动将其注册为一个工具,供 AI 或其他程序使用。函数的文档字符串和类型提示会被 FastMCP 用来告知智能体该工具如何工作、需要哪些输入以及会返回什么。

当脚本执行时,它会启动 FastMCP 服务器,并在 localhost:8000 上监听请求。这使得 greet 函数可作为网络服务提供。随后可以将某个智能体配置为连接该服务器,并使用 greet 工具在更大任务中生成问候。服务器会持续运行,直到手动停止。

使用 ADK Agent 调用 FastMCP 服务器

可以将 ADK Agent 设置为 MCP 客户端,以使用正在运行的 FastMCP 服务器。这需要使用 FastMCP 服务器的网络地址(通常是 http://localhost:8000)来配置 HttpServerParameters。

可以包含一个 tool_filter 参数,以将智能体的工具使用限制为服务器提供的特定工具,例如“greet”。当收到类似“Greet John Doe”的请求时,智能体内置的 LLM 会识别通过 MCP 可用的“greet”工具,使用参数“John Doe”调用它,并返回服务器的响应。该过程展示了通过 MCP 暴露的用户自定义工具与 ADK Agent 的集成。

要建立此配置,需要一个 Agent 文件(例如位于 ./adk_agent_samples/fastmcp_client_agent/ 的 agent.py)。该文件将实例化一个 ADK Agent,并使用 HttpServerParameters 与已运行的 FastMCP 服务器建立连接。

# ./adk_agent_samples/fastmcp_client_agent/agent.py
import os
from google.adk.agents import LlmAgent
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, HttpServerParameters

# Define the FastMCP server's address.
# Make sure your fastmcp_server.py (defined previously) is running on this port.
FASTMCP_SERVER_URL = "http://localhost:8000"

root_agent = LlmAgent(
   model='gemini-2.0-flash', # Or your preferred model
   name='fastmcp_greeter_agent',
   instruction='You are a friendly assistant that can greet people by their name. Use the "greet" tool.',
   tools=[
       MCPToolset(
           connection_params=HttpServerParameters(
               url=FASTMCP_SERVER_URL,
           ),
           # Optional: Filter which tools from the MCP server are exposed
           # For this example, we're expecting only 'greet'
           tool_filter=['greet']
       )
   ],
)

该段代码定义了一个名为 fastmcp_greeter_agent 的 Agent,它使用 Gemini 语言模型。它被赋予特定指令,充当以问候他人为目的的友好助手。至关重要的是,代码为该智能体配备了一个执行其任务的工具。它配置了一个 MCPToolset,以连接到运行在 localhost:8000 的独立服务器,该服务器预计是前面示例中的 FastMCP 服务器。智能体被明确授予访问该服务器上托管的 greet 工具的权限。本质上,这段代码设置了系统的客户端,创建了一个智能体,它理解自己的目标是向人们致意,并且准确知道应使用哪个外部工具来完成这一点。

需要在 fastmcp_client_agent 目录内创建一个 __init__.py 文件。这可确保该智能体被 ADK 识别为可发现的 Python 包。

首先,打开一个新的终端并运行 python fastmcp_server.py 以启动 FastMCP 服务器。接着,在终端中前往 fastmcp_client_agent 的父目录(例如 adk_agent_samples),执行 adk web。当 ADK Web UI 在浏览器中加载后,从智能体菜单中选择 fastmcp_greeter_agent。随后你可以通过输入类似“Greet John Doe”的提示来测试它。该智能体会在你的 FastMCP 服务器上使用 greet 工具来生成响应。

回顾

是什么(What)

要成为高效的智能体,LLMs 必须超越简单的文本生成。它们需要能够与外部环境交互,以访问最新数据并使用外部软件。若没有标准化的通信方法,每一次将 LLM 与外部工具或数据源集成都将变成一次定制、复杂且不可复用的工作。这种临时拼凑的方法阻碍了可扩展性,使构建复杂、互联的 AI 系统变得困难且低效。

为什么(Why)

Model Context Protocol(MCP)通过充当 LLMs 与外部系统之间的通用接口,提供了一种标准化的解决方案。它建立了一个开放的、标准化的协议,定义了如何发现和使用外部能力。基于客户端-服务器模型运行,MCP 允许服务器向任何兼容客户端公开工具、数据资源和交互式提示。由 LLM 驱动的应用充当这些客户端,以可预测的方式动态发现并交互可用资源。这种标准化方法培育了一个互操作且可复用组件的生态系统,极大地简化了复杂智能体工作流的开发。

经验法则(Rule of Thumb)

当构建需要与多样且不断演进的外部工具、数据源和 API 交互的复杂、可扩展或企业级智能体系统时,使用 Model Context Protocol(MCP)。当不同 LLMs 与工具之间的互操作性是优先事项,且智能体需要在不重新部署的情况下动态发现新能力时,它是理想选择。对于具有固定且数量有限的预定义功能的简单应用,直接调用工具函数可能就足够了。

图示摘要

image.png

关键点

  • Model Context Protocol(MCP)是一个开放标准,促进 LLMs 与外部应用、数据源和工具之间的标准化通信。
  • 它采用客户端-服务器架构,定义了公开和消费资源、提示与工具的方法。
  • Agent Development Kit(ADK)同时支持利用现有 MCP 服务器,以及通过 MCP 服务器公开 ADK 工具。
  • FastMCP 简化了 MCP 服务器的开发与管理,尤其适用于公开以 Python 实现的工具。
  • 面向 Genmedia Services 的 MCP 工具使智能体能够集成 Google Cloud 的生成式媒体能力(Imagen、Veo、Chirp 3 HD、Lyria)。
  • MCP 使 LLMs 和智能体能够与现实世界系统交互、访问动态信息,并执行超越文本生成的操作。

总结

模型上下文协议(MCP)是一项开放标准,用于促进大型语言模型(LLMs)与外部系统之间的通信。它采用客户端-服务器架构,使 LLMs 能够通过标准化的工具访问资源、使用提示并执行操作。MCP 允许 LLMs 与数据库交互、管理生成式媒体工作流、控制物联网设备以及自动化金融服务。实际示例展示了如何设置智能体与 MCP 服务器通信,包括文件系统服务器和使用 FastMCP 构建的服务器,并说明其与 Agent Development Kit(ADK)的集成。MCP 是开发超越基础语言能力的交互式 AI 智能体的关键组件。

参考资料

  1. Model Context Protocol (MCP) Documentation. (Latest). Model Context Protocol (MCP)google.github.io/adk-docs/mc…
  2. FastMCP Documentation. FastMCP. github.com/jlowin/fast…
  3. MCP Tools for Genmedia Services. MCP Tools for Genmedia Servicesgoogle.github.io/adk-docs/mc…
  4. MCP Toolbox for Databases Documentation. (Latest). MCP Toolbox for Databasesgoogle.github.io/adk-docs/mc…