mcpField
C
Codex / OpenAI Image

Codex / OpenAI Image

Local
github.com/meet30997Media & Design0Updated 2d ago

About Codex / OpenAI Image

An MCP server for generating, editing, and grouping images, aimed at users of Claude and other MCP clients. It supports Codex CLI and the OpenAI Images API through one interface, with previews and file-safety checks.

Key features

  1. 01Generate images with size and variant controls
  2. 02Edit images without changing the originals
  3. 03Create style-matched image sets
  4. 04Use Codex CLI or OpenAI Images API
  5. 05Return previews and save prompt metadata

Use cases

  1. 01Create image assets for a blog or app
  2. 02Revise an existing image using a prompt
  3. 03Generate a consistent set of icons or stickers

MCP support

Exposes image generation, editing, and set creation as tools to MCP clients. It returns previews and saved file paths for iterative agent workflows.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"meet30997-codex-openai-image": {
"command": "npx",
"args": [
"-y",
"codex-openai-image-mcp"
],
"env": {
"IMAGEGEN_PROVIDER": "<IMAGEGEN_PROVIDER>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"IMAGEGEN_OUT_DIR": "<IMAGEGEN_OUT_DIR>"
}
}
}
}
Run commandnpx -y codex-openai-image-mcp
Environment variables to set
IMAGEGEN_PROVIDERImage backend: codex-cli (your ChatGPT plan via the Codex CLI), openai-api, or mock
OPENAI_API_KEYSecretOpenAI API key, only needed for the openai-api backend
IMAGEGEN_OUT_DIRFolder for generated images, relative to the working folder (default generated-images)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmcodex-openai-image-mcp0.1.2

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

codex-openai-image-mcp

codex-openai-image-mcp: generate, edit and make matching image sets from any MCP client. Works with Codex CLI or an OpenAI API key.

An MCP server that lets Claude (and any other MCP client) generate images, edit them, and make matching sets, then look at the result and keep going.

It works with two image backends:

  • Codex CLI: uses the ChatGPT plan you already have through the Codex CLI. No API key, no per-image bill.
  • OpenAI Images API: uses an OPENAI_API_KEY, for people without Codex.

Not affiliated with or endorsed by OpenAI. "OpenAI" and "Codex" are trademarks of OpenAI.

Edit an image: "make it a night scene, keep the car and composition"
The same race-car illustration before and after the edit: day on the left, night with glowing lights on the right
A matching set in one call: "cute flat stickers: coffee, cactus, moon"
Three pastel stickers in one consistent style: a coffee cup, a potted cactus and a sleepy moon

Both examples are real, unretouched output from the Codex backend.

What makes it different

  • Matching sets. generate_set makes several different images that share one style, each saved under its own name.
  • Two backends, one interface. Switch between Codex and the OpenAI API with one setting.
  • Made for an agent loop. Every call returns small previews that Claude can see, reports progress during long runs, can be cancelled, and writes a .json sidecar with the prompt and settings next to each image.
  • Careful with your files. It writes only inside its output folder, never overwrites an existing file, never changes the image you edit, and runs Codex read-only in an empty temporary folder.

Quick start

You need Node.js 20.3 or newer, plus one of:

  • the Codex CLI, signed in (codex login) with a ChatGPT plan that includes Codex image generation, or
  • an OpenAI API key with credits.
Claude Code
# Codex backend (your ChatGPT plan)
claude mcp add images -e IMAGEGEN_PROVIDER=codex-cli -- npx -y codex-openai-image-mcp

# or the OpenAI API
claude mcp add images -e IMAGEGEN_PROVIDER=openai-api -e OPENAI_API_KEY=sk-... -- npx -y codex-openai-image-mcp
Claude Desktop, Cursor and other clients

Add this to the client's MCP config (for Claude Desktop, claude_desktop_config.json):

{
  "mcpServers": {
    "images": {
      "command": "npx",
      "args": ["-y", "codex-openai-image-mcp"],
      "env": { "IMAGEGEN_PROVIDER": "codex-cli" }
    }
  }
}

For the API backend use "IMAGEGEN_PROVIDER": "openai-api" and add "OPENAI_API_KEY".

Then just ask:

  • "Make a watercolour fox for my blog header, 1536x864."
  • "Edit photo.png so it looks like a sunset."
  • "Make 5 matching app icons: home, search, profile, settings, bell."

Images are saved in ./generated-images in the folder the client was started from.

Tools

