跳至内容

模型上下文协议 (MCP)

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

MCP是一种开放协议,用于标准化应用程序如何向大型语言模型(LLM)提供上下文信息。可以将MCP视为AI应用程序的USB-C接口。正如USB-C为设备连接各种外设和配件提供了标准化方式,MCP也为AI模型连接不同数据源和工具提供了标准化方法。

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

MCP服务器

目前,MCP规范根据使用的传输机制定义了两类服务器:

  1. stdio 服务器作为应用程序的子进程运行。您可以将其视为"本地"运行。
  2. HTTP over SSE 服务器在远程运行。您可以通过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服务器添加到Agents中。每次运行Agent时,Agents SDK会在MCP服务器上调用list_tools()。这使得LLM能够识别MCP服务器的工具。当LLM调用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()。这可能会带来延迟问题,特别是当服务器是远程服务器时。为了自动缓存工具列表,您可以向MCPServerStdioMCPServerSse传递cache_tools_list=True参数。但请注意,只有在您确定工具列表不会改变的情况下才应该这样做。

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

端到端示例

查看完整工作示例请访问 examples/mcp

追踪

Tracing 自动捕获MCP操作,包括:

  1. 调用MCP服务器来列出工具
  2. 函数调用的MCP相关信息

MCP Tracing Screenshot