OpenAI Agents SDK 支持 MCP:入门指南
OpenAI Agents SDK 支持 MCP:入门指南

引言
今天发现 OpenAI 的 Agents SDK 已经支持 MCP 了!这真是个好消息。对于我们这些需要让 AI 与各种工具交互的开发者来说,这无疑是个福音。MCP(模型上下文协议)本质上就是一种标准化的方式,让 AI 模型能够与外部工具和数据源进行交互。
MCP 是什么鬼?
简单来说,MCP 就像是 AI 应用的 USB-C 接口。官方文档里有个挺形象的比喻:
就像 USB-C 为设备连接各种外设提供标准化方式一样,MCP 为 AI 模型连接不同数据源和工具提供了标准化方式。
我个人理解,MCP 就是让 AI 能够"插上"各种工具的标准接口,不用每次都重新发明轮子。OpenAI 把这个支持内置到了 Agents SDK 中,这样我们就能轻松地让 Agent 使用各种 MCP 服务器提供的工具了。
MCP 服务器种类
目前 MCP 有两种类型的服务器:
- stdio 服务器:这种就是在本地运行的,作为应用程序的子进程。
- HTTP over SSE 服务器:这种是远程的,通过 URL 连接。
OpenAI 提供了对应的类:MCPServerStdio 和 MCPServerSse 来连接这两种服务器。挺方便的!
怎么用 MCP 服务器?
举个例子,如果想用官方的文件系统 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 使用 MCP 服务器的工具,只需要在创建 Agent 时把服务器实例传进去就行了:
agent=Agent(
name="Assistant",
instructions="使用工具完成任务",
mcp_servers=[mcp_server_1, mcp_server_2]
)
每次 Agent 运行时,SDK 会自动调用 list_tools() 让 LLM 知道有哪些工具可用。当 LLM 决定使用某个工具时,SDK 会调用相应服务器的 call_tool() 方法。整个过程对开发者来说是透明的,不用操心细节。
缓存小技巧
每次 Agent 运行都会调用 list_tools(),如果是远程服务器,这可能会导致一些延迟。有个小技巧是启用缓存:
async with MCPServerSse(
params={...},
cache_tools_list=True # 启用缓存
) as server:
# ...
不过要注意,只有当你确定工具列表不会变的情况下才应该这样做。如果工具列表变了,可以调用 invalidate_tools_cache() 来刷新缓存。
完整示例在哪?
如果想看完整的代码示例,可以去 examples/mcp 看看。那里有几个不同场景的示例,对入门很有帮助。
跟踪功能很赞
OpenAI 的跟踪功能也支持 MCP 了,它会自动记录:
- 调用 MCP 服务器列出工具的操作
- 函数调用中与 MCP 相关的信息

这对调试超级有用,可以清楚地看到 Agent 是如何使用 MCP 工具的。
总结一下
总的来说,OpenAI Agents SDK 对 MCP 的支持让我们能够更轻松地将各种工具集成到 AI 应用中。不管是本地工具还是远程服务,只要遵循 MCP 协议,都可以无缝接入。这大大扩展了 AI 应用的能力边界,让我们能够构建更加强大和灵活的 AI 系统。
如果你正在开发 AI 应用,强烈建议试试这个功能!