imagegen-mcp-server
Version:
MCP server for AI image generation with OpenAI DALL-E, Google Imagen, Gemini, and Flux via Replicate
506 lines (382 loc) ⢠15.3 kB
Markdown
<div align="center">
# šØ ImageGen MCP Server
**A powerful MCP server for AI image generation with OpenAI GPT-Image-1, Google Imagen 4, Flux 1.1, Qwen Image, SeedDream-4, and Nano Banana (Gemini 2.5 Flash Image) support**
<p align="center">
<img src="https://img.shields.io/npm/v/imagegen-mcp-server?style=for-the-badge&logo=npm&color=blue" alt="npm version">
<img src="https://img.shields.io/badge/license-MIT-orange?style=for-the-badge" alt="license">
<img src="https://img.shields.io/badge/6%20Models-GPT--Image--1%20ā¢%20Flux%201.1%20ā¢%20Qwen%20ā¢%20SeedDream-purple?style=for-the-badge" alt="models">
</p>
<p align="center">
<strong>GPT-Image-1 MCP</strong> ⢠<strong>Nano Banana MCP</strong> ⢠<strong>Google Imagen 4 MCP</strong> ⢠<strong>Flux 1.1 MCP</strong>
</p>
<p align="center">
<code>npx imagegen-mcp-server</code>
</p>
<p align="center">
<a href="https://writingmate.ai">
<img src="https://img.shields.io/badge/Powered%20by-WritingMate.ai-purple?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDJMMTMuMDkgOC4yNkwyMCA5TDEzLjA5IDE1Ljc0TDEyIDIyTDEwLjkxIDE1Ljc0TDQgOUwxMC45MSA4LjI2TDEyIDJaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K" alt="Powered by WritingMate.ai">
</a>
</p>
</div>
---
## š¬ Quick Demo
### ā” Instant (WritingMate.ai)
1. Visit [WritingMate.ai](https://writingmate.ai)
2. Say: *"Generate an image of a cyberpunk city using Flux 1.1"*
3. ā
**Done!** - No setup, no API keys needed
### š ļø Self-Setup (Other Clients)
```bash
# Install and run in one command
npx imagegen-mcp-server
```
Then in your MCP client:
> *"Generate an image of a cyberpunk city using Flux 1.1"*
ā
**Result**: High-quality image saved to `outputs/` directory
---
An MCP (Model Context Protocol) server for AI image generation supporting:
- **GPT-Image-1 MCP**: OpenAI's latest image generation model
- **Nano Banana MCP**: Gemini 2.5 Flash Image Preview model
- **Google Imagen 4 MCP**: Advanced photorealistic image generation
- **Flux 1.1 MCP**: State-of-the-art prompt following via Replicate
### šØ Model Comparison
*Same prompt: "A serene mountain landscape with a crystal clear lake reflecting snow-capped peaks, golden hour lighting, highly detailed"*
<table>
<tr>
<td width="50%">
<img src="examples/comparison/flux-1.1-pro.png" alt="Flux 1.1 Pro" width="100%"/>
<p align="center"><strong>Flux 1.1 Pro MCP</strong><br/><em>black-forest-labs/flux-1.1-pro</em></p>
</td>
<td width="50%">
<img src="examples/comparison/qwen-image.png" alt="Qwen Image" width="100%"/>
<p align="center"><strong>Qwen Image MCP</strong><br/><em>qwen/qwen-image</em></p>
</td>
</tr>
<tr>
<td width="50%">
<img src="examples/comparison/seedream-4.png" alt="SeedDream-4" width="100%"/>
<p align="center"><strong>SeedDream-4 MCP</strong><br/><em>bytedance/seedream-4</em></p>
</td>
<td width="50%">
<img src="examples/comparison/nano-banana.png" alt="Nano Banana" width="100%"/>
<p align="center"><strong>Nano Banana MCP</strong><br/><em>Gemini 2.5 Flash Image Preview</em></p>
</td>
</tr>
</table>
## ⨠Features
| Provider | Models | Keywords | Highlights |
|----------|--------|----------|-----------|
| **š¤ OpenAI** | GPT-Image-1, DALL-E 3, DALL-E 2 | `gpt-image-1 mcp`, `openai image gen` | Latest GPT-Image-1 with background control |
| **š§ Nano Banana** | Gemini 2.5 Flash Image Preview | `nano banana mcp` | Fast generation via official Google SDK |
| **šØ Google Imagen** | Imagen 4 (custom endpoint) | `google imagen 4 mcp` | Advanced photorealistic image generation |
| **ā” Replicate** | Flux 1.1 Pro, Qwen Image, SeedDream-4 | `flux 1.1 mcp`, `qwen image mcp`, `seedream-4 mcp` | Multiple cutting-edge models via Replicate |
### šÆ **Core Capabilities**
- **Multiple Output Formats**: PNG, JPEG, WebP support
- **Flexible Sizing**: Custom dimensions and aspect ratios
- **Base64 & File Output**: Return images as base64 or save to disk
- **Seed Support**: Reproducible generation with Flux
- **MCP Compatible**: Works seamlessly with any MCP client
### š **Setup Comparison**
| Client | Setup Required | API Keys | Configuration | Ready Time |
|--------|---------------|----------|---------------|------------|
| **WritingMate.ai** | ā
**None** | ā
**Pre-configured** | ā
**Built-in** | **Instant** |
| Claude Desktop | Manual config | Your own keys | JSON editing | ~5 minutes |
| Claude Code CLI | Command/config | Your own keys | Manual setup | ~5 minutes |
| Other MCP clients | Manual setup | Your own keys | Client-specific | ~5-10 minutes |
## š Quick Start
### Option 1: Install from npm (Recommended)
```bash
# Install globally
npm install -g imagegen-mcp-server
# Or use with npx (no installation required)
npx imagegen-mcp-server
```
### Option 2: Install from source
```bash
# Clone the repository
git clone https://github.com/writingmate/imagegen-mcp.git
cd imagegen-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run the server
npm start
```
## Requirements
- Node.js 18+
- API keys: `OPENAI_API_KEY`, `GOOGLE_API_KEY`, and/or `REPLICATE_API_TOKEN`
## Configuration
Create a `.env` file in your project directory:
```env
# Required: OpenAI API Key for DALL-E models
OPENAI_API_KEY=your-openai-api-key-here
# Required: Google API Key for Imagen and Gemini
GOOGLE_API_KEY=your-google-api-key-here
# Required: Replicate API Token for Flux models
REPLICATE_API_TOKEN=your-replicate-api-token-here
# Optional: Custom Google Imagen endpoint
GOOGLE_IMAGEN_ENDPOINT=
# Optional: Output directory for generated images (default: outputs)
OUTPUT_DIR=outputs
```
## š§ Setup & Configuration
### 1. Get API Keys
You'll need at least one of these API keys:
| Provider | How to Get API Key | Cost |
|----------|-------------------|------|
| **OpenAI** | [Get OpenAI API Key](https://platform.openai.com/api-keys) | ~$0.02-0.08 per image |
| **Google** | [Get Google API Key](https://aistudio.google.com/app/apikey) | Free tier available |
| **Replicate** | [Get Replicate Token](https://replicate.com/account/api-tokens) | ~$0.003-0.01 per image |
### 2. Configure Environment
Create a `.env` file in your project directory:
```env
# Add the API keys for the providers you want to use
OPENAI_API_KEY=your-openai-api-key-here
GOOGLE_API_KEY=your-google-api-key-here
REPLICATE_API_TOKEN=your-replicate-api-token-here
# Optional settings
OUTPUT_DIR=outputs
GOOGLE_IMAGEN_ENDPOINT=
```
### 3. Add to Your MCP Client
Choose your preferred MCP client:
#### š WritingMate.ai (Recommended - Zero Setup!)
**⨠Already installed and configured!** No setup required.
1. Visit [WritingMate.ai](https://writingmate.ai)
2. Start generating images immediately: *"Generate an image of a sunset using Flux"*
3. All providers pre-configured and ready to use
> š” **Why WritingMate.ai?** ImageGen MCP Server comes **pre-installed** with all API keys configured. Just start creating!
#### š„ļø Claude Desktop
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"imagegen": {
"command": "npx",
"args": ["imagegen-mcp-server"]
}
}
}
```
#### āØļø Claude Code CLI
Add to your MCP configuration:
```bash
# Add to Claude Code MCP settings
claude-code config mcp add imagegen npx imagegen-mcp-server
```
Or manually configure in your Claude Code settings file:
```json
{
"mcpServers": {
"imagegen": {
"command": "npx",
"args": ["imagegen-mcp-server"]
}
}
}
```
#### š Codeium CLI (Codex)
Add to your Codeium MCP configuration:
```json
{
"mcp_servers": {
"imagegen": {
"command": "npx",
"args": ["imagegen-mcp-server"],
"env": {}
}
}
}
```
#### š§ Other MCP Clients
For any MCP-compatible client, use:
**Command:** `npx imagegen-mcp-server`
**Environment:** Ensure your `.env` file is in the working directory with your API keys.
### 4. Test the Installation
```bash
# Test if the server starts correctly
npx imagegen-mcp-server
# Or if installed globally
imagegen-mcp-server
```
## Available Tools
### 1. OpenAI GPT-Image-1 MCP (`image.generate.openai`)
Generate images using OpenAI's latest GPT-Image-1 model and DALL-E series. This OpenAI image gen MCP tool supports the newest GPT-Image-1 with advanced background control.
**Parameters:**
```typescript
{
prompt: string; // Required: Image description
model?: string; // "dall-e-2", "dall-e-3", "gpt-image-1" (default)
size?: string; // "1024x1024", "1792x1024", "1024x1792", etc.
width?: number; // Alternative to size
height?: number; // Alternative to size
quality?: "standard" | "hd" | "low" | "medium" | "high" | "auto";
format?: "png" | "jpeg" | "jpg" | "webp";
background?: "transparent" | "opaque" | "auto"; // gpt-image-1 only
style?: "vivid" | "natural"; // DALL-E 3 only
returnBase64?: boolean; // Include base64 in response
filenameHint?: string; // Custom filename prefix
}
```
**Model-specific features:**
- **DALL-E 2**: Basic generation, sizes: 256Ć256, 512Ć512, 1024Ć1024
- **DALL-E 3**: High-quality generation, sizes: 1024Ć1024, 1792Ć1024, 1024Ć1792
- **GPT-Image-1**: Latest model with background control, multiple formats, flexible sizing
### 2. Google Imagen 4 MCP (`image.generate.google`)
Generate images using Google's advanced Imagen 4 model via custom endpoint. This Google Imagen 4 MCP integration provides cutting-edge photorealistic image generation.
**Parameters:**
```typescript
{
prompt: string; // Required: Image description
model?: string; // Model name
size?: string; // Image dimensions
quality?: string; // Quality setting
format?: "png" | "jpeg" | "jpg" | "webp";
returnBase64?: boolean;
filenameHint?: string;
}
```
**Requirements:**
- Set `GOOGLE_IMAGEN_ENDPOINT` in your `.env` file
- Endpoint should accept POST requests with JSON payload
- Response format: `{ image: { base64: string, mimeType?: string } }`
### 3. Nano Banana MCP (`image.generate.gemini`)
Generate images using Google's Gemini 2.5 Flash Image Preview model (also known as "Nano Banana MCP"). This nano banana implementation provides fast, efficient image generation via Google's official SDK.
**Parameters:**
```typescript
{
prompt: string; // Required: Image description
model?: string; // Default: "gemini-2.5-flash-image-preview"
returnBase64?: boolean;
filenameHint?: string;
}
```
### 4. Replicate Models MCP (`image.generate.replicate`)
Generate images using multiple cutting-edge models via Replicate API:
- **Flux 1.1 MCP**: `black-forest-labs/flux-1.1-pro` (default) - State-of-the-art prompt following
- **Qwen Image MCP**: `qwen/qwen-image` - Advanced AI image generation
- **SeedDream-4 MCP**: `bytedance/seedream-4` - High-quality diffusion model
**Parameters:**
```typescript
{
prompt: string; // Required: Image description
model?: string; // Default: "black-forest-labs/flux-1.1-pro"
width?: number; // Image width (default: 1024)
height?: number; // Image height (default: 1024)
size?: string; // Alternative format: "1024x1024"
format?: "png" | "jpeg" | "jpg" | "webp";
seed?: number; // Reproducible generation
returnBase64?: boolean;
filenameHint?: string;
}
```
**Flux Model Features:**
- **Flux 1.1 Pro**: State-of-the-art image quality and prompt following
- **High Resolution**: Supports various aspect ratios and sizes
- **Fast Generation**: Optimized for speed and quality
- **Seed Support**: Reproducible image generation
## Examples
### Generate with OpenAI GPT-Image-1
```javascript
const result = await mcpClient.callTool("image.generate.openai", {
prompt: "A serene mountain landscape at sunset",
model: "gpt-image-1",
size: "1536x1024",
format: "webp",
background: "transparent",
quality: "high"
});
```
### Generate with Google Gemini
```javascript
const result = await mcpClient.callTool("image.generate.gemini", {
prompt: "A futuristic city with flying cars",
returnBase64: true
});
```
### Generate with Flux 1.1
```javascript
const result = await mcpClient.callTool("image.generate.replicate", {
prompt: "A detailed portrait of a robot in a cyberpunk setting",
model: "black-forest-labs/flux-1.1-pro", // Default model
width: 1024,
height: 1536,
seed: 12345,
format: "png"
});
```
### Generate with Qwen Image
```javascript
const result = await mcpClient.callTool("image.generate.replicate", {
prompt: "A traditional Chinese landscape painting with mountains and rivers",
model: "qwen/qwen-image",
width: 1024,
height: 1024
});
```
### Generate with SeedDream-4
```javascript
const result = await mcpClient.callTool("image.generate.replicate", {
prompt: "A vibrant abstract art piece with flowing colors",
model: "bytedance/seedream-4",
width: 1024,
height: 1024 // Minimum 1024x1024 required
});
```
## Output Format
All tools return a consistent response format:
```typescript
{
content: [
{
type: "text",
text: "provider=openai model=gpt-image-1 saved=/path/to/image.png"
},
{
type: "image", // Only if returnBase64: true
data: "base64data",
mimeType: "image/png"
}
]
}
```
Generated images are automatically saved to the configured output directory with timestamped filenames.
## Publishing to npm
The package is ready for npm publishing:
```bash
# Update version
npm version patch|minor|major
# Publish
npm publish
```
## API Keys Setup
### OpenAI API Key
1. Visit [OpenAI API Keys](https://platform.openai.com/api-keys)
2. Create a new API key
3. Add to `.env` as `OPENAI_API_KEY`
### Google API Key
1. Visit [Google AI Studio](https://makersuite.google.com/app/apikey)
2. Create API key and enable required APIs
3. Add to `.env` as `GOOGLE_API_KEY`
### Replicate API Token
1. Visit [Replicate](https://replicate.com)
2. Sign up and go to your account settings
3. Create an API token
4. Add to `.env` as `REPLICATE_API_TOKEN`
## Development
```bash
npm install # Install dependencies
npm run dev # Development with hot reload
npm run build # Build for production
npm start # Start production server
```
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
<div align="center">
### š” Brought to you by
**[WritingMate.ai](https://writingmate.ai)** - All-in-One AI Platform
*The team behind WritingMate.ai brings you powerful AI tools and integrations*
[](https://writingmate.ai)
</div>