模型上下文协议(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 连接到它们。
您可以使用MCPServerStdio
和MCPServerSse
类来连接到这些服务器。
例如,以下是使用官方 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
传递给 MCPServerStdio
和 MCPServerSse
。只有在确定工具列表不会更改的情况下,才应这样做。
如果你想使缓存失效,可以在服务器上调用 invalidate_tools_cache()
。
端到端示例
在 examples/mcp 查看完整的可用示例。
追踪
追踪 会自动捕获 MCP 操作,包括: 1. 调用 MCP 服务器列出工具 2. 函数调用中与 MCP 相关的信息