Token导航 LogoToken导航TokenDH.com
Openai Responses MCP Bug logo
运维云端stdio官方级别未说明来源级核验

Openai Responses MCP Bug

MCP Server

OpenAI响应API的多内容处理工具(MCP)用于处理返回多个文本内容数组的工具调用,当前存在仅返回第一个文本内容的问题。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
API集成Python文本处理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

arcaputo3

提供方

arcaputo3

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run server.py

详细介绍

OpenAI响应API MCP多内容Bug报告

执行摘要

具有远程MCP支持的OpenAI Responses API无法正确处理返回多个 TextContent 数组中的项目。当MCP工具返回一个包含多个文本内容对象的数组时,响应输出中只包含第一个文本项,并自动删除所有后续文本项。

缺陷描述

预期行为

当MCP工具返回一个由多个元素组成的数组时 TextContent 对象,所有文本内容都应包含在响应输出中,格式正确,顺序正确。

实际行为

只有第一 TextContent 数组中的对象包含在响应中。所有后续文本内容项都会自动删除,没有任何错误或警告。

影响

此错误阻止MCP工具返回结构化的多部分响应,严重限制了MCP集成的有用性。主要影响包括:

  • 无法从单个工具调用返回多个文本段
  • 无法交错文本和图像内容(例如,文本描述后面跟着图像URL,后面跟着更多文本)
  • 无法构建文档、教程和报告中常见的结构化多模式响应

繁殖步骤

先决条件

  • Python 3.12+
  • OpenAI API密钥
  • ngrok帐户(用于暴露本地服务器)

快速开始

  1. 克隆此存储库:
   git clone https://github.com/arcaputo3/openai-responses-mcp-bug.git
   cd openai-responses-mcp-bug
  1. 安装依赖项:
   uv sync
  1. 创建 .env 使用您的OpenAI API密钥文件:
   echo "OPENAI_API_KEY=your-api-key-here" > .env
  1. 启动MCP服务器:
   uv run server.py

服务器将在上运行 http://localhost:8000

  1. 在新终端中,使用ngrok暴露服务器:
   ngrok http 8000
   # Or if you have a custom domain:
   # ngrok http 8000 --url=your-custom-domain.ngrok.app
  1. 从ngrok复制HTTPS URL并将其添加到您的 .env 文件:
   # Add this line to your .env file
   MCP_URL=https://abc123.ngrok.io
  1. 运行OpenAI API调用:
   uv run call_openai_with_mcp.py

代码概述

MCP服务器(server.py)

服务器定义了一个简单的工具 get_content() 返回一个2的数组 TextContent 物体:

[
    TextContent(type="text", text="This is the text description that should appear first."),
    TextContent(type="text", text="This is the text description that should appear second.")
]

OpenAI客户端(call_openai_with_mcp.py)

通过MCP工具集成向OpenAI Responses API发出请求,要求其调用 get_content 工具并逐字返回其内容。

预期产量与实际产量

预期响应输出

响应应包含MCP工具响应中的两个文本项。两个文本内容对象都应包含在输出中。

实际响应输出

跑步时 uv run call_openai_with_mcp.py,响应显示仅包含第一个文本项:

{
  "id": "resp_68d1e53c8d44819688a5a3e5252e20590e5593cefd6820f8",
  "output": [
    {
      "id": "mcp_68d1e542359c819698009274fada4c430e5593cefd6820f8",
      "arguments": "{}",
      "name": "get_content",
      "server_label": "test",
      "type": "mcp_call",
      "output": "This is the text description that should appear first."
    },
    {
      "id": "msg_68d1e54528648196a499d1e0805f36880e5593cefd6820f8",
      "content": [
        {
          "text": "This is the text description that should appear first.",
          "type": "output_text"
        }
      ],
      "role": "assistant",
      "status": "completed",
      "type": "message"
    }
  ]
}

⚠️ 关键问题: 响应中完全缺少第二个文本内容项(“这是应该出现在第二个的文本描述。”)。MCP工具返回一个包含两个TextContent对象的数组,但只有第一个出现在OpenAI响应中。

技术分析

根本原因假说

OpenAI响应API似乎未正确处理 TextContent MCP工具返回的对象。它不处理数组中的所有项,而是只处理第一个项,忽略其余项。

MCP协议合规性

根据MCP(模型上下文协议)规范,工具可以返回内容项的数组,所有项都应该被处理并包含在响应中。此错误表示偏离了预期的MCP行为。

权变措施

在修复此错误之前,潜在的解决方法包括:

  1. 将所有文本内容连接成单个 TextContent MCP服务器端的对象
  2. 使用多个工具调用,而不是在单个调用中返回多个项目
  3. 在单个文本内容项中以结构化格式(例如JSON)对多个文本段进行编码

环境详细信息

  • OpenAI Python SDK: 1.108.2
  • FastMCP: 2.12.3
  • Python版本: 3.12+
  • 操作系统: 在macOS上测试

相关问题

  • 此错误可能与MCP工具响应中的一般阵列处理有关
  • 当返回多个项目时,其他内容类型(图像等)也可能存在类似的问题

许可证

此错误演示代码按原样提供,用于错误报告和测试。

目录标签

目录标签

API集成Python文本处理本地部署多内容响应OpenAI工具

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP