专区直通车>>>juejin.cn/aicoding
The 模型上下文协议(简称 MCP)是一种为LLM提供工具和上下文的方法。从 MCP 文档中:
MCP 是一个开放协议,标准化了应用程序向LLMs提供上下文的方式。想象一下,MCP 就像 AI 应用程序的 USB-C 端口。就像 USB-C 提供了一种标准化的方式将设备连接到各种外设和配件一样,MCP 提供了一种标准化的方式将 AI 模型连接到不同的数据源和工具。
Agents SDK 支持 MCP。这使得您可以使用广泛的 MCP 服务器为您的代理提供工具。
MCP 服务器
目前,MCP 规范定义了两种类型的服务器,基于它们使用的传输机制:
- stdio 服务器作为您应用程序的子进程运行。您可以将其视为"本地"运行。
- HTTP over SSE 服务器运行在远程。您可以通过 URL 连接到它们。
您可以使用 MCPServerStdio
和 MCPServerSse
类来连接这些服务器。
例如,这是如何使用 官方 MCP 文件系统服务器的示例。
csharp
async with MCPServerStdio(
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
}
) as server:
tools = await server.list_tools()
使用 MCP 服务器
MCP 服务器可以添加到代理中。每次运行代理时,代理 SDK 都会调用 MCP 服务器上的 list_tools()
。这使得LLM了解 MCP 服务器的工具。当LLM从 MCP 服务器调用一个工具时,SDK 会调用该服务器上的 call_tool()
。
ini
agent=Agent(
name="Assistant",
instructions="Use the tools to achieve the task",
mcp_servers=[mcp_server_1, mcp_server_2]
)
缓存
每次运行代理时,它都会调用 MCP 服务器上的 list_tools()
。如果服务器是远程服务器,这可能会导致延迟。为了自动缓存工具列表,可以将 cache_tools_list=True
传递给 MCPServerStdio
和 MCPServerSse
。只有在确定工具列表不会更改时,才应执行此操作。
如果您想刷新缓存,可以在服务器上调用 invalidate_tools_cache()
。
端到端示例
查看完整的示例代码:examples/mcp。
跟踪
跟踪会自动捕获 MCP 操作,包括:
- 调用 MCP 服务器列出工具
- 函数调用相关的 MCP 信息