Skip to main content
Glama
OpenAI Image MCP Server

OpenAI Image MCP Server

by aleslanger

OpenAI image mcp

MCP server for OpenAI gpt-image models — generate, edit, and multi-turn edit images straight from Claude (or any MCP client).

Tools

  • generate_image — text → image(s)

  • edit_image — edit / extend / compose with an optional mask

  • edit_image_conversation — multi-turn iterative edit (Responses API)

  • image_capabilities — discover models, params, pricing as-of date


Related MCP server: GPT Image 1 MCP

Quick start

1. Get the code & build

git clone <repo-url> openai-image-mcp
cd openai-image-mcp
npm install
npm run build

npm run build produces dist/index.js — the entrypoint you point Claude at.

2. Register with Claude Code (one command)

claude mcp add openai-image --scope user \
  --env OPENAI_API_KEY=sk-your-openai-api-key \
  --env IMAGE_OUTPUT_DIR=/absolute/path/to/images \
  -- node /absolute/path/to/openai-image-mcp/dist/index.js
  • Use an absolute path to dist/index.js (output of step 1).

  • IMAGE_OUTPUT_DIR is where generated images are written. Optional — defaults to ~/Pictures/openai-image-mcp.

  • --scope user makes it available in every project. Use --scope project to limit it to the current repo.

Verify it registered:

claude mcp list

3. Use it

In Claude, just ask — e.g. "generate an image of a red bicycle on the beach". The server writes the file under IMAGE_OUTPUT_DIR and returns the path.


Configuration (env vars)

Var

Required

Default

Purpose

OPENAI_API_KEY

yes¹

—

OpenAI API key

OPENAI_API_KEY_FILE

yes¹

—

path to a file containing the API key (trailing whitespace trimmed); used when OPENAI_API_KEY is unset

IMAGE_OUTPUT_DIR

no

~/Pictures/openai-image-mcp

where images are saved

DEFAULT_MODEL

no

gpt-image-2

gpt-image-1 / gpt-image-1-mini / gpt-image-2

DEFAULT_OUTPUT_MODE

no

path

path | base64 | both

MAX_COST_PER_CALL_USD

no

—

reject a call whose estimate exceeds this

CONFIRM_ABOVE_N

no

—

require confirm:true when generating more than N images

ALLOW_URL_INPUT

no

false

allow image inputs given as URLs (see Security)

¹ Exactly one of OPENAI_API_KEY or OPENAI_API_KEY_FILE is required. Prefer OPENAI_API_KEY_FILE pointing to a chmod 600 file so the key does not live in client config files. | SPEND_LOG_PATH | no | — | append per-call cost records as JSONL | | PROMPT_ENHANCE | no | false | locally augment short prompts (no extra LLM call) | | OPENAI_BASE_URL | no | — | override API base URL | | LOG_LEVEL | no | info | debug | info | warn | error |

Add any of these as extra --env KEY=value flags on the claude mcp add command.


Manual MCP config (other clients)

If your client uses a JSON config (Claude Desktop, Cursor, VSCode), add:

{
  "mcpServers": {
    "openai-image": {
      "command": "node",
      "args": ["/absolute/path/to/openai-image-mcp/dist/index.js"],
      "env": {
        "OPENAI_API_KEY": "sk-your-openai-api-key",
        "IMAGE_OUTPUT_DIR": "/absolute/path/to/images"
      }
    }
  }
}

Security notes

  • URL image input is off by default. Set ALLOW_URL_INPUT=true to enable. When on, fetches resolve all DNS addresses and reject any private / loopback / link-local / CGNAT / IPv4-mapped target, re-validating on every redirect hop (SSRF guard).

  • Output paths are confined to IMAGE_OUTPUT_DIR; existing files are never overwritten (a numeric suffix is added on collision).

  • Logs go to stderr only; stdout is reserved for the MCP protocol.


Development

npm test          # run the vitest suite
npm run typecheck # tsc --noEmit
npm run build     # compile to dist/

Notes

  • Models: gpt-image-1 (deprecating 2026-10-23), gpt-image-1-mini, gpt-image-2 (default).

  • DALL-E was removed from the OpenAI API (2026-05-12) — not supported.

  • Pricing data is as of 2026-06; query the image_capabilities tool for details.

Available Tools

4 tools
edit_imageC

Edit, extend, or compose images with a prompt and optional mask (gpt-image).

Inputs: images (required), prompt (required), n, mask, +10 more.

edit_image_conversationB

Multi-turn iterative image editing via the Responses API (stateful by previous_response_id).

Inputs: prompt (required), model, action, output, +3 more.

generate_imageC

Generate image(s) from a text prompt using OpenAI gpt-image models.

Inputs: prompt (required), n, size, model, +7 more.

image_capabilitiesA

Discover available models, allowed params, size/quality limits, pricing as-of date, and defaults.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool targets a distinct image operation: single edit, multi-turn edit, generation from text, and capability discovery. There is no overlap in purpose.

    Naming Consistency3/5

    Tool names mix verb_noun (edit_image, generate_image) with noun_noun (image_capabilities) and a longer compound (edit_image_conversation). While all use snake_case, the pattern is inconsistent.

    Tool Count5/5

    Four tools cover essential image operations without excess. The scope is well-defined for a focused MCP server.

    Completeness4/5

    Core image generation and editing workflows are covered, including multi-turn. Missing a dedicated variation tool is a minor gap, but the set is largely complete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers