🐛 MCP E2B 图片输出在 Chatbox 中无法渲染(Base64 溢出 / 无图片显示)
Waffle Amayi
--- 🐛 MCP E2B 图片输出在 Chatbox 中无法渲染(Base64 溢出 / 无图片显示)
--- 环境信息 Chatbox Desktop:v1.21.1 操作系统:Windows11
模型提供方:DeepSeek 官方 API
MCP Server:@e2b/mcp-server(通过 npx -y @e2b/mcp-server 启动)
E2B API Key:有效,已在 E2B 控制台确认使用情况
MCP 传输方式:stdio(通过 Chatbox 预设配置运行本地 MCP server)
--- 问题概述 在使用 Chatbox 的 MCP 集成对接 E2B(run_code 工具)时,Python 代码可以正常执行,并且在沙箱环境中成功生成图像文件(PNG)。
但是存在如下问题: > 生成的图片没有在 Chatbox UI 中被渲染显示。 与此同时,在某些情况下,模型会开始直接输出原始 Base64 PNG 数据(以 iVBOR… 开头)作为普通文本,导致输出内容极长且持续不断。
--- 复现步骤 1. 配置 Chatbox MCP 命令:npx -y @e2b/mcp-server 配置有效的 E2B_API_KEY
--- 2. 使用提示词 使用 E2B 创建一个简单的 matplotlib 图表并输出图片。 不要解释任何内容。
--- 3. 观察工具执行情况 Python 代码在 E2B 沙箱中成功运行 在环境中成功生成 chart.png
--- 4. 观察 Chatbox 行为 UI 中没有渲染图片 未以附件或图片形式展示输出 Chatbox 反而持续流式输出类似 Base64 的大段内容(以 iVBORw0KGgo... 开头)
--- 预期行为 Chatbox 应该: 能够识别 MCP 工具输出中包含以下内容: image/png 文件资源(如 .png 文件) 或嵌入式二进制资源 并在聊天 UI 中:直接以图片附件或内联预览方式渲染图片 同时:不应将原始图片二进制/Base64 数据重新喂回 LLM 输出流
--- 实际行为 图片在 E2B 沙箱中成功生成 MCP 工具返回包含图片数据或文件引用 Chatbox 未渲染图片 模型反而将 Base64 PNG 数据作为文本持续输出
导致结果: token 输出极长 聊天内容不可用 无任何可视化结果
--- 额外观察 当强制模型“输出原始 tool result”时,Chatbox 会直接把图片内容当文本暴露出来: iVBORw0KGgoAAAANSUhEUgAA... AAAA... AAAA... 这强烈表明: > MCP 工具输出没有被识别为二进制/图片资源,而是被直接作为文本返回给了模型生成流程。
--- 疑似根因
可能原因包括: 1. Chatbox MCP 客户端尚未实现对 image/png 或二进制资源的处理逻辑
- MCP 工具返回结果未被解析为结构化数据,仅按纯文本处理
- 图片输出未在进入 LLM 上下文前被拦截处理
- 当前版本(v1.21.1)UI 层尚未支持 MCP 图片渲染能力
--- 影响 该问题会导致: E2B + MCP 的可视化工作流无法使用 matplotlib / plotly 等图表生成失效
Base64 扩展导致 token 爆炸式增长 阻断“代码 + 图表”的 AI 开发流程
--- 已尝试的临时解决方案 已确认 E2B 沙箱运行正常 已确认 Python 执行成功 已确认文件在沙箱内生成成功 已确认 MCP tool 调用成功返回 但在 Chatbox 侧未找到可用绕过方案。
--- 请求说明 希望确认以下几点: 1. Chatbox MCP 客户端当前是否支持: image/png MCP resource(资源类型) 二进制文件输出
--- 2. 如果当前不支持: 是否计划在未来版本中支持 MCP 工具的图片渲染能力?
--- 3. 如果已经支持: MCP server 应该以什么格式返回图片,才能被 Chatbox 正确识别并渲染到 UI 中?
--- 备注 该问题可稳定复现,与模型提供方无关(已在 DeepSeek API 下测试)。 问题似乎完全位于 Chatbox 的 MCP 输出处理与 UI 渲染层。
Photo Viewer
View photos in a modal