imagen-mcp
The imagen-mcp server provides intelligent multi-provider image generation and editing via MCP tools, supporting OpenAI (gpt-image-2) and Google Gemini with automatic provider selection based on prompt content.
Core Tools:
Generate images — Create images from text prompts with auto or manual provider selection; supports custom sizes, quality tiers, aspect ratios, and output paths
Batch generation — Generate up to 50 images concurrently with per-item error isolation
Conversational refinement — Iteratively refine images across multi-turn dialogues with conversation history tracking
Edit existing images — Inpaint or modify images using OpenAI's gpt-image-2 with optional mask support
List providers — View configured providers, their capabilities, and best use cases
List conversations — Browse saved multi-turn sessions for resumption or review
List Gemini models — Query available Gemini image generation models
Estimate cost — Approximate generation cost without actually generating an image
Key Features:
Auto provider routing — OpenAI for text-heavy images, diagrams, comics, and infographics; Gemini for photorealistic portraits, product photography, and 4K output
Reference images — Up to 14 base64-encoded reference images for style/character consistency (Gemini only)
Google Search grounding — Incorporate real-time data (weather, stocks, events) into images (Gemini only)
High-resolution output — Up to 4K with Gemini; up to 3840px with OpenAI
Multiple output formats — PNG, JPEG, WebP; results as markdown or JSON
Fallback notices — Clear warnings when the optimal provider isn't configured
Generates images using Google Gemini's image models (Nano Banana Pro, Flash, Imagen 3.0) with support for photorealism, up to 4K resolution, reference images for character/style consistency, real-time data via Google Search grounding, and conversational history for iterative refinement.
Generates images using OpenAI's GPT-Image-1 model, optimized for text-heavy images like menus, infographics, comics, and diagrams with excellent text rendering capabilities.
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., "@imagen-mcpcreate a logo for a coffee shop called 'Morning Brew' with a minimalist design"
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.
imagen-mcp
A Model Context Protocol (MCP) server for intelligent multi-provider image generation.
Quick Start
Version 0.4.0 is released as the immutable v0.4.0 Git tag and is not
published on PyPI. Install it from that tag or a local checkout, then run the
canonical module or console script:
git clone https://github.com/michaeljabbour/imagen-mcp.git
cd imagen-mcp
python3 -m pip install .
python -m imagen_mcp
# equivalent after installation: imagen-mcpFor a reproducible VCS install, use the release tag:
python3 -m pip install \
"imagen-mcp @ git+https://github.com/michaeljabbour/imagen-mcp.git@v0.4.0"The historical python -m src.server entry point remains available for
compatibility in 0.4.x.
See CHANGELOG.md for release details and migration notes.
1. Get an API key (at least one):
Provider | Get a key at | Environment variable |
OpenAI |
| |
Google Gemini |
|
Having both keys lets auto-selection use either provider. With only one key, soft preferences may fall back with a notice. An unavailable explicit provider pin fails closed; in auto mode, Gemini-only requirements such as reference images and Google Search grounding also fail closed rather than silently dropping the requested capability.
2. Add to your MCP client (pick one):
claude mcp add -s user imagen \
-e OPENAI_API_KEY=sk-... \
-e GEMINI_API_KEY=AI... \
-- imagen-mcpVerify it's registered:
claude mcp listReference: Claude Code MCP docs
Edit the config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"imagen": {
"command": "imagen-mcp",
"args": [],
"env": {
"OPENAI_API_KEY": "sk-...",
"GEMINI_API_KEY": "AI..."
}
}
}
}Restart Claude Desktop (Cmd+Q, then reopen) after editing.
Reference: Claude Desktop MCP docs
Option A — CLI command:
codex mcp add imagen -- imagen-mcpOption B — edit ~/.codex/config.toml directly:
[mcp_servers.imagen]
command = "imagen-mcp"
[mcp_servers.imagen.env]
OPENAI_API_KEY = "sk-..."
GEMINI_API_KEY = "AI..."Reference: Codex MCP docs
Edit ~/.gemini/settings.json:
{
"mcpServers": {
"imagen": {
"command": "imagen-mcp",
"args": [],
"env": {
"OPENAI_API_KEY": "sk-...",
"GEMINI_API_KEY": "AI..."
}
}
}
}Reference: Gemini CLI MCP docs
Setting | Value |
Command |
|
Args |
|
Environment |
|
3. Generate an image — ask your AI assistant:
"Generate a professional headshot with studio lighting"
That's it. The server picks a provider automatically and uses Gemini 3.1 Flash Image when Gemini is selected unless you explicitly request another Gemini model.
Related MCP server: ImageGen MCP Server
Features
Auto Provider Selection — analyzes prompts to choose the best provider
Multi-Provider Support — OpenAI gpt-image-2 and Google Gemini 3 Image
Reference Images — up to 14 images for character/style consistency (Gemini)
Real-time Data — Google Search grounding for current info (Gemini)
Conversational Refinement — iteratively refine images with context
High Resolution — up to 4K output (Gemini)
Fallback Notices — clear warnings when a prompt would benefit from a provider you haven't configured
How Auto-Selection Works
The server analyzes your prompt and routes it to the best provider:
"Create a menu card for an Italian restaurant" -> OpenAI (text rendering)
"Professional headshot with studio lighting" -> Gemini (photorealism)
"Infographic about climate change" -> OpenAI (diagram + text)
"Product shot of perfume on marble" -> Gemini (product photography)What if the best provider isn't configured? The server falls back to whatever you have and tells you:
Provider Fallback: Gemini would be better for this prompt (Photorealistic content), but it's not configured. Using OpenAI instead. Set
GEMINI_API_KEYfor better results.
You can always override auto-selection with the provider parameter:
generate_image(prompt="...", provider="openai")
generate_image(prompt="...", provider="gemini")Explicit provider pins never fall back. In auto mode, hard Gemini requirements (reference images, Google Search grounding, and recognized real-time-data requests) also fail if Gemini is unavailable. Soft quality preferences may fall back to the configured provider and include a notice.
Provider Comparison
Feature | OpenAI gpt-image-2 | Gemini 3 Image |
Text Rendering | Excellent | Good |
Photorealism | Good | Excellent |
Latency | Varies by size/quality | Varies by model/size |
Max Resolution | 3840px edge / 8,294,400 pixels | 4K |
Sizes | Constrained custom | 1K, 2K, 4K; Flash also 0.5K |
Aspect Ratios | Up to 3:1 | 10 baseline presets; 14 on Gemini 3.1 Flash/Flash Lite |
Reference Images | Via | Yes (model-specific, up to 14) |
Real-time Data | No | Yes (Google Search) |
Use OpenAI for: text-heavy images, menus, infographics, comics, diagrams
Use Gemini for: portraits, product photography, 4K output, reference images
For gpt-image-2, both edges must be multiples of 16 and no larger than
3840px, the long-to-short ratio must be at most 3:1, and total pixels must be
between 655,360 and 8,294,400. Outputs above 2560x1440 are experimental.
gpt-image-2 does not support transparent backgrounds; use an opaque output
and a downstream background-removal step.
MCP Tools
Tool | Description |
| Main tool with auto provider selection (reports progress) |
| Generate many prompts concurrently (bounded fan-out, per-item error isolation) |
| Multi-turn refinement; native MCP elicitation with dialogue fallback |
| Edit/inpaint an existing image via OpenAI gpt-image-2 |
| List active conversations and their history |
| Show available providers and capabilities |
| Query available Gemini image models |
| Approximate generation cost without generating |
All tools advertise MCP tool annotations (read-only / open-world hints) so clients can reason about their side effects.
Output Location
Images are saved to ~/Downloads/images/{provider}/ by default (openai/ or gemini/ subdirectories).
Customize with:
# Save to a specific directory (auto-generated filename)
generate_image(prompt="...", output_path="~/Desktop/logos/")
# Save to a specific file
generate_image(prompt="...", output_path="~/Desktop/logos/my-logo.png")Set OUTPUT_DIR to change the base directory globally. Logs go to {OUTPUT_DIR}/logs/.
Gemini-Specific Features
# High resolution
generate_image(prompt="...", size="4K")
# Specific model
generate_image(prompt="...", gemini_model="gemini-3.1-flash-image")
# Reference images for style/character consistency (base64 encoded)
generate_image(prompt="...", reference_images=["base64..."])
# Real-time data via Google Search
generate_image(prompt="Current weather in NYC", enable_google_search=True)Search grounding requires Markdown output and a client that renders the returned Google Search Suggestions HTML plus associated source links. JSON output fails before calling Gemini because escaped HTML is not a compliant rendered surface.
Available Models
OpenAI
Model ID | Description |
| Default image generation and editing model |
| Legacy compatibility model |
| Legacy compatibility model |
Gemini
Model ID | Description |
| Nano Banana 2; default GA model, 0.5K/1K/2K/4K |
| Nano Banana Pro; GA model, 1K/2K/4K |
| Nano Banana Lite; 1K only, no Search, up to 14 object references |
Retired *-preview IDs are rejected with an actionable GA migration message;
explicit model pins never silently change. Gemini 3.1 Flash Lite Image outputs include SynthID and C2PA
provenance metadata; downstream transforms should preserve that metadata when
the file format and processing pipeline allow it.
Architecture
flowchart TB
subgraph Clients["MCP Clients"]
CD[Claude Desktop]
CC[Claude Code CLI]
GC[Gemini CLI]
CX[Codex CLI]
end
subgraph Server["imagen-mcp Server"]
MCP[MCP Protocol Layer]
subgraph Tools["MCP Tools"]
GI[generate_image]
CI[conversational_image]
LP[list_providers]
LM[list_gemini_models]
end
subgraph Core["Core Components"]
PS[Provider Selector]
PR[Provider Registry]
end
subgraph Providers["Image Providers"]
OAI[OpenAI Provider<br/>gpt-image-2]
GEM[Gemini Provider<br/>Gemini 3.1 Flash Image]
end
end
subgraph APIs["External APIs"]
OAPI[OpenAI API]
GAPI[Google Gemini API]
end
subgraph Storage["Local Storage"]
DL[~/Downloads/images/]
end
CD & CC & GC & CX --> MCP
MCP --> Tools
GI & CI --> PS
PS --> PR
PR --> OAI & GEM
OAI --> OAPI
GEM --> GAPI
OAI & GEM --> DLEnvironment Variables
Variable | Description | Required |
| OpenAI API key | At least one API key |
| Google Gemini API key | At least one API key |
| Alias for | |
| Base directory for saved images | No (default: |
| OS-path-separator list of roots that | No |
| Delete persisted conversational history after this many inactive days; | No (default: |
| Force a default provider | No (default: |
| Default OpenAI image size | No (default: |
| Default Gemini image size | No (default: |
| Opt in to prompt enhancement; adds an assistant-model API call, latency, and cost before generation | No (default: |
| Enable Google Search grounding | No (default: |
| Read-timeout ceiling in seconds for provider calls (covers slow high-quality renders) | No (default: |
| OpenAI client-side rate limits | No (defaults: |
| Gemini client-side rate limits | No (defaults: |
| Log directory override | No |
| Log level (DEBUG, INFO, etc.) | No |
| Log full prompts | No (default: |
|
| No |
| Bind address for HTTP transports | No (default: |
Troubleshooting
"No providers available"
You need at least one API key. Set OPENAI_API_KEY or GEMINI_API_KEY in your MCP client config (see Quick Start above).
Images generate but quality isn't great for portraits/products
You're probably missing GEMINI_API_KEY. The server fell back to OpenAI and showed a warning. Add a Gemini key for better photorealistic results.
Images generate but text looks bad
You're probably missing OPENAI_API_KEY. Add an OpenAI key for better text rendering.
"imagen-mcp: command not found"
Ensure the Python environment used by your MCP client has imagen-mcp
installed from a local checkout or pinned VCS revision and its scripts directory
is on PATH. As a fallback, configure the command as python with args -m,
imagen_mcp.
Where are my images saved?
Default: ~/Downloads/images/openai/ or ~/Downloads/images/gemini/. Check the tool output for the exact path. Set OUTPUT_DIR to change this.
How do I check which providers are active?
Use the list_providers tool, or run:
python3 -c "from imagen_mcp.providers import get_provider_registry; print(get_provider_registry().list_providers())"Development
# Clone and install (runtime + dev tooling)
git clone https://github.com/michaeljabbour/imagen-mcp.git
cd imagen-mcp
pip install -e ".[dev]" # or: uv sync --extra dev
# Install pre-commit hooks (ruff + mypy)
pre-commit install
# Run the full quality gate (same as CI)
ruff format --check imagen_mcp/ src/ tests/
ruff check imagen_mcp/ src/ tests/
mypy imagen_mcp/ src/
pytest --cov=src --cov-fail-under=80
# Verify server loads
python3 -c "from imagen_mcp.server import mcp; print('Server loads')"
python3 -m imagen_mcp
# Run over HTTP instead of stdio
IMAGEN_MCP_TRANSPORT=streamable-http imagen-mcp
# Check Claude Desktop logs (macOS)
tail -f ~/Library/Logs/Claude/mcp-server-imagen.logProject Structure
imagen-mcp/
├── imagen_mcp/ # Canonical package namespace + module runner
├── src/
│ ├── server.py # Implementation + legacy import path
│ ├── config/
│ │ ├── constants.py # Provider constants
│ │ └── settings.py # Environment configuration
│ ├── providers/
│ │ ├── base.py # Abstract provider interface
│ │ ├── openai_provider.py # OpenAI implementation
│ │ ├── gemini_provider.py # Gemini implementation
│ │ ├── selector.py # Auto-selection logic
│ │ └── registry.py # Provider factory
│ └── models/
│ └── input_models.py # Pydantic input models
├── tests/
│ ├── test_selector.py # Provider selection tests
│ ├── test_providers.py # Provider unit tests
│ └── test_server.py # Server integration tests
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI
├── run.sh # Wrapper script for MCP clients
├── requirements.txt
├── CLAUDE.md
└── README.mdRequirements
mcp>=1.26.0,<2
pydantic>=2.12.3
httpx>=0.28.0
google-genai>=2.8.0
pillow>=11.0.0License
Sources
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceEnables AI-powered image analysis using OpenAI's Vision API and image generation with DALL-E models. Supports image description, content analysis, comparison, editing, and creating variations with intelligent caching.Last updated3MIT
- Alicense-qualityDmaintenanceEnables AI image generation through multiple providers including OpenAI GPT-Image-1, Google Imagen 4, Gemini 2.5 Flash (Nano Banana), Flux 1.1, Qwen Image, and SeedDream-4, supporting various formats, sizes, and advanced features like background control and seed-based reproduction.Last updated4610MIT
- Alicense-qualityDmaintenanceProvides multi-provider image generation with automatic fallback across services like Pollinations.ai, Cloudflare, and Hugging Face. It features specialized pixel art generation, cost tracking, and automatic saving of generated visual assets to disk.Last updatedMIT
- Alicense-qualityDmaintenanceEnables conversational image generation, editing, and refinement through OpenAI models with session memory for iterative creative workflows.Last updated1MIT
Related MCP Connectors
AI visual generation agent: multi-pipeline rendering, prompt crafting, and image composition.
Generate logos, social posts, app screenshots, comic panels & visual-novel assets from prompts.
Image, video, audio, face-swap, talking avatars and chat across 300+ AI models, one balance.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/michaeljabbour/imagen-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server