跳转至

模型上下文协议(MCP)

模型上下文协议(又名 MCP)是一种向大语言模型(LLM)提供工具和上下文的方式。根据 MCP 文档:

MCP 是一种开放协议,它对应用程序向大语言模型提供上下文的方式进行了标准化。可以将 MCP 想象成 AI 应用程序的 USB-C 端口。就像 USB-C 提供了一种标准化方式,用于将设备连接到各种外围设备和配件一样,MCP 也提供了一种标准化方式,用于将 AI 模型连接到不同的数据源和工具。

Agents SDK 支持 MCP。这使您能够使用各种 MCP 服务器为您的 agent 提供工具。

MCP 服务器

目前,MCP 规范根据所使用的传输机制定义了两种类型的服务器: 1. stdio 服务器作为您应用程序的子进程运行。您可以将它们视为在 “本地” 运行。 2. 基于 SSE 的 HTTP 服务器在远程运行。您通过 URL 连接到它们。

您可以使用MCPServerStdioMCPServerSse 类来连接到这些服务器。

例如,以下是使用官方 MCP 文件系统服务器的方式。

async with MCPServerStdio(
    params={
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
    }
) as server:
    tools = await server.list_tools()

使用 MCP 服务器

MCP 服务器可以添加到 agent 中。每次运行 agent 时,Agents SDK 都会在 MCP 服务器上调用 list_tools()。这使大语言模型能够感知到 MCP 服务器的工具。当大语言模型从 MCP 服务器调用工具时,SDK 会在该服务器上调用 call_tool()

agent=Agent(
    name="Assistant",
    instructions="Use the tools to achieve the task",
    mcp_servers=[mcp_server_1, mcp_server_2]
)

缓存

每次运行 Agent 时,它都会在 MCP 服务器上调用 list_tools()。这可能会带来延迟,尤其是当服务器是远程服务器时。要自动缓存工具列表,你可以将 cache_tools_list=True 传递给 MCPServerStdioMCPServerSse。只有在确定工具列表不会更改的情况下,才应这样做。

如果你想使缓存失效,可以在服务器上调用 invalidate_tools_cache()

端到端示例

examples/mcp 查看完整的可用示例。

追踪

追踪 会自动捕获 MCP 操作,包括: 1. 调用 MCP 服务器列出工具 2. 函数调用中与 MCP 相关的信息

MCP 追踪截图