gpt-image-mcp
gpt-image-mcp
Give Claude Code the image-generation superpower. Say "draw me a picture", and Claude Code generates it right in your conversation using OpenAI
gpt-image-2โ no need to switch apps or copy prompts.
๐ฏ What is this?
For Claude Code users: this project plugs gpt-image-2 image generation straight
into Claude Code as an MCP server. Install once, register once, and Claude Code gains a
native generate_image ability โ you describe the image in plain language (any
language), and Claude Code produces the prompt, calls gpt-image-2, and hands you a
local PNG. If you've ever wanted Claude to "just draw it" instead of explaining it, this
is the missing piece.
It also works as a standalone CLI and with any other MCP host โ the same core, everywhere.
No ChatGPT Plus subscription needed โ just any gpt-image-2-capable API key.
Workflow:
You: "A cyberpunk orange tabby cat in a spacesuit, starfield, cinematic lighting"
โ Claude Code optimizes your prompt into professional English (automatic)
โ gpt-image-mcp calls OpenAI gpt-image-2
โ PNG saved locally โ absolute path returned
You: got your image โโจ Features
Native Claude Code integration. Register once, and Claude Code gains a real
generate_imagetool โ describe any scene in plain language, get a local PNG back inside your chat.Two entrypoints, one core. The same generation logic powers both an MCP server and a plain CLI.
gpt-image-mcp --mcpโ stdio MCP server withgenerate_image/list_imagestoolsgpt-image-mcp "a cat in a spacesuit"โ one-shot CLI generation
Any OpenAI-compatible backend. Point
OPENAI_BASE_URLanywhere you like (resellers, proxies, self-hosted gateways).Quality tiers map to
gpt-image-2's ownlow/medium/highknob. No extra models, no extra cost surprises.Keys never in code. Everything is env-driven โ secrets stay out of your repo.
Async-safe. Images stream to disk as base64-decoded PNGs locally; the API never writes to your disk for you.
๐งฐ Requirements
Python 3.10+
An OpenAI API key, or an OpenAI-compatible endpoint (reseller / gateway / self-hosted) that serves
gpt-image-2(or a compatible model you set viaGPT_IMAGE_MODEL).Python installable via
piporuv.
๐ฆ Install
From PyPI
pip install gpt-image-mcp # pip
# or
uv tool install gpt-image-mcp # uvFrom source
git clone https://github.com/Garfield-Wuu/gpt-image-mcp
cd gpt-image-mcp
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .โ๏ธ Configuration
All configuration is via environment variables:
Variable | Required | Default | Description |
| โ | โ | Your API key (official or reseller). Never hardcode it. |
| โ |
| Any OpenAI-compatible endpoint base URL (incl. |
| โ |
| Model name served by the endpoint. |
| โ |
| Directory where generated PNGs are saved. |
Tip: The default base URL is the official OpenAI endpoint. To use a reseller or proxy, just set
OPENAI_BASE_URLto its/v1root โ nothing else changes.
๐ Usage
As an MCP server (Claude Code)
Register the server (replace ~/.venv with your actual env path):
claude mcp add gpt-image -s user \
--env OPENAI_API_KEY="$OPENAI_API_KEY" \
--env OPENAI_BASE_URL="$OPENAI_BASE_URL" \
--env GPT_IMAGE_OUT="$PWD/out" \
-- gpt-image-mcp --mcpRestart Claude Code, and two tools become available:
generate_imageโ generate an image and save it locally.โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ "A cyberpunk orange tabby cat in a spacesuit โฆ" โ โ โ gpt-image-mcp โ local PNG โ absolute path returned โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโParameters:
prompt(required),size,quality,out_name.list_imagesโ list previously generated PNGs (newest first).
What to say in Claude Code:
"Draw a cyberpunk orange tabby in a spacesuit, starfield, cinematic, high quality." โ triggers
generate_image"Generate a 1536x1024 landscape hero shot: cyberpunk city in the rain, neon reflections." โ set size + quality
"Which images have I generated before?" โ triggers
list_images
No magic syntax needed โ just describe the image in your own words, in any language. Claude Code handles the rest.
As a CLI
export OPENAI_API_KEY="sk-..."
gpt-image-mcp "a cyberpunk orange tabby cat, neon rain, cinematic" \
--size 1536x1024 --quality high --out ./out/hero.pngWithout --no-interactive, the CLI lets you pick size/quality interactively when a TTY
is present.
๐ผ๏ธ Parameters
size โ canvas orientation:
Value | Orientation |
| Square |
| Landscape |
| Portrait |
quality โ gpt-image-2's own quality knob (single model; trade-off is
speed/cost vs. detail):
Value | Use case |
| Drafts / quick thumbnails |
| Balanced default |
| Final hero art, more detail/slower |
๐ ๏ธ Development
pip install -e ".[dev]"
ruff check . # lint
pytest # run tests
python -m build # build sdist + wheelLayout:
src/gpt_image_mcp/
โโโ img_core.py # shared generation logic (no MCP dependency)
โโโ mcp_server.py # FastMCP server: generate_image / list_images
โโโ __main__.py # CLI + MCP entrypoints๐ Security
Your API key is never embedded in this package. It is read from
OPENAI_API_KEYat call time.Nothing is logged or transmitted beyond the single image-generation request.
The
.envandout/directories are git-ignored by default.
๐ Notes & caveats
Each request typically takes ~10โ60 s depending on endpoint and quality tier.
This project is not affiliated with OpenAI; it's an independent MCP wrapper.
gpt-image-2returns images as base64 by default, which this tool decodes and writes to disk locally. Aurlfallback is also handled.
๐ License
MIT ยฉ Garfield-Wuu.
โญ Support
If this saved you a rabbit hole, a star is appreciated. Issues and PRs welcome.
๐ Other languages / ๅ ถไป่ฏญ่จ
ไธญๆ็ README (README.zh-CN.md) โ ็ฎไฝไธญๆ