opencode-image-mcp

opencode-image-mcp

MCP server that gives non-image-capable models like DeepSeek the ability to generate images using backends such as Qwen-Image, Seedream, and CogView, saving them locally and returning file paths instead of base64 data.

Category
访问服务器

README

opencode-image-mcp

给不支持生图能力的主模型(如 DeepSeek)提供"画画"能力的 MCP server。

主模型只需给出文字描述(和可选的参考图路径),本 server 调用第三方生图模型(通义万相 qwen-image / 豆包 Seedream / 智谱 CogView)生成图片,下载到本地 outputs/ 目录,返回本地文件路径——图片数据不进入主模型上下文。

功能特性

  • 🎨 文生图:文字描述 → 生成图片
  • 🖼️ 图生图:参考图 + 文字指令 → 风格转换/变体/编辑
  • 🔄 多后端可切换:qwen-image(阿里云)/ Seedream(火山方舟)/ CogView(智谱)
  • 📁 结果落盘:生成图片保存到本地 outputs/,返回 file:// 路径
  • 🚫 零 base64 污染:主模型上下文只接触路径字符串
  • 🔁 自动重试:429 / 5xx 指数退避重试
  • 🤝 与 vision MCP 协同:生成的图可直接用 vision MCP 自检质量

原理

你在对话框输入文字描述(+可选参考图路径)
  ↓
主模型调用 image_generate 工具
  ↓
本 server 调用生图后端(qwen-image / Seedream)
  ↓
生成图片 → 下载到 outputs/ 目录
  ↓
返回 {"images": [{"path": "C:/.../outputs/xxx.png"}], ...}
  ↓
主模型把路径展示给你;配合 vision MCP 可回读检查生成质量

图片字节全程不进入主模型上下文——只传路径字符串。

目录结构

opencode-image-mcp/
├── server.py              # MCP server 主程序(stdio 传输)
├── requirements.txt       # Python 依赖
├── .env.example           # 环境变量模板
├── .gitignore
├── LICENSE                # MIT
└── outputs/               # 生成图片输出目录(自动创建)

安装

环境要求

  • Python >= 3.10
  • opencode
  • 至少一个生图后端的 API key

安装步骤

git clone https://github.com/Jsliu28/opencode-image-mcp.git
cd opencode-image-mcp

python -m venv .venv
# Windows:
.\.venv\Scripts\Activate.ps1
# macOS/Linux:
source .venv/bin/activate

pip install -r requirements.txt

cp .env.example .env   # 编辑 .env 填入 API key

配置 API key

标识 名称 API key 环境变量 默认模型
wanx 通义万相 qwen-image DASHSCOPE_API_KEY qwen-image-3.0-pro
seedream 豆包 Seedream ARK_API_KEY dola-seedream-5-0-pro-260628
zhipu 智谱 CogView ZHIPU_API_KEY cogview-4
  • 通义万相:https://bailian.console.aliyun.com/(与 vision MCP 共用 key)
  • 火山方舟:https://console.volcengine.com/ark
  • 智谱:https://open.bigmodel.cn/

配置到 opencode

编辑 ~/.config/opencode/opencode.json:

{
  "mcp": {
    "image": {
      "type": "local",
      "command": ["python", "C:/你的路径/opencode-image-mcp/server.py"],
      "enabled": true,
      "environment": {
        "IMAGE_DEFAULT_PROVIDER": "wanx"
      }
    }
  }
}

python 不在 PATH 时用虚拟环境解释器绝对路径。API key 在 .env 中自动读取。

使用示例

你:画一只戴帽子的猫,卡通风格
你:画一张 16:9 的风景壁纸
你:把这张图 C:/Users/me/photo.png 变成水彩画风格
你:参考 https://example.com/ref.jpg 生成同风格的海报

工具说明

image_generate

文生图 + 图生图(一个工具)。参数:

参数 类型 必填 说明
prompt string ✅ 图片描述(或对参考图的编辑指令)
input_image_path string ❌ 参考图路径/URL,提供后为图生图
size string ❌ 尺寸。wanx: 1024*1024 / 720*1280 / 1280*720;seedream: 1K / 2K
provider string ❌ wanx / seedream / zhipu,覆盖默认后端
model string ❌ 具体模型名(如 qwen-image-edit-max)

image_list_models

列出可用生图后端、模型、配置状态。

环境变量

变量 默认值 说明
IMAGE_DEFAULT_PROVIDER wanx 默认后端
DASHSCOPE_API_KEY - 通义万相 key
ARK_API_KEY - 豆包 Seedream key
ZHIPU_API_KEY - 智谱 CogView key
IMAGE_OUTPUT_DIR outputs 输出目录
IMAGE_MAX_RETRIES 2 失败重试次数
IMAGE_RETRY_BASE_DELAY 1.0 重试基础等待(秒)

扩展新的生图后端

项目采用后端注册表 + 统一函数签名设计,新增一家后端只需 3 步(在 server.py 中):

  1. 注册配置:在 PROVIDERS 字典中添加一个条目(仿照现有条目),指定:

    • api_key_env:API key 的环境变量名
    • task_submit_url:生图接口地址
    • models / default_model:文生图模型
    • i2i_models / i2i_default_model:图生图模型(如支持)
    • sizes:可用尺寸列表
  2. 实现生成函数:编写 _xxx_generate(prompt, model, size, input_image_data, input_image_mime, input_image_url),保持与其他后端相同的参数签名,内部实现该后端的请求构造与响应解析,最后返回本地文件路径列表(List[Path])。

  3. 注册调度:在 _generate 调度函数中添加该 provider 的分支分发。

完成后即可通过 provider 参数使用新后端,无需改动 MCP 工具层。参考实现:_wanx_generate / _seedream_generate / _zhipu_generate。

常见问题

Q: 报"后端未配置"? A: 检查 .env 中对应 key,image_list_models 可查看状态。

Q: 参考图无法读取? A: 参考图需为本地绝对路径或可公开访问的 URL,最大 20MB。

Q: 生成太慢? A: qwen-image 同步接口通常 10-30 秒;限流(429)会自动重试。

Q: 生成的图在哪? A: 返回的 path 即本地文件位置,默认在项目 outputs/ 目录。

Q: 能接其他生图模型吗? A: 可以。参考"扩展新的生图后端"章节,在 server.py 中按 3 步添加即可(注册表 + 函数 + 调度)。

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选