












OpenAI Agents SDK 现已支持 MCP(模型上下文协议),这是 AI 互操作性的重大变革。这使开发人员能够高效地将 AI 模型连接到外部工具和数据源。本篇博客,笔者将指导使用 OpenAI Agents SDK 构建 MCP 服务器,以增强你的 AI 应用程序。
MCP 服务器(Model Context Protocol Server)是模型上下文协议(MCP)的重要组成部分,它是一种专门设计的程序,使 AI 模型(如 Anthropic 的模型)能够安全、标准化地访问和使用外部数据与工具。自 2024 年 11 月推出以来,MCP 服务器扩展了 AI 的能力,使其不仅能生成文本,还能直接与计算机文件、数据库,甚至 GitHub 等服务进行交互。
可以将 MCP 服务器比作 AI 访问外部资源的“接口”,类似于 USB 端口让计算机与不同设备连接。例如,当用户请求 AI 总结一份文档时,AI 可以通过 MCP 服务器直接提取系统中的文件进行处理。同样,如果需要创建 GitHub 问题或查询数据库,MCP 服务器也能提供支持。
MCP 服务器的核心功能包括:
借助 MCP 服务器,AI 的应用场景进一步拓展,使其能够更高效地完成复杂任务,提升生产力和用户体验。

MCP 采用客户端-服务器架构运行,确保 AI 高效、安全地访问和利用外部数据。其结构由以下核心组件组成:
该架构支持主机通过客户端连接多个 MCP 服务器,每个服务器都提供独立的功能,实现模块化、灵活的集成。MCP 服务器主要提供以下三种类型的公开接口:

1.核心特性
2.技术架构
MCP 服务器通过 JSON-RPC 端点 公开功能,允许客户端查询和调用可用的资源、工具和提示。
例如:
这种标准化协议不仅提升了 AI 在数据处理、自动化工作流等场景的能力,还保证了高度的安全性与可控性,使其成为 AI 生态中的关键组件。

MCP 服务器与传统 API 都能让软件与外部服务交互,但它们在 AI 环境 中的用途和运作方式存在显著差异:
1. 适用场景
2. 交互方式
3. 标准化与扩展性
4. 安全性
5.示例对比
在传统 API 方案中,AI 想获取天气数据需要:
使用 MCP 服务器,AI 只需调用 get_weather 工具,服务器会直接返回格式化的天气信息,简化流程,提高效率。
OpenAI Agents SDK 是一个 Python 库,旨在简化由 OpenAI 语言模型支持的 AI 代理的开发。它为开发人员提供了创建特定于任务的代理、集成外部功能、管理代理间任务委托、执行输入/输出验证和监控执行流程的工具。
OpenAI Agents SDK 提供了一个结构化的框架,用于构建多代理系统,其中每个代理都经过定制以执行特定任务。这些代理可以与用户交互,通过集成工具执行操作,并通过将任务传递给其他代理进行协作。SDK 的关键组件包括:
正确设置对于有效使用 OpenAI Agents SDK 至关重要。介绍先决条件、环境设置、安装和验证。