generate_image
InputDefaultNotes
promptrequired
size1024x1024Any WxH from 16 to 4096 px per side
count11–4 variants, saved as -v1, -v2, …
transparentfalseAsks for a transparent background; the result says if the output has none
references[]Up to 4 images whose style to match
out_nameslug of the promptPath inside the output folder, without extension, e.g. icons/rocket
edit_image
InputDefaultNotes
imagerequiredThe image to change. It is never modified
promptrequiredThe change, e.g. "remove the person on the left", "make it watercolour"
sizethe input's sizeWxH
masknonePNG whose transparent areas mark where to edit (OpenAI API only)
count11–4 variants
transparentfalsee.g. for cutouts
references[]Up to 3 supporting images: something to insert, or a style to apply
out_name<input name>-edited
generate_set
InputDefaultNotes
stylerequiredWhat every image shares: medium, palette, rendering, background
itemsrequired1–8 { name, prompt }; each is saved as <folder>/<name>.png
size1024x1024Same for every image
transparentfalse
references[]Up to 4 images whose style the whole set matches
folderslug of styleFolder inside the output folder

All tools crop and resize the result to exactly the size you ask for, and return the saved paths with a 512 px preview of each image.

Backends

codex-cliopenai-apimock
NeedsCodex CLI, signed inOPENAI_API_KEYnothing
Costyour ChatGPT plan's usageper imagefree
Speed~30–60 s per imagedepends on model and sizeinstant
References, edits, transparencyyesyesedits only
Edit masksnoyesno
Setsone Codex session for the whole setone image at a time, first image used as a style referenceone at a time

mock draws placeholder images, for trying the server out and for tests.

Codex backend. Each call runs codex exec --json --skip-git-repo-check --sandbox read-only --cd <empty temp folder> [--image=<file>…] -- - with a prompt that asks Codex to call its built-in image_gen tool and nothing else. The server reads the session id from Codex's JSON events and collects the images from $CODEX_HOME/generated_images/<session id>/. Codex never gets write access or sees your project beyond the images you pass it. Cancelling the request, or hitting the timeout, stops Codex. Check OpenAI's terms for scripted use of the Codex CLI with your plan.

OpenAI backend. Uses the official openai SDK. The default model is gpt-image-2.5-sunburst; set IMAGEGEN_OPENAI_MODEL=gpt-image-2.5-flare for faster results. Sizes are rounded to ones the API accepts, then resized to yours. This backend is covered by automated tests against a mocked client; it has not yet had a full live test.

Settings

VariableDefault
IMAGEGEN_PROVIDERmock; set codex-cli or openai-api
OPENAI_API_KEYrequired for openai-api
IMAGEGEN_OPENAI_MODELgpt-image-2.5-sunburst
IMAGEGEN_CODEX_BINcodex
IMAGEGEN_OUT_DIRgenerated-images, relative to the working folder
IMAGEGEN_READ_ROOTthe working folder; input images must be inside it
IMAGEGEN_TIMEOUT_SEC300, per image asked for
IMAGEGEN_MAX_PER_CALL8 images
IMAGEGEN_PREVIEW_SIZE512 px

Files and safety

  • Output is written only inside IMAGEGEN_OUT_DIR. Absolute paths, .. and symlinks that lead outside are rejected.
  • Input images (to edit, or as references) must be inside IMAGEGEN_READ_ROOT.
  • Existing files are never overwritten: a new file gets -2, -3, … instead.
  • Each image gets a <name>.json sidecar with the prompt, backend, model, size, inputs and time.
  • API keys are read from the environment only and never logged or written to sidecars.
  • IMAGEGEN_MAX_PER_CALL caps how many images one call can make.

Images are AI-generated. You are responsible for how you use them, including platform rules on AI-generated content, and for not imitating real people or brands.

Development

git clone https://github.com/meet30997/codex-openai-image-mcp.git
cd codex-openai-image-mcp
npm install
npm run build
npm test          # unit and end-to-end tests; no network or API key needed
npm run inspect   # try the tools in the MCP Inspector

To run a local build from Claude Code:

claude mcp add images -e IMAGEGEN_PROVIDER=codex-cli -- node /path/to/codex-openai-image-mcp/dist/index.js

The tests run the Codex backend against a stand-in script (test/fixtures/fake-codex.mjs) and the OpenAI backend against a fake client, so they are free and quick. PLAN.md has the design notes and roadmap. Issues and pull requests are welcome.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.