FIXES_SUMMARY.md•4.36 kB
# Seedream MCP 图片生成问题修复总结
## 问题诊断
经过测试,发现你的 MCP 工具**实际上是可以正常工作的**:
- ✅ API 调用成功
- ✅ 图片生成成功
- ✅ 工具返回格式正确
**真正的问题**:MCP 协议默认返回的是**纯文本格式**,而不是直接显示图片。虽然返回了图片 URL,但在某些 MCP 客户端中可能无法直接预览图片。
## 用户需求
1. **图片本地存储**: 需要知道生成的图片保存在哪里
2. **简单提示词支持**: 希望能用"生成个小猫"这样的简单描述
3. **复杂提示词支持**: 也要支持详细的描述
## 解决方案
### 1. 添加 MCP ImageContent 支持
添加了对 MCP `ImageContent` 类型的支持,允许直接在 MCP 客户端中显示图片。
#### 新增 `image` 响应格式
在所有图片生成工具中添加了新的 `response_format` 选项:
- `url`: 返回图片 URL(原有功能)
- `b64_json`: 返回 base64 编码(原有功能)
- **`image`: 返回 MCP ImageContent,直接显示图片(新功能,默认)**
#### 创建通用辅助函数
新建文件 `seedream_mcp/tools/image_helpers.py`,包含:
- `create_image_content_response()`: 创建包含图片的 MCP 响应,**自动显示本地保存路径**
- `download_image_as_base64()`: 下载图片并转换为 base64
#### 更新工具文件
已更新的工具:
- ✅ `text_to_image.py` - 文生图
- ✅ `image_to_image.py` - 图生图
待更新的工具(可选):
- ⏳ `multi_image_fusion.py` - 多图融合
- ⏳ `sequential_generation.py` - 组图生成
### 2. 显示本地保存路径
修改 `image_helpers.py`,在返回的文本中自动包含本地保存路径:
```
✅ 图片生成成功!
提示词: 小猫
尺寸: 2K
💾 本地保存: /Users/joe/Dropbox/code/Seedream_MCP/seedream_images/2025-11-18/text_to_image/小猫_20251118_095341.jpeg
```
### 3. 优化提示词说明
更新工具描述,明确说明支持简单和复杂提示词:
- **简单提示词**: "小猫"、"生成个小猫"、"画一只狗"
- **复杂提示词**: "一只可爱的橘色小猫咪,坐在窗台上,阳光洒在身上,卡通风格,高清画质"
两种方式都完全支持!
## 使用方法
### 方式 1: 使用新的 image 格式(推荐)
```json
{
"prompt": "一只可爱的小猫咪",
"size": "2K",
"watermark": false,
"response_format": "image"
}
```
**返回结果**:
- 文本说明 (TextContent)
- 图片内容 (ImageContent) - 可以直接在 MCP 客户端中显示
### 方式 2: 使用 URL 格式(原有功能)
```json
{
"prompt": "一只可爱的小猫咪",
"size": "2K",
"watermark": false,
"response_format": "url"
}
```
**返回结果**:
- 纯文本,包含图片 URL
### 方式 3: 使用 base64 格式(原有功能)
```json
{
"prompt": "一只可爱的小猫咪",
"size": "2K",
"watermark": false,
"response_format": "b64_json"
}
```
**返回结果**:
- 纯文本,包含 base64 编码的图片数据
## 测试结果
所有测试均通过:
- ✅ API 调用正常
- ✅ image 格式返回 ImageContent
- ✅ url 格式返回文本(兼容性保持)
- ✅ 图片下载和转换成功
## 优势
1. **直接显示图片**: 在支持 ImageContent 的 MCP 客户端中可以直接预览图片
2. **向后兼容**: 保留了原有的 url 和 b64_json 格式
3. **默认最佳体验**: 新的 image 格式设为默认值
4. **代码复用**: 通过辅助函数避免代码重复
## 注意事项
1. **网络依赖**: image 格式需要下载图片,可能增加响应时间
2. **数据量**: base64 编码的图片数据较大,可能影响传输
3. **客户端支持**: 需要 MCP 客户端支持 ImageContent 类型
## 下一步建议
1. 更新其他工具文件(`multi_image_fusion.py`, `sequential_generation.py`)
2. 更新文档,说明新的 image 格式
3. 在实际 MCP 客户端中测试图片显示效果
4. 考虑添加图片缓存机制,避免重复下载
## 文件清单
### 新增文件
- `seedream_mcp/tools/image_helpers.py` - 图片处理辅助函数
### 修改文件
- `seedream_mcp/tools/text_to_image.py` - 添加 image 格式支持
- `seedream_mcp/tools/image_to_image.py` - 添加 image 格式支持
### 测试文件
- `test_quick.py` - 基础 API 测试
- `test_mcp_tool.py` - MCP 工具测试
- `test_image_content.py` - ImageContent 测试
- `test_new_image_format.py` - 新格式测试