虚拟环境隔离了项目依赖关系,防止与其他 Python 项目发生冲突。要创建并激活虚拟环境,请执行以下操作:
Linux / macOS:
python -m venv agents_env
source agents_env/bin/activate
Windows:
python -m venv agents_env
agents_env\Scripts\activate
一旦激活,你的终端提示符应该反映环境(例如(agents_env))。此步骤是 Python 开发的最佳实践,可确保工作空间干净。
在虚拟环境处于活动状态的情况下,使用 pip 安装 SDK:
pip install openai-agents
此命令从 PyPI 获取最新版本的 SDK 及其依赖项。要确认安装,请运行:
pip show openai-agents-python
这将显示元数据,包括版本号,确认包已安装。
SDK 需要 OpenAI API 密钥才能运行。将其设置为环境变量以避免将其嵌入到代码中,从而增强安全性:
Linux / macOS:
export OPENAI_API_KEY='your-api-key'
Windows:
set OPENAI_API_KEY='your-api-key'
要使其在会话间持久化,请将命令添加到 shell 配置文件中(例如,.bashrc在.zshrcUnix 系统上)。或者,你可以在 Python 中以编程方式设置它,比如:
import os os.environ["OPENAI_API_KEY"] = "your-api-key"
使用最小代理测试设置以确保一切正常:
from agents import Agent, Runner agent = Agent(name="TestAgent", instructions="Return 'Setup successful'") result = Runner.run_sync(agent, "Run test") print(result.final_output) # Expected output: "Setup successful"
如果显示“安装成功”,则表示您的安装已正常运行。常见问题包括:
代理是 SDK 的基本构建块,每个代理都由独特的角色和行为定义。
该类Agent用于实例化代理。关键参数包括:
这是一个简单的算术代理:
from agents import Agent, Runner agent = Agent( name="MathAgent", instructions="Solve arithmetic expressions." ) result = Runner.run_sync(agent, "Calculate 10 * 2") print(result.final_output) # Output: "20"
该Runner.run_sync方法同步执行代理,返回带有final_output属性的结果对象。
通过调整参数来定制满足特定需求的代理:
agent = Agent( name="CreativeWriter", instructions="Write a short story based on the prompt.", model="gpt-4", temperature=0.9 ) result = Runner.run_sync(agent, "A robot in a distant galaxy") print(result.final_output) # Output: A creative story
使用 OpenAI Agents SDK 构建 MCP 服务器的先决条件,在开始之前,请确保您已:
# Create a new directory for your project mkdir mcp-agent-project && cd mcp-agent-project # Initialize a Python virtual environment python -m venv venv && source venv/bin/activate # Install the required dependencies pip install openai-agents pyyaml
设置一个配置文件,用于mcp_agent.config.yaml定义 MCP 服务器。此配置指向用于访问本地文件的文件系统 MCP 服务器。
根据 MCP 规范定义,MCP 服务器有两种类型:
OpenAI Agents SDK 提供了两个类来处理这些服务器:
根据应用程序的架构和延迟要求选择服务器类型。Stdio 服务器是本地开发的理想选择,而 SSE 服务器更适合分布式系统。
从 OpenAI Agents SDK 导入必要的类并定义您的 MCP 服务器:
from openai_agents import Agent, MCPServerStdio # Define path to your sample files samples_dir = "/path/to/your/files" # Use async context manager to initialize the server async with MCPServerStdio( params={ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir], } ) as server: # List tools provided by the MCP server tools = await server.list_tools() # Create an agent that uses the MCP server agent = Agent( name="Assistant", instructions="Use the filesystem tools to help the user with their tasks.", mcp_servers=[server] ) # Run the agent result = await agent.run("List the files in the directory.")
此设置允许代理在执行期间动态使用文件系统工具。
list_tools()每次代理运行时,MCP 服务器都会调用,这可能会导致延迟,尤其是使用远程服务器时。为了减少这种开销,你可以启用工具缓存:
# Enable caching when initializing the server async with MCPServerStdio( params={ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir], }, cache_tools_list=True # Enable caching ) as server: # The tools list will be cached after the first call tools = await server.list_tools()
缓存的重要注意事项:
要将 MCP 服务器与你的代理完全集成:
from openai_agents import Agent, MCPServerStdio, MCPServerSse async def run_agent_with_mcp_servers(): # Initialize local stdio MCP server local_server = MCPServerStdio( params={ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "./local_files"], }, cache_tools_list=True ) # Initialize remote SSE MCP server (if needed) remote_server = MCPServerSse( url="<https://your-remote-mcp-server.com/stream>", cache_tools_list=True ) async with local_server, remote_server: # Create agent with both servers agent = Agent( name="MultiToolAgent", instructions="Use the available tools to accomplish tasks.", mcp_servers=[local_server, remote_server] ) # Run the agent result = await agent.run("Complete the requested task using appropriate tools.") return result
这种方法使您的代理可以通过标准化 MCP 接口访问本地和远程工具。
有效的调试和监控策略包括:
使用 OpenAI Agents SDK 构建 MCP 服务器为使用外部工具和数据源增强 AI 代理开辟了新的可能性。标准化的 MCP 接口使跨不同环境的集成更简单、更可靠。
本篇博客作为参考,你可以创建功能强大的代理,通过模型上下文协议利用本地和远程资源。随着 MCP 生态系统的不断发展,您的代理将能够访问不断扩展的工具和功能。
这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
另外,博主出新书了《深入理解Hive》、同时已出版的《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》也可以和新书配套使用,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。