模型上下文协议 (MCP)
模型上下文协议(又称MCP)是一种为大型语言模型提供工具和上下文的方式。根据MCP文档所述:
MCP是一种开放协议,用于标准化应用程序如何向大型语言模型(LLM)提供上下文信息。可以将MCP视为AI应用程序的USB-C接口。正如USB-C为设备连接各种外设和配件提供了标准化方式,MCP也为AI模型连接不同数据源和工具提供了标准化方法。
Agents SDK 支持 MCP。这使您能够使用各种 MCP 服务器为您的 Agents 提供工具。
MCP服务器
目前,MCP规范根据使用的传输机制定义了两类服务器:
- stdio 服务器作为应用程序的子进程运行。您可以将其视为"本地"运行。
- HTTP over SSE 服务器在远程运行。您可以通过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服务器添加到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()。这可能会带来延迟问题,特别是当服务器是远程服务器时。为了自动缓存工具列表,您可以向MCPServerStdio和MCPServerSse传递cache_tools_list=True参数。但请注意,只有在您确定工具列表不会改变的情况下才应该这样做。
如果想使缓存失效,可以在服务器上调用invalidate_tools_cache()。
端到端示例
查看完整工作示例请访问 examples/mcp。
追踪
Tracing 自动捕获MCP操作,包括:
- 调用MCP服务器来列出工具
- 函数调用的MCP相关信息
