Image Generate Remote
БесплатноНе проверенA remote MCP image generation server that unifies OpenAI Images and Gemini generateContent APIs with preset-based configuration for multi-provider support.
Описание
A remote MCP image generation server that unifies OpenAI Images and Gemini generateContent APIs with preset-based configuration for multi-provider support.
README
一个基于 UV + Python 的远程 MCP 图片生成服务,统一封装 OpenAI Images 兼容接口与 Gemini generateContent 生图接口。
本子项目在源码仓开发时复用工作区根目录
.venv。这只适用于开发与测试;正式 systemd 部署推荐使用 wheel 安装到独立部署目录.venv,不要使用源码 editable 安装作为生产形态。
注意,timeout为关键参数;当前 preset 统一只有
1次默认机会 +1次重试机会,且按支持尺寸档位分配上游 HTTP 超时:仅1K为120s、支持2K为150s、支持4K为200s。如果不设置客户端超时,默认30秒通常一定生成不了图片。 文档仍推荐将 MCP 客户端timeout显式设置为500000毫秒(500 秒);它可以覆盖当前4Kpreset 最长约400秒的两次尝试预算,并为网络抖动留出余量。
项目能力
- 提供
gpt_image_2_official工具,兼容 OpenAI Images 风格的文生图与参考图编辑 - 提供
nano_banana_2_official工具,兼容 GeminigenerateContent风格的文生图与参考图编辑 - 提供
gpt_image_2_temporary与nano_banana_2_temporary临时探索工具,用于陌生兼容站点试跑;成功后应固化为正式 preset - 提供
list_image_tools_catalog工具,用于输出当前服务的 default-active preset、尺寸支持、参数指导与非敏感环境变量信息 - 提供
skills/gpt-icon-generate/SKILL.md图标生成技能,约定规则网格图标板生成、校验和切图流程
启动期预设(Preset)
Provider、model、base_url、timeout、retry 及字段派发行为默认由启动期 preset 决定。
这次 1.0.0-beta1 版本把“不同供应商 / 不同兼容站点的差异”正式上收为一层稳定的预设体系:
- 正式工具对外仍保持稳定的 MCP tool schema,不因为切换供应商就改参数结构
- 站点差异不再散落在 tool 逻辑或零散环境变量里,而是收敛到内置 preset class
- 每个 preset 负责声明自己的
provider、model、base_url、timeout、retry、支持mode、尺寸能力与字段派发策略 - catalog 的职责也从“配置报告”收敛为“调用指导”:告诉调用方当前 active preset 下该怎么安全传参
可以把 preset 理解为:
“同一个 MCP 图片工具,在某个供应商 / 某个模型 / 某种协议下,应该怎样发请求、哪些字段该转发、支持哪些尺寸与模式、超时和重试如何设置。” 由于不同第三方供应商之间,虽然大致遵循同一个 调用规范,但是总有这里那里的细节不同,有些不能发 quality ,有些不能发size,有些默认就有超时,有些需要我们自己设置超时;所以我们把这些细节都收敛到 preset 里,调用方只要选对 preset,剩下的可以编码处理。
启动期选择 active preset:通过环境变量决定正式工具默认绑定哪个 preset
按次临时切换 preset:正式工具允许本次调用临时传入
preset + api_key,但不重新暴露base_url、model、timeout、retry这类底层运行参数class-first preset registry:稳定供应商能力通过内置 preset class 注册,而不是 YAML 或运行时自由拼配置
临时探索与正式 preset 分离:陌生兼容站点可以走
*_temporary工具临时跑,如果你觉得合适,就可以提PR或自行修改源码添加新的 preset 预设。具体哪些字段会传到 post 请求以进行真正生图:现在不用 mcp 调用方指定了,每个预设可以处理这些细节问题——
quality、size、output_format、background、moderation是否真正发给上游,不再让调用方猜测,而由当前 preset 的 dispatch policy 决定gpt_image_2_official与nano_banana_2_official允许按次传入preset与api_key做临时覆盖如果按次传入
preset,则同一请求里必须同时传入api_key不传按次覆盖参数时,仍回退到环境变量配置的 preset 与 API Key
通过local的或服务式配置环境变量
IMG_GEN_GPT_IMAGE_2_OFFICIAL_PRESET选择gpt_image_2_official的 active preset,例如openai_gpt_image_2、right_codes_gpt_image_2、apiyi_gpt_image_2、laozhang_gpt_image_2_default、laozhang_gpt_image_2_sora_official、laozhang_gpt_image_2_enterprise、laozhang_gpt_image_2_vip通过
IMG_GEN_NANO_BANANA_2_OFFICIAL_PRESET选择nano_banana_2_official的 active preset,例如google_nano_banana、apiyi_nano_banana_2不配置时回退到内置默认 preset(
openai_gpt_image_2/google_nano_banana)
典型接口:
POST /v1/images/generationsPOST /v1/images/editsPOST /v1beta/models/{model}:generateContent
通过 uv / PyPI / wheel 安装使用
uv 本身没有单独的“官方包仓库”,常规做法是把包发布到 PyPI,然后让用户通过 uv 直接下载运行。
当前发布链路会把 GitHub Release 对应版本自动发布到 PyPI。
- PyPI 项目名:
image-generate-mcp-remote - 本地开发可用:
uv tool install image-generate-mcp-remote - 正式部署更推荐:构建
.whl后安装到部署目录自己的.venv - 推荐阅读真实部署与 MCP 配置导览:
./SYSTEMD_DEPLOYMENT_GUIDE.md
例如,安装 v1.0.0-beta1 后可用于远端 MCP 服务部署或供 MCP 客户端以 stdio 模式拉起:
# 安装为全局工具
uv tool install image-generate-mcp-remote
# 指定版本
uv tool install --refresh image-generate-mcp-remote==1.0.0-beta1
如果你要做正式的 systemd --user 远端部署,推荐流程不是直接把源码目录长期放在线上运行,而是:
uv build
cp dist/image_generate_mcp_remote-1.0.0b1-py3-none-any.whl <deploy-root>/wheels/
uv venv <deploy-root>/.venv
uv pip install --python <deploy-root>/.venv/bin/python <deploy-root>/wheels/image_generate_mcp_remote-1.0.0b1-py3-none-any.whl
这样部署后,服务运行代码来自 wheel 安装结果,而不是源码 editable 注入。
从源码安装与启动(开发模式)
这一节只用于本地开发、测试、调试,不是推荐的正式部署方式。
1. 安装依赖
uv sync
cp .env.example .env
2. 配置环境变量
至少填写你要使用的工具对应 API Key:
IMG_GEN_GPT_IMAGE_2_OFFICIAL_API_KEYIMG_GEN_NANO_BANANA_2_OFFICIAL_API_KEY
3. 启动服务
# Streamable HTTP(默认)
uv run image-generate-mcp-remote --transport streamable-http --host 127.0.0.1 --port 3001
# SSE
uv run image-generate-mcp-remote --transport sse --host 127.0.0.1 --port 3001
这里不再单列 stdio 的独立启动命令;对本项目而言,stdio 的意义在于由 MCP 客户端按配置拉起,而不是人工单独启动。真正的 MCP 配置导览请直接看 ./SYSTEMD_DEPLOYMENT_GUIDE.md。
当前实际部署(systemd --user)
本项目当前真正使用中的远端 MCP 服务,不是 stdio 直连,而是 systemd --user 托管的 streamable-http 服务。
推荐的正式部署形态是:
部署目录保存
.env、.venv、storage/、wheels/.venv中安装的是已构建好的.whlsystemd 只启动部署目录
.venv/bin/image-generate-mcp-remote不依赖源码树是否存在或是否被改动
服务名:
image-generate-mcp.serviceunit 文件位置模式:
~/.config/systemd/user/image-generate-mcp.service工作目录:部署目录
<deploy-root>环境文件:
<deploy-root>/.env当前接入地址:
http://127.0.0.1:25235/mcp
部署、更新、修改环境变量、重启服务、OpenCode MCP JSON 配置的完整说明见:
./SYSTEMD_DEPLOYMENT_GUIDE.md
对于当前这个远端服务,需要特别注意:
- 改 OpenCode MCP JSON 里的
env,不会改变已启动服务的环境变量 - 要改服务配置,必须修改
<deploy-root>/.env或image-generate-mcp.service - 改
.env后执行systemctl --user restart image-generate-mcp.service - 改
.service后执行systemctl --user daemon-reload && systemctl --user restart image-generate-mcp.service
MCP 配置方式
以下配置示例均为当前项目可直接使用的正确写法。
如果你关注的是真实远端部署、systemd 托管、客户端如何接入在线 MCP 服务,建议优先阅读 ./SYSTEMD_DEPLOYMENT_GUIDE.md;本节仅保留最常见配置摘要。
方式一:通用 stdio 直连(推荐本地开发)
适用于使用通用 MCP 配置风格的客户端,主要是 claude code
{
"mcpServers": {
"image-generate-mcp-remote": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"image-generate-mcp-remote",
"--transport",
"stdio"
],
"timeout": 500000,
"cwd": "/Users/zhongting/workspace/image-generate-mcp-remote",
"env": {
"IMG_GEN_GPT_IMAGE_2_OFFICIAL_API_KEY": "sk-xxxx",
"IMG_GEN_GPT_IMAGE_2_OFFICIAL_PRESET": "openai_gpt_image_2",
"IMG_GEN_NANO_BANANA_2_OFFICIAL_API_KEY": "sk-xxxx",
"IMG_GEN_NANO_BANANA_2_OFFICIAL_PRESET": "google_nano_banana",
"IMAGE_OUTPUT_DIR": "storage/images",
"LOG_LEVEL": "INFO"
}
}
}
}
方式二:OpenCode 本地 stdio 直连
OpenCode 的 opencode.json 使用自己的 MCP 配置结构:本地 MCP 需要声明 type: "local",并把启动命令和参数合并写入 command 数组;环境变量字段名是 environment,不是通用示例里的 env;OpenCode 也不使用 mcpServers 作为顶层字段,而是使用 mcp。
适用于项目级配置文件,例如:<project>/.opencode/opencode.json。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"image-generate-mcp-remote": {
"type": "local",
"command": [
"uv",
"run",
"--directory",
"/absolute/path/to/image-generate-mcp-remote",
"image-generate-mcp-remote",
"--transport",
"stdio"
],
"enabled": true,
"timeout": 500000,
"environment": {
"IMG_GEN_GPT_IMAGE_2_OFFICIAL_API_KEY": "sk-xxxx",
"IMG_GEN_GPT_IMAGE_2_OFFICIAL_PRESET": "openai_gpt_image_2",
"IMG_GEN_NANO_BANANA_2_OFFICIAL_API_KEY": "sk-xxxx",
"IMG_GEN_NANO_BANANA_2_OFFICIAL_PRESET": "google_nano_banana",
"IMAGE_OUTPUT_DIR": "storage/images",
"LOG_LEVEL": "INFO"
}
}
}
}
两种 stdio 配置的区别:
- 通用 MCP 客户端常见字段:
mcpServers.command + args + cwd + env - OpenCode 字段:
mcp.<name>.type=local + command[] + environment - 两者启动的是同一个本地 MCP server,差异只在客户端配置 schema,不是服务端能力差异
- 图片生成务必保留较长的客户端侧
timeout,推荐500000毫秒
方式三:Streamable HTTP 远程接入
先启动服务:
uv run image-generate-mcp-remote --transport streamable-http --host 127.0.0.1 --port 3001
服务默认 MCP 路径为:/mcp
{
"mcpServers": {
"image-generate-mcp-remote": {
"url": "http://127.0.0.1:3001/mcp",
"timeout": 500000
}
}
}
上面的 timeout 不要省略。注意,timeout为关键参数;当前 preset 统一只有 1 次默认机会 + 1 次重试机会,且按支持尺寸档位分配上游 HTTP 超时:仅 1K 为 120s、支持 2K 为 150s、支持 4K 为 200s。文档示例推荐值为 500000 毫秒(500 秒),用于覆盖当前 4K preset 最长约 400 秒的两次尝试预算。
方式四:SSE 远程接入
先启动服务:
uv run image-generate-mcp-remote --transport sse --host 127.0.0.1 --port 3001
服务默认路径为:
- SSE 入口:
/sse - 消息通道:
/messages/
对于要求分别填写 SSE 地址与消息地址的客户端,可使用:
http://127.0.0.1:3001/ssehttp://127.0.0.1:3001/messages/
如果客户端还支持单独配置 MCP tool-call 超时,也应显式设置 timeout;文档推荐值为 500000 毫秒(500 秒),用于覆盖当前 4K preset 两次尝试的最长预算,并为网络抖动留出余量。
工具列表
list_image_tools_catalog
输出当前服务暴露的图片工具目录,包括:
- 默认网关地址
- 当前有效模型
- 支持模型列表
- 非敏感环境变量生效值
gpt_image_2_official
OpenAI Images 兼容工具。
mode=generate时调用文生图mode=edit时调用参考图编辑 / 图生图- provider、model、base_url、timeout、retry 及字段派发默认由启动期 preset 决定
- 可按次传入
preset与api_key临时切换 preset;若传preset,必须同传api_key - 尺寸输入统一为
image_size+aspect_ratio两个枚举,preset 按共享尺寸合同映射到对应 GPT 请求像素尺寸 - 支持解析
data[0].b64_json与data[0].url;若上游返回url,服务端会自动下载并保存到save_path - 如传入不支持的枚举组合,错误信息会直接列出该工具支持的尺寸预设;也可先调用
list_image_tools_catalog查看supported_size_presets
nano_banana_2_official
Gemini generateContent 兼容工具。
mode=generate时调用文生图mode=edit时调用参考图编辑 / 图生图- provider、model、base_url、timeout、retry 及字段派发默认由启动期 preset 决定
- 可按次传入
preset与api_key临时切换 preset;若传preset,必须同传api_key - 鉴权请求头同时发送
Authorization: Bearer <key>与x-goog-api-key: <key>以兼容更多 Gemini 兼容网关 - 响应解析兼容
inlineData/inline_data与mimeType/mime_type - 尺寸输入统一为
image_size+aspect_ratio两个枚举,服务会按共享尺寸合同映射到imageConfig - 共享尺寸合同已同时记录
gpt请求尺寸与nano banana实际输出尺寸
gpt_image_2_temporary
OpenAI Images 兼容站点的临时探索工具。
- 允许按次传入
api_key、base_url、model、timeout_seconds - 默认只发送保守字段:
model、prompt、由image_size + aspect_ratio映射得到的size quality、output_format、background、moderation默认不发送;只有显式设置对应send_*参数时才转发- 不进入 preset registry,不应作为生产默认工具;试跑成功后应新增 provider guide 与正式 preset class
- 输出检测兼容常见
b64_json、url、markdown 图片链接、data URL 等形态
nano_banana_2_temporary
Gemini generateContent 兼容站点的临时探索工具。
- 允许按次传入
api_key、base_url、model、timeout_seconds - 默认发送文本 prompt 与保守
generationConfig.imageConfig - 不进入 preset registry,不应作为生产默认工具;试跑成功后应新增 provider guide 与正式 preset class
- 输出检测兼容 Gemini
inlineData/inline_data,也会扫描文本中的 markdown 图片链接、data URL 与 HTTPS URL
内置技能
gpt-icon-generate
- 技能文件:
skills/gpt-icon-generate/SKILL.md - 用途:批量图标板生成、规则网格校验、透明 PNG 切图、UI 图标库落盘
- 默认链路:优先使用
gpt_image_2_official生成2K、1:1、4x4 / 16图标板 - 附带脚本:
skills/gpt-icon-generate/scripts/verify_image_output.py、skills/gpt-icon-generate/scripts/plan_icon_sheet_params.py、skills/gpt-icon-generate/scripts/split_icon_sheet_connected_bbox.py
环境变量说明
GPT Image 工具
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
IMG_GEN_GPT_IMAGE_2_OFFICIAL_API_KEY |
是 | 空 | gpt_image_2_official 使用的 API Key |
IMG_GEN_GPT_IMAGE_2_OFFICIAL_PRESET |
否 | openai_gpt_image_2 |
启动期 active preset id |
Nano Banana 工具
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
IMG_GEN_NANO_BANANA_2_OFFICIAL_API_KEY |
是 | 空 | nano_banana_2_official 使用的 API Key |
IMG_GEN_NANO_BANANA_2_OFFICIAL_PRESET |
否 | google_nano_banana |
启动期 active preset id |
通用变量
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
IMAGE_OUTPUT_DIR |
否 | storage/images |
生成图片的落盘目录 |
LOG_LEVEL |
否 | INFO |
日志级别 |
许可证
本项目采用 MIT 许可证,完整文本见 LICENSE。
Установить Image Generate Remote в Claude Desktop, Claude Code, Cursor
unyly install image-generate-mcp-remoteСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add image-generate-mcp-remote -- uvx image-generate-mcp-remoteFAQ
Image Generate Remote MCP бесплатный?
Да, Image Generate Remote MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Image Generate Remote?
Нет, Image Generate Remote работает без API-ключей и переменных окружения.
Image Generate Remote — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Image Generate Remote в Claude Desktop, Claude Code или Cursor?
Открой Image Generate Remote на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Omni Video
An MCP server that transforms LLM-enabled IDEs into professional video editors by pre-processing footage into text proxies, generating motion graphics via HTML/
автор: buildwithtazaARA
Generate images, video and audio from any AI agent — one connector.
автор: ARAYouTube
Transcripts, channel stats, search
автор: YouTubeEverArt
AI image generation using various models.
автор: modelcontextprotocolCompare Image Generate Remote with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории media
