gpt-image-mcp
Provides image generation and editing tools through OpenAI's Images and Responses APIs, supporting GPT Image models, custom OpenAI-compatible endpoints, image outputs, and structured metadata.
Click on "Deploy 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., "@gpt-image-mcpgenerate a watercolor image of a lighthouse at sunset"
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.
gpt-image-mcp
GPT Image 图像生成与编辑的 MCP Server,为 LLM 客户端提供标准化的工具调用能力。
特性
Images + Responses 双接口:支持
/v1/images/generations、/v1/images/edits与 Responses API 的image_generation工具。GPT Image 2 / 2.5:默认使用
gpt-image-2.5-flare生成、gpt-image-2.5-sunburst编辑,兼容gpt-image-2及日期快照。自定义 endpoint:通过
GPT_IMAGE_BASE_URL接入 OpenAI 兼容中转站,自动补/v1。两端鉴权:入站 HTTP 支持
Authorization: Bearer/X-API-Key;出站自动注入上游 API Key。内联 + 落盘:默认返回 MCP image content;Node 下可传
output_path写入本地文件。三种运行方式:stdio、Streamable HTTP、Cloudflare Workers,共用同一套工具代码。
统一结果约定:成功返回 Markdown +
structuredContent(+ 可选 image content),失败走isError通道。
Related MCP server: McpHub
目录
快速开始
必须配置上游 API Key。以下示例同时适用于 OpenAI 官方端点与中转站:
export GPT_IMAGE_API_KEY=sk-...
# 可选:中转站地址,服务会自动补 /v1
export GPT_IMAGE_BASE_URL=https://relay.example.com直接运行(stdio,默认传输方式):
npx -y -p @aemeath-projects/gpt-image-mcp gpt-image-mcp在 Claude Code 中注册:
claude mcp add gpt-image \
-e GPT_IMAGE_API_KEY=sk-... \
-e GPT_IMAGE_BASE_URL=https://api.openai.com \
-- npx -y -p @aemeath-projects/gpt-image-mcp gpt-image-mcpClaude Desktop 配置示例:
{
"mcpServers": {
"gpt-image": {
"command": "npx",
"args": ["-y", "-p", "@aemeath-projects/gpt-image-mcp", "gpt-image-mcp"],
"env": {
"GPT_IMAGE_API_KEY": "sk-...",
"GPT_IMAGE_BASE_URL": "https://api.openai.com"
}
}
}
}本地 mock 或无需鉴权的中转站可显式设置
GPT_IMAGE_API_KEY="",此时不会发送Authorization头。Windows 下若客户端找不到npx,可将command改为cmd, 并在args开头加入/c。
工具
所有工具都声明 annotations。成功时返回 Markdown 文本与 structuredContent;
默认还会附带 MCP image content。失败时返回 isError: true 与单行中文错误信息。
工具 | 用途 |
| 通过 Images API 生成图片 |
| 通过 Images API 编辑图片,支持多图与 mask |
| 通过 Responses API 生成/编辑图片 |
generate_image
参数 | 类型/默认 | 说明 |
| string,1–32000,必填 | 提示词 |
| string,默认 | 必须以 |
| integer 1–10,默认 1 | 生成数量 |
| string,默认 |
|
|
|
|
|
|
|
|
| 输出格式 |
| integer 0–100,可选 | 仅 |
|
| 内容审核级别 |
| string,可选 | Node 下落盘路径 |
| boolean,默认 | 是否覆盖已存在文件 |
| boolean,默认 | 为 |
edit_image
在 generate_image 参数基础上增加:
参数 | 类型/默认 | 说明 |
| string[],1–16,必填 | 支持 |
| string,可选 | 局部重绘遮罩,来源同 |
|
| 仅 |
单图使用 multipart 字段 image,多图默认使用 image[]。中转站不兼容时可通过
GPT_IMAGE_MULTI_IMAGE_FIELD 改为 image。
generate_image_via_responses
参数 | 类型/默认 | 说明 |
| string,1–32000,必填 | 提示词 |
| string[],0–16,可选 | 作为 |
| string,默认 |
|
| string,默认 | Responses 顶层文本模型 |
| 同上 | 传给 |
|
| 工具动作 |
|
| 文本模型推理强度,映射到 |
| string,可选 | 多轮编辑 |
| 同上 | 落盘与内联控制 |
成功结果的 structuredContent 包含 model、images[](mimeType、bytes、
可选 path / revisedPrompt)、saved_paths、usage 等字段;Responses 工具额外返回
response_id。
落盘命名
output_path以/或\结尾,或指向已存在目录:image_1.png、image_2.png……n > 1且指向文件:stem-1.png、stem-2.png……未提供扩展名时按
output_format补全。默认不覆盖;存在同名文件时整体失败。内联返回模式下会保留图片并给出
warning,inline: false时直接报错。
运行方式
stdio
pnpm build
GPT_IMAGE_API_KEY=sk-... pnpm start # 等价于 node dist/cli.js从 npm 运行:
GPT_IMAGE_API_KEY=sk-... npx -y -p @aemeath-projects/gpt-image-mcp gpt-image-mcpStreamable HTTP
MCP_API_KEY=local-dev GPT_IMAGE_API_KEY=sk-... pnpm start:http默认监听 http://127.0.0.1:3000/mcp。健康检查固定为 GET /health,不受 --path
影响且不鉴权。配置 MCP_API_KEY 后,/mcp 需要携带 Authorization: Bearer <key>
或 X-API-Key: <key>。
# 健康检查(公开)
curl -s http://127.0.0.1:3000/health
# 列出工具(需要鉴权)
curl -s -X POST http://127.0.0.1:3000/mcp \
-H 'Authorization: Bearer local-dev' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# 生成图片
curl -s -X POST http://127.0.0.1:3000/mcp \
-H 'Authorization: Bearer local-dev' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"generate_image","arguments":{"prompt":"a red ceramic cube","size":"1024x1024","quality":"low"}}}'响应为 SSE,result.content 同时包含 Markdown 与 image content,
result.structuredContent 是不含 base64 的元数据。
Node 侧默认绑定 127.0.0.1,并启用 localhost 级别的 Host/Origin 校验。监听 0.0.0.0
或经反向代理暴露时,必须显式配置 MCP_ALLOWED_HOSTS、MCP_ALLOWED_ORIGINS 与
MCP_API_KEY;未配置 MCP_API_KEY 时启动会打印安全警告,端点不启用鉴权。
Cloudflare Workers
pnpm worker:dev # http://127.0.0.1:8787/mcp
pnpm worker:check # 仅打包校验,不部署
pnpm worker:deploy # 手动部署,仅用于调试密钥使用 secret,不要写入 wrangler.jsonc:
wrangler secret put GPT_IMAGE_API_KEY
wrangler secret put MCP_API_KEY非敏感配置(ALLOWED_HOSTS、ALLOWED_ORIGINS、GPT_IMAGE_BASE_URL、GPT_IMAGE_MODEL
等)可放在 Worker 的 Variables 中。日常发布使用 Cloudflare Workers Builds:连接 Git
仓库,生产分支设为 master,Build command 为 pnpm run build,Deploy command 为
npx wrangler deploy,构建环境变量只需 NODE_VERSION=26。
Worker 未启用 nodejs_compat,因此:
图片默认以 base64 内联返回;
output_path与本地文件路径会在请求上游之前报错;编辑图片请使用
http(s)URL 或 base64 data URI。
配置
CLI 参数优先级高于环境变量。所有 GPT_IMAGE_* 变量由服务启动时解析;非法值会直接阻止
启动并给出中文错误。
CLI 参数 | 环境变量 | 默认值 | 说明 |
|
|
| 传输方式 |
|
|
| HTTP 监听地址 |
|
|
| HTTP 监听端口 |
|
|
| MCP 端点路径 |
— |
| 未设置 | 允许的 Host 主机名,逗号分隔 |
— |
| 未设置 | 允许的 Origin 主机名,逗号分隔 |
— |
| 未设置 | 入站鉴权 key,逗号分隔支持多 key |
— |
|
| 自动补 |
— |
| 回退 | 空字符串表示不发送 Authorization |
— |
|
| 生成默认模型 |
— |
|
| 编辑默认模型 |
— |
|
| Responses 顶层文本模型 |
— |
|
| Responses 推理强度; |
— |
|
| Images 请求超时(1000–900000) |
— |
|
| Responses 请求超时(1000–900000) |
— |
| 未设置 | 设置后 |
— |
|
| 多图编辑 multipart 字段名 |
— |
| 未设置 | 附加 |
| — | — | 显示帮助 |
| — | — | 显示版本 |
MCP_API_KEY 使用逗号分隔,因此 key 本身不能包含逗号。Worker 侧对应
ALLOWED_HOSTS / ALLOWED_ORIGINS 变量与 MCP_API_KEY / GPT_IMAGE_* secret。
模型与尺寸
模型 | quality | 任意尺寸 | transparent | input_fidelity |
| low/medium/high/auto | 是 | 支持 | 不支持 |
| low/medium/high/xhigh/max/auto | 是 | 支持 | 不支持 |
| low/medium/high/auto | 否 | 支持 | 支持 |
| low/medium/high/auto | 否 | 支持 | 仅 |
任意尺寸需满足:宽高均为 16 的倍数、比例 1:3–3:1、最长边 ≤ 3840、总像素
655,360–8,294,400;高于 2560×1440 属于实验性范围。未知的 gpt-image-* 模型只做
前缀与语法校验,便于新模型无需改代码即可透传。
数据来源
请求发送到
GPT_IMAGE_BASE_URL指向的 OpenAI 兼容服务:/v1/images/generations、/v1/images/edits、/v1/responses。图片以 base64 返回并转换为 MCP image content;只有传
output_path时才写入本地。previous_response_id的多轮上下文由上游保存,数据保留策略由上游决定。上游 API Key 只写入请求头,不写日志、不拼进 URL;错误信息会对 key 脱敏。
上游返回
data[].url时,服务会下载并转为 base64;下载第三方存储地址时不携带 key。
开发
环境要求:Node.js >= 24.22.1,pnpm 12.15.0(由 packageManager 固定)。
pnpm install
pnpm build
pnpm lint
pnpm type-check
pnpm worker:check构建后可用 MCP Inspector 手动调试(需要配置可用的 API Key 与 endpoint):
pnpm inspect常用脚本:
脚本 | 说明 |
| tsup watch 构建 |
| ESLint 检查 |
| ESLint 自动修复 |
| Prettier 检查 |
| Prettier 格式化 |
| TypeScript 类型检查 |
| MCP Inspector 调试(需先构建) |
| 本地 Worker 开发 |
| Worker 打包校验 |
| 版本号、CHANGELOG、tag 与提交 |
| Commitizen 交互式提交 |
目录结构:
src/
├── auth.ts # 入站 API Key 校验(常量时间比较)
├── cli.ts # bin 入口,stdio/http 分流并注入 Node 文件能力
├── config.ts # MCP 传输层 CLI 与环境变量解析
├── env.ts # 列表环境变量解析(Worker 可用)
├── errors.ts # ToolError 与错误消息工具
├── http.ts # 共享 web-standard fetch handler(含鉴权)
├── index.ts # 公共库 barrel
├── node.ts # node:http + toNodeHandler
├── node-files.ts # Node 文件读写实现(仅 cli.ts 引用)
├── server.ts # McpServer 工厂与工具注册
├── version.ts # 服务名与版本号
├── worker.ts # Cloudflare Worker 入口
├── gpt-image/ # 领域层
│ ├── base64.ts # base64 / data URI / MIME 工具
│ ├── client.ts # GptImageApiError
│ ├── config.ts # GPT_IMAGE_* 配置与 base URL 归一化
│ ├── files.ts # ImageIO 接口、MIME 魔数识别
│ ├── images.ts # Images API 生成与编辑
│ ├── inputs.ts # URL / data URI / 本地路径解析
│ ├── models.ts # 模型能力表与参数校验
│ ├── request.ts # fetch 封装、超时、错误映射
│ └── responses.ts # Responses API image_generation
└── tools/
├── images.ts # generate_image / edit_image
├── output.ts # 落盘与结果组装
├── register.ts # 统一的成功/失败结果封装
├── responses.ts # generate_image_via_responses
└── schemas.ts # 共享 zod 输入/输出 schema新增工具时,按 src/tools/images.ts 的模式实现 registerXxxTools(server, config),在
src/server.ts 中注册,领域逻辑放入 src/gpt-image/。
http.ts、server.ts、worker.ts、env.ts、version.ts、auth.ts、tools/**、
gpt-image/** 保持 Node-free,由 ESLint no-restricted-imports 约束;Node 文件能力
node-files.ts 只由 cli.ts 注入,不会进入 Worker bundle。
Available Tools
3 toolsedit_image编辑图片A
通过 OpenAI Images API(/v1/images/edits)编辑图片,支持单图、多图、mask 与 gpt-image-2 / 2.5 系列模型。
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | 生成图片数量(1-10,默认 1)。 | |
| mask | No | 图片来源:http(s) URL、base64 data URI 或本地文件路径(本地路径仅 Node 运行时)。 | |
| size | No | 图片尺寸:auto 或 宽x高;不同模型对尺寸的限制不同。 | auto |
| model | No | 图像模型 ID,例如 gpt-image-2.5-flare;必须以 gpt-image- 开头。 | |
| images | Yes | 输入图片列表(1-16 张)。 | |
| inline | No | 是否以 MCP image content 内联返回图片;设为 false 时必须提供 output_path。 | |
| prompt | Yes | 图像生成或编辑的提示词(1-32000 个字符)。 | |
| quality | No | 生成质量;xhigh 与 max 仅 gpt-image-2.5 系列支持。 | medium |
| overwrite | No | 是否允许覆盖已存在的文件。 | |
| background | No | 背景模式;transparent 只能配合 png 或 webp。 | auto |
| moderation | No | 内容审核级别(默认 auto)。 | auto |
| output_path | No | 保存路径:目录或以 / 结尾时按 image_1.ext 命名,文件路径且 n>1 时按 stem-1.ext 命名。 | |
| output_format | No | 输出图片格式(默认 png)。 | png |
| input_fidelity | No | 输入保真度,仅 gpt-image-1.5 与 gpt-image-1-mini 支持。 | |
| output_compression | No | 输出压缩率(0-100),仅 jpeg 与 webp 有效。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| size | No | |
| model | Yes | |
| usage | No | |
| images | Yes | |
| quality | No | |
| warning | No | |
| saved_paths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It provides valuable operational context by specifying the reliance on the OpenAI Images API and detailing specialized features like mask support and support for specific model series (gpt-image-2/2.5). This informs the agent about the technological constraints and nature of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is extremely concise, using a single, dense sentence to communicate the tool's core function, API mechanism, and key functional scope (single/multi/mask/models) with zero wasted language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the input schema (15 parameters, various input types), the description successfully summarizes the operational boundaries and key technological dependencies, ensuring the agent has a complete picture of the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning the schema handles all technical details for the 15 parameters. The description provides only high-level operational context regarding the tool's function, which meets the minimum viable baseline for documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is highly specific, stating the purpose is image editing and explicitly names the OpenAI Images API endpoint (/v1/images/edits). It clearly distinguishes itself from pure generation tools by specifying that it supports masks and multi-image editing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The definition sets clear boundaries by focusing exclusively on image editing capabilities (single image, multi-image, mask). This implicitly guides the agent to choose this tool when modification is required, as opposed to when pure content creation is the goal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_image生成图片C
通过 OpenAI Images API(/v1/images/generations)生成图片,支持 gpt-image-2 与 gpt-image-2.5 系列模型。
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | 生成图片数量(1-10,默认 1)。 | |
| size | No | 图片尺寸:auto 或 宽x高;不同模型对尺寸的限制不同。 | auto |
| model | No | 图像模型 ID,例如 gpt-image-2.5-flare;必须以 gpt-image- 开头。 | |
| inline | No | 是否以 MCP image content 内联返回图片;设为 false 时必须提供 output_path。 | |
| prompt | Yes | 图像生成或编辑的提示词(1-32000 个字符)。 | |
| quality | No | 生成质量;xhigh 与 max 仅 gpt-image-2.5 系列支持。 | medium |
| overwrite | No | 是否允许覆盖已存在的文件。 | |
| background | No | 背景模式;transparent 只能配合 png 或 webp。 | auto |
| moderation | No | 内容审核级别(默认 auto)。 | auto |
| output_path | No | 保存路径:目录或以 / 结尾时按 image_1.ext 命名,文件路径且 n>1 时按 stem-1.ext 命名。 | |
| output_format | No | 输出图片格式(默认 png)。 | png |
| output_compression | No | 输出压缩率(0-100),仅 jpeg 与 webp 有效。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| size | No | |
| model | Yes | |
| usage | No | |
| images | Yes | |
| quality | No | |
| warning | No | |
| saved_paths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, so the mutation/external-call profile is covered structurally. The description adds only the endpoint and model families; it says nothing about the fact that the call writes files to disk (output_path/overwrite), incurs cost and latency, or is subject to moderation, which are the traits an agent most needs beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, identifying the mechanism and model scope immediately. It is efficient, though short enough that it does not use the freed space for any differentiation or behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the parameter schema is fully documented, so return values and inputs need no explanation. However, for a 12-parameter tool that persists files and has two close siblings, the description omits sibling routing and the file-writing behavior, leaving the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 12 parameters, including enums and defaults, so the schema carries the parameter burden. The description adds no syntax, format, or constraint detail beyond what the schema already states (e.g., the gpt-image- prefix rule is already in the model field). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — generating images through the OpenAI Images API (/v1/images/generations) — and names the supported model families. It is clear on its own but never distinguishes itself from the siblings generate_image_via_responses or edit_image, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to prefer this tool over generate_image_via_responses or edit_image, no prerequisites, and no exclusions. The only routing signal is the API endpoint, which an agent must interpret itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_image_via_responses通过 Responses 生成图片A
通过 OpenAI Responses API 的 image_generation 工具生成图片,支持 previous_response_id 多轮编辑与参考图输入。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 图片尺寸:auto 或 宽x高;不同模型对尺寸的限制不同。 | auto |
| model | No | 图像模型 ID,例如 gpt-image-2.5-flare;必须以 gpt-image- 开头。 | |
| action | No | auto | |
| effort | No | Responses 文本模型的推理强度;省略时使用 GPT_IMAGE_REASONING_EFFORT(默认 high,设为 none 可禁用)。 | |
| images | No | ||
| inline | No | 是否以 MCP image content 内联返回图片;设为 false 时必须提供 output_path。 | |
| prompt | Yes | 图像生成或编辑的提示词(1-32000 个字符)。 | |
| quality | No | 生成质量;xhigh 与 max 仅 gpt-image-2.5 系列支持。 | medium |
| overwrite | No | 是否允许覆盖已存在的文件。 | |
| background | No | 背景模式;transparent 只能配合 png 或 webp。 | auto |
| text_model | No | 图像模型 ID,例如 gpt-image-2.5-flare;必须以 gpt-image- 开头。 | |
| output_path | No | 保存路径:目录或以 / 结尾时按 image_1.ext 命名,文件路径且 n>1 时按 stem-1.ext 命名。 | |
| previous_response_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| size | No | |
| model | Yes | |
| usage | No | |
| images | Yes | |
| quality | No | |
| warning | No | |
| response_id | No | |
| saved_paths | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, so the mutation and external-dependency profile is partly carried structurally. The description adds useful context that the call runs through the OpenAI Responses API and can be chained via previous_response_id, but it never mentions that results can be written to disk (output_path/overwrite), says nothing about latency, cost, or failure behavior for this remote call. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the mechanism (Responses API image_generation) first, then the differentiating capabilities. No filler, no repetition of the tool name, nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is correctly omitted, and the rich schema covers most operational detail. But for a 13-parameter tool with sibling confusion, the description leaves two material gaps: how this differs from generate_image/edit_image, and that the call can persist files to disk. Adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 77%, so the schema already explains most fields, but two parameters carry no schema description at all: previous_response_id and the action enum. The description supplies real semantics for the first of these ('多轮编辑'), and '参考图输入' clarifies the role of the images array beyond its format description. That is genuine added meaning rather than restatement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and title state a specific verb and resource (generate images via the OpenAI Responses API image_generation tool), and the description adds the two capabilities that define this particular variant: previous_response_id-driven multi-turn editing and reference-image input. However, it never names its siblings generate_image and edit_image, so an agent cannot tell from the description alone which of the three to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentioning 'supports previous_response_id multi-turn editing and reference image input' implies the selection condition (use this when continuing an existing image conversation or supplying reference images), but the guidance is never made explicit. There is no statement of when NOT to use it and no reference to generate_image or edit_image as alternatives, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
edit_image - First observed
generate_image - First observed
generate_image_via_responses
TDQS
Scored across 3 tools
generate_image and generate_image_via_responses both create images, so there is potential overlap, but the descriptions clearly distinguish the underlying API and the multi-turn/reference-image capability. edit_image is clearly separate. An agent can choose correctly if it reads descriptions, though the generation split could still cause minor hesitation.
All tool names follow a verb_noun pattern and are consistently snake_case. generate_image_via_responses adds a longer qualifier but remains readable and intentional. Minor deviation only.
Three tools are well-scoped for an image generation/editing server: generate via one API, generate via another API with multi-turn support, and edit. Each tool earns its place without unnecessary surface area.
The core image lifecycle is covered: generation and editing, including masks, multiple images, references, and multi-turn editing. Some optional operations like variations or upscaling are absent, but the primary workflows are present.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Zero-dependency Cloudflare Worker gateway turning websites and REST APIs into MCP tools.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to discover and execute operational tools such as database mutations and system diagnostics over stdio, with deterministic structured outputs and Langfuse observability.ISC
- AlicenseNot gradedqualityCmaintenanceEnables AI tools to uniformly discover, inspect, and call tools, prompts, and resources from multiple upstream MCP servers through a small set of fixed MCP tools, over stdio or HTTP.2MIT
- AlicenseNot gradedqualityCmaintenanceEnables you to create and run your own custom MCP tools using plain Node.js, then connect them to AI clients like Claude, Cursor, or Windsurf.5 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients such as Claude, Cursor, VS Code, and Windsurf to manage workspaces, projects, tasks, and AI agents through natural language, using a hosted OAuth-authenticated endpoint or a local stdio package. It also ships an OpenAPI codegen tool for generating MCP tools from any OpenAPI spec.1,958 npmMIT