Skip to main content
Glama
ddunford

ElevenLabs Image Generation MCP Server

by ddunford
README.md
# ElevenLabs Image Generation MCP Server

An MCP (Model Context Protocol) server that generates images using ElevenLabs' Image & Video feature via Playwright browser automation.

## Features

- **generate_image** - Generate images from text prompts using ElevenLabs
- **list_models** - List available image generation models
- **get_session_status** - Check authentication status

## Available Models

| Model ID | Name | Description |
|----------|------|-------------|
| `gpt-image-1.5` | GPT Image 1.5 (default) | OpenAI - precise, high-quality generation |
| `gpt-image-1` | GPT Image 1 | OpenAI - text-based creation and editing |
| `flux-kontext-pro` | Flux 1 Kontext Pro | Professional style control via reference images |
| `seedream-4` | Seedream 4 | Multi-shot sequences with stable physics |
| `nano-banana` | Nano Banana (Google) | High-speed iterations |
| `wan-2.5` | Wan 2.5 | Strong prompt fidelity |

## Installation

```bash
# Clone the repository
git clone git@github.com:ddunford/elevenlabMCP.git
cd elevenlabMCP

# Install dependencies
npm install

# Build
npm run build

# Install Playwright browser
npx playwright install chromium
```

## Quick Setup (One-Liner)

Add to Claude Code globally:

```bash
claude mcp add elevenlabs-image -s user -- node /path/to/elevenlabMCP/dist/index.js
```

Or manually add to `~/.claude.json`:

```json
{
  "mcpServers": {
    "elevenlabs-image": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/elevenlabMCP/dist/index.js"],
      "env": {}
    }
  }
}
```

## Usage

### In Claude Code

After adding the MCP server, restart Claude Code. The tools will be available as:

- `mcp__elevenlabs-image__generate_image`
- `mcp__elevenlabs-image__list_models`
- `mcp__elevenlabs-image__get_session_status`

### generate_image

Generate an image from a text prompt.

**Parameters:**
| Parameter | Required | Description |
|-----------|----------|-------------|
| `prompt` | Yes | Text description of the image to generate |
| `model` | No | Model ID (default: `gpt-image-1.5`) |
| `savePath` | No | Directory to save image (default: `assets/`) |
| `aspectRatio` | No | e.g., "1:1", "16:9", "9:16" |
| `negativePrompt` | No | What to avoid in the image |
| `email` | No | ElevenLabs account email (for first-time auth) |
| `password` | No | ElevenLabs account password (for first-time auth) |

**Example:**
```
Generate an image of a cyberpunk city at night with neon lights
```

### list_models

Returns all available image generation models with their capabilities.

### get_session_status

Check if currently logged in to ElevenLabs.

## Authentication

On first use, provide your ElevenLabs credentials via the `email` and `password` parameters. The session is persisted in `.auth/` so subsequent calls don't require credentials.

## How It Works

1. Uses Playwright to automate the ElevenLabs web interface (no API available for image generation)
2. Maintains a persistent browser session for authentication
3. Navigates to the Image & Video page
4. Enters prompts and generates images
5. Downloads generated images from the History page

## Project Structure

```
elevenlabMCP/
├── src/
│   ├── index.ts              # Entry point
│   ├── server.ts             # MCP server setup
│   ├── tools/                # MCP tool implementations
│   ├── browser/              # Playwright automation
│   ├── auth/                 # Authentication handling
│   └── config/               # Configuration
├── dist/                     # Compiled JavaScript
├── assets/                   # Generated images output
└── .auth/                    # Session storage (gitignored)
```

## Environment Variables (Optional)

Create a `.env` file:

```env
ELEVENLABS_EMAIL=your@email.com
ELEVENLABS_PASSWORD=yourpassword
HEADLESS=true  # Set to false for debugging
```

## Notes

- Image generation typically takes 30-60 seconds
- Generated images are saved as WebP files
- The browser runs headless by default; set `HEADLESS=false` to see the browser

## License

MIT

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: generating images, checking session status, and listing models. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case: generate_image, get_session_status, list_models.

Tool Count5/5

Three tools is appropriate for a focused image generation server, covering essential actions without being too sparse or bloated.

Completeness4/5

The set covers the core image generation workflow (list models, check session, generate) but lacks tools for managing or retrieving past generations, leaving minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues