@mnicole-dev/elevenlabs-mcp-server
v1.0.0
Published
MCP server for the ElevenLabs AI voice API — text-to-speech, sound generation, voice management, and more
Maintainers
Readme
@mnicole-dev/elevenlabs-mcp-server
A Model Context Protocol (MCP) server for the ElevenLabs AI voice API. Generate realistic speech, create sound effects, isolate voices, and manage your voice library — all from any MCP-compatible client.
Features
12 tools covering the core ElevenLabs API:
Audio Generation (2 tools)
| Tool | Description |
|------|-------------|
| text-to-speech | Convert text to speech using any voice; saves MP3/PCM to a temp file and returns the path |
| sound-generation | Generate a sound effect from a text description; saves audio to a temp file |
Voice Processing (1 tool)
| Tool | Description |
|------|-------------|
| audio-isolation | Remove background noise/music from an audio file, leaving only the voice |
Voice Management (3 tools)
| Tool | Description |
|------|-------------|
| list-voices | List all available voices (premade + cloned) with IDs, categories, and labels |
| get-voice | Get full details for a voice including settings, samples, and supported models |
| delete-voice | Delete a custom or cloned voice from your account |
Models (1 tool)
| Tool | Description |
|------|-------------|
| list-models | List all AI models with capabilities, supported languages, and cost factors |
Account (2 tools)
| Tool | Description |
|------|-------------|
| get-user | Get user profile, subscription tier, and character usage/limits |
| get-user-subscription | Get detailed subscription fields including billing and feature flags |
History (3 tools)
| Tool | Description |
|------|-------------|
| list-history | List TTS generation history with pagination and voice filter |
| get-history-item | Get details for a specific history item including text, settings, and feedback |
| delete-history-item | Delete a history item |
Requirements
- Node.js 18+
- An ElevenLabs account with an API key
Installation
npm install -g @mnicole-dev/elevenlabs-mcp-serverOr run directly with npx:
npx @mnicole-dev/elevenlabs-mcp-serverConfiguration
Set your API key:
export ELEVENLABS_API_KEY=your-api-key-hereGet your API key from the ElevenLabs API Keys page.
Claude Code
Add to your ~/.claude.json:
{
"mcpServers": {
"elevenlabs": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@mnicole-dev/elevenlabs-mcp-server"],
"env": {
"ELEVENLABS_API_KEY": "your-api-key-here"
}
}
}
}Claude Desktop
Add to your config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"elevenlabs": {
"command": "npx",
"args": ["-y", "@mnicole-dev/elevenlabs-mcp-server"],
"env": {
"ELEVENLABS_API_KEY": "your-api-key-here"
}
}
}
}Cursor / Windsurf / other MCP clients
Use the stdio transport with npx -y @mnicole-dev/elevenlabs-mcp-server as the command and set ELEVENLABS_API_KEY in the environment.
Examples
Generate speech
> Read this text aloud using voice ID "21m00Tcm4TlvDq8ikWAM": "Welcome to the future of voice AI."Calls text-to-speech and returns the path to the generated audio file (e.g. /tmp/elevenlabs-tts-1234567890.mp3).
Customize voice settings
> Generate speech for "Hello, world" with stability 0.8, similarity boost 0.9, and speaker boost enabledCalls text-to-speech with:
{
"voiceId": "21m00Tcm4TlvDq8ikWAM",
"text": "Hello, world",
"stability": 0.8,
"similarityBoost": 0.9,
"speakerBoost": true
}Create a sound effect
> Generate a 5-second thunderstorm sound effect with heavy rainCalls sound-generation with:
{
"text": "thunderstorm with heavy rain",
"durationSeconds": 5,
"promptInfluence": 0.4
}List voices and find an ID
> Show me all my available voicesCalls list-voices — returns voice IDs, names, categories (premade/cloned), labels (accent, gender, age, use case), and preview URLs.
Isolate voice from a podcast
> Remove the background music from this audio: https://example.com/podcast-clip.mp3Calls audio-isolation — downloads the file, sends it to ElevenLabs, and returns the path to the cleaned audio.
Check remaining characters
> How many characters do I have left this month?Calls get-user — shows character count, limit, percentage used, and reset date.
Audio Output
For all tools that generate audio (text-to-speech, sound-generation, audio-isolation), the server:
- Calls the ElevenLabs API
- Writes the binary audio response to a temp file at
/tmp/elevenlabs-{type}-{timestamp}.mp3 - Returns the file path along with metadata (format, size, character count used, etc.)
The file can then be opened, played, or processed by the MCP client or downstream tools.
Supported output formats for TTS:
| Format | Description |
|--------|-------------|
| mp3_44100_128 | MP3, 44.1kHz, 128kbps (default) |
| mp3_44100_192 | MP3, 44.1kHz, 192kbps (higher quality) |
| mp3_44100_64 | MP3, 44.1kHz, 64kbps (smaller files) |
| mp3_22050_32 | MP3, 22.05kHz, 32kbps (smallest) |
| pcm_44100 | PCM, 44.1kHz, 16-bit (uncompressed) |
| pcm_24000 | PCM, 24kHz, 16-bit |
| pcm_22050 | PCM, 22.05kHz, 16-bit |
| pcm_16000 | PCM, 16kHz, 16-bit |
| ulaw_8000 | μ-law, 8kHz (telephony) |
How it works
- The MCP client sends a tool call to the server via stdio
- The server reads
ELEVENLABS_API_KEYfrom the environment - The request is forwarded to
https://api.elevenlabs.iowith thexi-api-keyheader - JSON responses are formatted as readable text; binary audio is saved to
/tmp/and the path is returned
Development
git clone https://github.com/mnicole-dev/elevenlabs-mcp-server.git
cd elevenlabs-mcp-server
pnpm install
pnpm dev # Run with tsx (requires ELEVENLABS_API_KEY)
pnpm build # Build to dist/License
MIT
