Skip to main content
Glama
README.md
# ElevenLabs MCP Server

MCP server that brings ElevenLabs to Claude Code — text-to-speech, sound effects, music generation, voice cloning, speech-to-speech, transcription, and voice isolation. 8 tools for industry-leading AI audio. Supports Multilingual v2, v3, Turbo, Flash, and Scribe models.

## Quick Start

### Step 1: Get Your API Key

1. Go to [elevenlabs.io](https://elevenlabs.io)
2. Create an account or sign in
3. Click your profile icon → **API Keys**
4. Generate and copy the key (you'll need it in Step 3)

### Step 2: Install Prerequisites

- **Node.js 18+** - [Download here](https://nodejs.org/)
- **Claude Code CLI** - [Installation guide](https://docs.anthropic.com/claude-code)

### Step 3: Install the MCP Server

#### 3.1 Clone the repository

```text
git clone https://github.com/wynandw87/claude-code-elevenlabs-mcp.git
cd claude-code-elevenlabs-mcp
```

#### 3.2 Install dependencies

**macOS / Linux / Windows:**
```text
npm install
```

> **Note:** Dependencies are installed and the server is built automatically in one step.

#### 3.3 Register with Claude Code

Choose your install scope:

| Scope | Flag | Who can use it |
|-------|------|----------------|
| **User** (recommended) | `-s user` | You, in any project |
| **Project** | `-s project` | Anyone who clones this repo |
| **Local** | `-s local` | Only in current directory |

Replace `YOUR_API_KEY` with your actual ElevenLabs API key, and use the full path to `dist/index.js`.

> **Tip:** To get the full path, run this from the cloned directory:
> - macOS/Linux: `echo "$(pwd)/dist/index.js"`
> - Windows: `echo %cd%\dist\index.js`

**macOS / Linux:**
```text
claude mcp add -s user ElevenLabs -e ELEVENLABS_API_KEY=YOUR_API_KEY -- node /full/path/to/dist/index.js
```

**Windows (CMD):**
```text
claude mcp add -s user ElevenLabs -e "ELEVENLABS_API_KEY=YOUR_API_KEY" -- node "C:\full\path\to\dist\index.js"
```

**Windows (PowerShell):**
```text
claude mcp add -s user ElevenLabs -e "ELEVENLABS_API_KEY=YOUR_API_KEY" '--' node "C:\full\path\to\dist\index.js"
```

#### Alternative: Use Setup Scripts

The setup scripts handle dependency installation, building, and registration automatically.

**macOS / Linux:**
```text
chmod +x setup.sh
./setup.sh YOUR_API_KEY
```

**Windows (PowerShell):**
```text
.\setup.ps1 -ApiKey YOUR_API_KEY
```

**Or use the npm helper (if API key is set in environment):**
```text
export ELEVENLABS_API_KEY=YOUR_API_KEY
npm run install:claude
```

### Step 4: Restart Claude Code

Close and reopen Claude Code for the changes to take effect.

### Step 5: Verify Installation

```text
claude mcp list
```

You should see `ElevenLabs` listed with a Connected status.

---

## Features

### Speech Generation
- **Text-to-Speech** (`text_to_speech`) - Convert text to natural speech with voice/emotion controls and 29+ languages
- **Speech-to-Speech** (`speech_to_speech`) - Transform audio to use a different voice while preserving emotion and cadence

### Sound & Music
- **Sound Effects** (`sound_effects`) - Generate sound effects from text descriptions
- **Music Generation** (`generate_music`) - Generate studio-grade music from text descriptions

### Voice Management
- **List Voices** (`list_voices`) - Browse and search available voices with filtering
- **Clone Voice** (`clone_voice`) - Create instant voice clones from audio samples

### Audio Processing
- **Transcription** (`transcribe`) - Speech-to-text with speaker diarization (90+ languages)
- **Voice Isolation** (`voice_isolation`) - Isolate vocals from background noise

---

## Usage

Once installed, use trigger phrases to invoke ElevenLabs:

| Trigger | Tool | Example |
|---------|------|---------|
| `elevenlabs tts`, `elevenlabs speak` | Text-to-Speech | "elevenlabs speak: Hello, welcome to the demo" |
| `elevenlabs sfx`, `elevenlabs sound effect` | Sound Effects | "elevenlabs sfx: thunder rumbling in the distance" |
| `elevenlabs music`, `elevenlabs compose` | Generate Music | "elevenlabs music: lo-fi hip hop with soft piano" |
| `elevenlabs voices`, `elevenlabs list voices` | List Voices | "elevenlabs list voices matching female" |
| `elevenlabs clone`, `elevenlabs clone voice` | Clone Voice | "elevenlabs clone voice from recording.wav" |
| `elevenlabs voice change`, `elevenlabs sts` | Speech-to-Speech | "elevenlabs voice change audio.mp3 to Adam" |
| `elevenlabs transcribe`, `elevenlabs stt` | Transcribe | "elevenlabs transcribe meeting.mp3" |
| `elevenlabs isolate`, `elevenlabs clean audio` | Voice Isolation | "elevenlabs isolate vocals from noisy-recording.mp3" |

Or ask naturally:

- *"Use ElevenLabs to convert this text to speech with the Rachel voice"*
- *"Generate a sound effect of a spaceship engine starting up"*
- *"Create some lo-fi background music with ElevenLabs"*
- *"Show me the available ElevenLabs voices"*
- *"Clone a voice from my recording.wav file"*
- *"ElevenLabs transcribe this audio file"*
- *"Clean up the background noise in this recording with ElevenLabs"*

---

## Tool Reference

### text_to_speech

Convert text to natural speech. ElevenLabs' flagship feature with industry-leading quality.

**Parameters:**
- `text` (string, required) - The text to convert to speech
- `voice` (string, optional) - Voice name (e.g., "Rachel", "Adam") or voice ID (default: `Rachel`)
- `model` (string, optional) - TTS model (default: `eleven_multilingual_v2`)
- `stability` (number, optional) - Voice stability 0.0-1.0 (lower = more expressive)
- `similarity_boost` (number, optional) - Voice clarity 0.0-1.0 (higher = closer to original)
- `style` (number, optional) - Style exaggeration 0.0-1.0
- `speed` (number, optional) - Speech speed 0.25-4.0 (default: 1.0)
- `output_format` (string, optional) - Audio format (default: `mp3_44100_128`)
- `save_path` (string, optional) - File path to save the audio

### sound_effects

Generate sound effects from text descriptions.

**Parameters:**
- `text` (string, required) - Description of the sound effect (e.g., "wooden door creaking open slowly")
- `duration_seconds` (number, optional) - Duration 0.5-30 seconds (auto-determined if omitted)
- `prompt_influence` (number, optional) - How closely to follow the prompt 0.0-1.0 (default: 0.3)
- `save_path` (string, optional) - File path to save the audio

### generate_music

Generate studio-grade music from text descriptions.

**Parameters:**
- `text` (string, required) - Description of the music (e.g., "epic orchestral score for a movie trailer")
- `duration_seconds` (number, optional) - Duration 0.5-30 seconds (auto-determined if omitted)
- `save_path` (string, optional) - File path to save the audio

### list_voices

Browse and search available ElevenLabs voices.

**Parameters:**
- `search` (string, optional) - Search query to filter voices by name, description, or labels
- `category` (string, optional) - `"premade"`, `"cloned"`, `"generated"`, `"professional"`
- `page_size` (integer, optional) - Number of voices to return (default: 20, max: 100)

### clone_voice

Create an instant voice clone from audio samples. Requires 1-2 minutes of clear audio.

**Parameters:**
- `name` (string, required) - Name for the cloned voice
- `files` (string[], required) - Array of absolute paths to audio files
- `description` (string, optional) - Description of the voice
- `remove_background_noise` (boolean, optional) - Apply audio isolation to samples before cloning

### speech_to_speech

Transform audio to use a different voice while preserving emotion and cadence.

**Parameters:**
- `audio_path` (string, required) - Absolute path to the source audio file
- `voice` (string, required) - Target voice name or ID
- `model` (string, optional) - STS model (default: `eleven_english_sts_v2`)
- `stability` (number, optional) - Voice stability 0.0-1.0
- `similarity_boost` (number, optional) - Voice clarity 0.0-1.0
- `remove_background_noise` (boolean, optional) - Remove background noise from source
- `save_path` (string, optional) - File path to save the audio

### transcribe

Transcribe audio to text with optional speaker diarization. Supports 90+ languages.

**Parameters:**
- `audio_path` (string, required) - Absolute path to the audio file
- `model` (string, optional) - `"scribe_v2"` (default, 90+ languages), `"scribe_v1"`
- `language_code` (string, optional) - ISO 639-1 language code (e.g., "en", "es", "fr")
- `diarize` (boolean, optional) - Identify which speaker is talking
- `num_speakers` (integer, optional) - Expected number of speakers (up to 32)

### voice_isolation

Isolate vocals from background noise in audio files.

**Parameters:**
- `audio_path` (string, required) - Absolute path to the audio file to process
- `save_path` (string, optional) - File path to save the isolated audio

---

## Supported Models

### Text-to-Speech Models
| Model | Languages | Latency | Best For |
|-------|-----------|---------|----------|
| `eleven_multilingual_v2` | 29 | Balanced | Default — general use, voiceovers |
| `eleven_v3` | 70+ | ~500ms | Latest quality, dramatic delivery |
| `eleven_turbo_v2_5` | 32 | ~250ms | Fast, balanced quality |
| `eleven_flash_v2_5` | 32 | ~75ms | Ultra-fast, real-time apps |

### Speech-to-Speech Models
| Model | Best For |
|-------|----------|
| `eleven_english_sts_v2` | Default — English voice conversion |

### Transcription Models
| Model | Languages | Best For |
|-------|-----------|----------|
| `scribe_v2` | 90+ | Default — high accuracy with diarization |
| `scribe_v1` | Multiple | Previous generation |

### Sound Effects / Music Models
| Model | Best For |
|-------|----------|
| `eleven_text_to_sound_v2` | Sound effect generation |
| `eleven_music` | Music generation |

---

## Configuration

### Environment Variables

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `ELEVENLABS_API_KEY` | Yes | — | ElevenLabs API key |
| `ELEVENLABS_DEFAULT_VOICE` | No | `Rachel` | Default voice name for TTS |
| `ELEVENLABS_TIMEOUT` | No | `120000` | API timeout in ms |
| `ELEVENLABS_OUTPUT_DIR` | No | `./generated-media` | Directory for auto-saved audio |

---

## How It Works

This MCP server uses the official `@elevenlabs/elevenlabs-js` SDK to communicate with ElevenLabs models. It connects to Claude Code via stdio transport.

**Voice name resolution:** You can use voice names (e.g., "Rachel", "Adam") instead of voice IDs. The server resolves names automatically via a cached voice lookup.

**Tools provided:**
| Tool | API Endpoint | Default Model |
|------|-------------|---------------|
| `text_to_speech` | Text-to-Speech | `eleven_multilingual_v2` |
| `sound_effects` | Text-to-Sound-Effects | `eleven_text_to_sound_v2` |
| `generate_music` | Text-to-Sound-Effects | `eleven_music` |
| `list_voices` | Voices Search | — |
| `clone_voice` | Instant Voice Cloning | — |
| `speech_to_speech` | Speech-to-Speech | `eleven_english_sts_v2` |
| `transcribe` | Speech-to-Text | `scribe_v2` |
| `voice_isolation` | Audio Isolation | — |

---

## Troubleshooting

### Fix API Key

If you entered the wrong API key, remove and reinstall:

```text
claude mcp remove ElevenLabs
```

Then reinstall using the command from Step 3.3 above (use the same scope you originally installed with).

### MCP Server Not Showing Up

Check if the server is installed:

```text
claude mcp list
```

If not listed, follow Step 3 to install it.

### Server Won't Start

1. **Verify your API key** is valid at [elevenlabs.io](https://elevenlabs.io) → Profile → API Keys

2. **Check Node.js version** (needs 18+):
   ```text
   node --version
   ```

3. **Ensure the server was built** — if `dist/index.js` is missing, run `npm install` again

### Connection Errors

1. **Check that `dist/index.js` exists** — if not, run `npm install`
2. **Verify the path is absolute** in your `claude mcp add` command
3. **Restart Claude Code** after any configuration changes

### Timeout Errors

- Audio generation can be slower than text — the default timeout is 120 seconds
- Increase `ELEVENLABS_TIMEOUT` environment variable for slow connections

### View Current Configuration

```text
claude mcp list
```

---

## Contributing

Pull requests welcome! Please keep it simple and beginner-friendly.

## License

MIT

---

Made for the Claude Code community

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a unique and clearly distinct purpose: voice cloning, music generation, voice listing, sound effects, speech-to-speech, text-to-speech, transcription, and voice isolation. No two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., clone_voice, generate_music, text_to_speech). Even 'transcribe' is a verb and fits the pattern. No mixing of conventions.

Tool Count5/5

With 8 tools, the set is well-scoped for an audio AI server. Each tool serves a distinct audio processing task without being overloaded or insufficient.

Completeness5/5

The tool set covers major audio workflows: generation (music, sound effects), conversion (TTS, speech-to-speech, clone), transcription, listing, and isolation. There are no obvious gaps for common use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues