OpenAI Agents SDK 兼容 MCP Python SDK v1 与 v2 有哪些差异?
OpenAI Agents SDK 兼容 MCP Python SDK v1 与 v2 有哪些差异【免费下载链接】openai-agents-pythonA lightweight, powerful framework for multi-agent workflows项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-python如果你的应用通过 OpenAI Agents SDKopenai-agents-python连接本地 MCP 服务器环境中的mcpPython 包可能解析到 v1 也可能解析到 v2SDK 声明的依赖范围是mcp1.19.0,3见 pyproject.toml且带python_version 3.10条件。对绝大多数应用来说升级不需要改代码但有两类配置在 v1 与 v2 之间行为不同。本文列出这些差异并给出升级前后的验证方式。先区分两个“版本”文档中反复出现的版本其实有两个不要混用已安装的mcpPython 包的主版本号v1 或 v2由你的依赖解析结果决定与 MCP 服务器协商的 MCP 协议版本由握手过程决定。两者相互独立。Agents SDK 会检测已安装mcp包的主版本号并自动适配 stdio、SSE、Streamable HTTP 三种本地连接普通的服务器配置不需要任何版本开关。检测与适配逻辑集中在 src/agents/mcp/_compat.py它读取mcp分发的版本号得到MCP_V2标记并在两个主版本之间转换字段命名如inputSchema与input_schema、nextCursor与next_cursor、isError与is_error和异常结构。业务代码对这部分差异是透明的。v2 下的连接行为先探测失败则回退安装 MCP Python SDK v2 后SDK 会围绕你配置的本地传输创建mcp.Clientmodeauto。客户端先用已安装 SDK 支持的最新协议版本发送server/discover探测现代服务器应答探测客户端采用探测结果旧服务器不支持server/discover时客户端回退到传统initialize握手并使用该握手协商出的协议版本。因此安装 v2 并不会把所有连接都推到最新的 MCP 协议版本。这条行为由 docs/release.md 中 0.20.0 的发布说明确认v2 支持在该版本引入同时通过mcp1.19.0,3保持 v1 兼容0.21.0 则说明本地 MCP 的 HTTP 自定义“继续遵循已安装的 MCP 包”v1 使用传统httpxv2 使用httpx2。真正需要留意的三处差异以下差异只影响自定义了 HTTP 层或特定参数的应用来源是 docs/mcp.md 的 “MCP Python SDK v1 and v2” 一节定制项MCP Python SDK v1MCP Python SDK v2params[auth]httpx.Authhttpx2.Authparams[httpx_client_factory]返回值httpx.AsyncClienthttpx2.AsyncClientMCPServerStreamableHttp的params[ignore_initialized_notification_failure] True支持不支持会在连接建立前被拒绝要点优先使用Authorization请求头传递凭据。请求头在两个主版本下行为一致不涉及httpx/httpx2类型问题。如果你通过params[auth]或params[httpx_client_factory]提供了自定义值这些值的类型必须与已安装mcp包主版本对应的 HTTP 类型匹配要么把它们迁移到httpx2要么固定mcp2留在 v1。使用了ignore_initialized_notification_failure True的应用必须保持mcp2或在升级前移除该选项。HostedMCPTool不受这些本地依赖要求影响远程 MCP 连接由 OpenAI Responses API 持有本地mcp包不参与。锁定主版本两条显式约束命令大多数应用应让依赖解析器自己选择兼容版本。如果你的应用必须固定在某个主版本在openai-agents之外再添加一条显式约束# MCP Python SDK v1 pip install mcp1.19.0,2 # MCP Python SDK v2 pip install mcp2,3升级决策可以按一条简单路径走检查你的代码是否使用了上表中的params[auth]、params[httpx_client_factory]或ignore_initialized_notification_failure。没有使用则直接升级使用过auth/factory 的把对应值迁移到httpx2使用了ignore_initialized_notification_failure且短期无法改造的用mcp2固定住 v1。验证两个主版本下的兼容性行为先确认当前环境装的是哪个主版本。项目的打包集成测试用importlib.metadata做同一检查见 integration_tests/packaging/test_mcp_compat.py你可以用同样的方式查看python -c from importlib.metadata import version; print(version(mcp))输出为1.x即 v12.x即 v2。要验证 SDK 在两个主版本下都能连上旧式服务器可以直接复用仓库自带的旧式 stdio 服务器 tests/mcp/servers/legacy.py。该服务器对server/discover返回 JSON-RPC 错误code: -32601, Method not found只对initialize、tools/list、tools/call做应答正好覆盖“v2 探测失败后回退传统握手”这条路径。下面的脚本改编自 tests/mcp/test_mcp_version_compat.pyimport asyncio import sys from pathlib import Path from agents.mcp import MCPServerStdio from agents.mcp._compat import MCP_V2, result_is_error # 替换为你本地 openai-agents-python 仓库中 tests/mcp/servers/legacy.py 的绝对路径 LEGACY_SERVER_PATH Path(/absolute/path/to/openai-agents-python/tests/mcp/servers/legacy.py) async def main() - None: server MCPServerStdio( namelegacy-test-server, params{command: sys.executable, args: [str(LEGACY_SERVER_PATH)]}, ) async with server: tools await server.list_tools() result await server.call_tool(legacy_tool, {}) protocol_version getattr(server.session, protocol_version, None) print(MCP v2 installed:, MCP_V2) print(tools:, [tool.name for tool in tools]) print(protocol:, protocol_version) print(is_error:, result_is_error(result)) asyncio.run(main())判断标准以项目测试中的断言为准两个主版本下都应列出[legacy_tool]调用结果为文本legacy-result且错误标记为False在MCP_V2为True即安装了 v2时断言protocol_version 2025-06-18且server.server_initialize_result is not None——这说明回退到了传统initialize握手并保留了其结果is_error通过result_is_error()读取该函数在_compat.py中屏蔽了 v1 的isError与 v2 的is_error字段差异。若想在 CI 中固化这个检查打包测试的运行方式可以参考 integration_tests/packaging/test_mcp_compat.py它断言已安装的mcp版本与环境变量OPENAI_AGENTS_INTEGRATION_MCP_VERSION一致后再执行同样的连接与调用。限制上述自动适配只覆盖 SDK 创建的本地 MCP 连接stdio、SSE、Streamable HTTP。HostedMCPTool走 Responses API不受本地mcp包版本影响。SSE 传输本身已被 MCP 项目标记为弃用文档建议新集成优先使用 Streamable HTTP 或 stdioSSE 仅用于遗留服务器如果你正在做 v1 到 v2 的迁移这也是考虑更换传输的时机。本文涉及的主版本行为断言均来自 docs/mcp.md、docs/release.md 与仓库测试如果你的环境依赖解析到了mcp3.x 或低于 1.19.0 的版本已超出 SDK 声明的1.19.0,3范围文档没有给出该范围的兼容承诺。【免费下载链接】openai-agents-pythonA lightweight, powerful framework for multi-agent workflows项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

基于 Anthropic-Cybersecurity-Skills 检测影子 API 端点:流量比对、云配置扫描与治理实战

基于 Anthropic-Cybersecurity-Skills 检测影子 API 端点:流量比对、云配置扫描与治理实战

基于 Anthropic-Cybersecurity-Skills 检测影子 API 端点:流量比对、云配置扫描与治理实战 【免费下载链接】Anthropic-Cybersecurity-Skills 817 structured cybersecurity skills for AI agents Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE …

2026/9/13 17:24:08 阅读更多 →
海南石梅湾20家网红民宿深度测评与避坑指南

海南石梅湾20家网红民宿深度测评与避坑指南

1. 石梅湾民宿选择指南:20家网红民宿深度解析 石梅湾作为海南新兴的度假胜地,凭借其原始纯净的海岸线和相对小众的定位,正吸引着越来越多追求品质旅行的游客。与三亚的喧嚣不同,这里保留了更原生态的热带风情,也因此孕…

2026/9/13 17:23:07 阅读更多 →
企业级PDF文档管理核心技术与实践指南

企业级PDF文档管理核心技术与实践指南

1. 企业文档管理中PDF的核心价值解析PDF作为企业文档管理的标准格式已有二十余年历史,其不可编辑性、跨平台一致性以及安全控制特性,使其成为合同、报表、技术文档等关键业务材料的首选载体。在金融行业,PDF/A格式的长期存档特性满足监管要求…

2026/9/13 17:23:07 阅读更多 →

最新新闻

Refine Ant Design EmailField 组件完全指南:用法、原理与源码剖析

Refine Ant Design EmailField 组件完全指南:用法、原理与源码剖析

Refine Ant Design EmailField 组件完全指南:用法、原理与源码剖析 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitHub_Trend…

2026/9/13 18:10:28 阅读更多 →
MCU集成电机驱动:从板级三件套到单芯片方案的选型与实战

MCU集成电机驱动:从板级三件套到单芯片方案的选型与实战

去年调一块无刷水泵驱动板的时候,我对着示波器憋了大半天:M0内核的MCU旁边焊了一颗预驱芯片,外加三相半桥的六颗MOSFET,再加上自举电容、采样电阻、运放、比较器,密密麻麻一小块板子,走线还得小心翼翼绕开功…

2026/9/13 18:10:28 阅读更多 →
Genkit Dart 的 Dotprompt 完全指南:用 .prompt 文件管理模型、Schema、工具与 Agent 提示词

Genkit Dart 的 Dotprompt 完全指南:用 .prompt 文件管理模型、Schema、工具与 Agent 提示词

Genkit Dart 的 Dotprompt 完全指南:用 .prompt 文件管理模型、Schema、工具与 Agent 提示词 【免费下载链接】skills Agent Skills for Google products and technologies 项目地址: https://gitcode.com/GitHub_Trending/skills29/skills 导读 Dotprompt …

2026/9/13 18:10:28 阅读更多 →
Envoy Basic Auth 过滤器实战指南:配置、源码原理与每路由鉴权

Envoy Basic Auth 过滤器实战指南:配置、源码原理与每路由鉴权

Envoy Basic Auth 过滤器实战指南:配置、源码原理与每路由鉴权 【免费下载链接】envoy Cloud-native high-performance edge/middle/service proxy 项目地址: https://gitcode.com/GitHub_Trending/en/envoy Basic Auth 是 Envoy 内置的 HTTP 过滤器&#xf…

2026/9/13 18:10:28 阅读更多 →
Hindsight All-in-One 集成测试指南:从单测到全链路工作流验证

Hindsight All-in-One 集成测试指南:从单测到全链路工作流验证

Hindsight All-in-One 集成测试指南:从单测到全链路工作流验证 【免费下载链接】hindsight Hindsight: Agent Memory That Learns 项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight 本文基于 Hindsight 仓库中 hindsight-all/tests/READM…

2026/9/13 18:10:28 阅读更多 →
30分钟让小爱音箱接入ChatGPT:配置、启动与踩坑全记录

30分钟让小爱音箱接入ChatGPT:配置、启动与踩坑全记录

30分钟让小爱音箱接入ChatGPT:配置、启动与踩坑全记录 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 你对着小爱音箱问:…

2026/9/13 18:09:27 阅读更多 →

日新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/13 16:51:11 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/12 18:29:34 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/12 19:02:44 阅读更多 →