This server provides a unified remote image generation service compatible with OpenAI Images and Gemini generateContent APIs, supporting text-to-image generation and image editing through a flexible preset system.
Image Generation & Editing
Generate images from text prompts using
gpt_image_2_official(OpenAI-compatible) ornano_banana_2_official(Gemini-compatible)Edit/transform existing images (image-to-image) by providing reference images alongside a prompt
Apply image masks for inpainting-style edits (GPT tool supports a
maskparameter)Control output quality (
auto,low,medium,high), format (png,jpeg,webp), background (auto,opaque), image size (1K/2K/4K), and aspect ratio (1:1,16:9,21:9, etc.)Automatically save generated images to a configurable output directory
Temporary/Exploratory Tools
Test unknown or unofficial compatible endpoints via
gpt_image_2_temporaryandnano_banana_2_temporary, which accept arbitrarybase_url,model,api_key, andtimeoutper call
Preset & Configuration Management
Override the active preset and API key on a per-call basis for official tools
Retrieve server configuration via
list_image_tools_catalog(active preset, supported sizes, parameter guidance, non-sensitive env vars)List all registered presets with
list_image_presets_tool(bound tool, base URL, default model)
Gemini-Specific Controls
Set
thinking_level(minimal/High),include_thoughts, andresponse_modalities(TEXT,IMAGE) on the Nano Banana tool
Specialized Skills & Deployment
Built-in
gpt-icon-generateskill for grid-based icon board generation, validation, and transparent PNG slicingSupports multiple transport modes: stdio (local), Streamable HTTP, and SSE for remote deployment
Includes systemd user service deployment guidance for production hosting
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@image-generate-mcp-remoteGenerate a realistic image of a sunset over the mountains."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
image-generate-mcp-remote
一个基于 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图标生成技能,约定规则网格图标板生成、校验和切图流程
Related MCP server: imagegen-mcp
启动期预设(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 .env2. 配置环境变量
至少填写你要使用的工具对应 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 + envOpenCode 字段:
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映射得到的sizequality、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 工具
变量名 | 必填 | 默认值 | 说明 |
| 是 | 空 |
|
| 否 |
| 启动期 active preset id |
Nano Banana 工具
变量名 | 必填 | 默认值 | 说明 |
| 是 | 空 |
|
| 否 |
| 启动期 active preset id |
通用变量
变量名 | 必填 | 默认值 | 说明 |
| 否 |
| 生成图片的落盘目录 |
| 否 |
| 日志级别 |
许可证
本项目采用 MIT 许可证,完整文本见 LICENSE。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zztdandan/image-generate-mcp-remote'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
