Skip to main content
Glama
elevenlabs-voice-mcp

elevenlabs-voice-mcp

elevenlabs-voice-mcp

A tiny Model Context Protocol server that gives Claude a voice through the ElevenLabs text-to-speech API.

It exposes two tools over stdio so any MCP client (Claude Code, Claude Desktop) can speak its responses out loud or discover voices — operated in plain English:

Tool

What it does

list_voices

List the voices available on your ElevenLabs account (id + name + labels).

text_to_speech

Turn text into an MP3 with a chosen voice/model, save it, and play it.

Multilingual by default (eleven_multilingual_v2), so Polish reads correctly too.

Why

I build agentic systems with Claude and MCP. This wires ElevenLabs into that world as a first-class tool: instead of a one-off API script, Claude itself can decide to speak, pick a voice, and read something back — the same MCP pattern I use elsewhere, pointed at ElevenLabs' audio models.

Related MCP server: ElevenLabs MCP Server

Setup

npm install
npm run build              # or: npm run dev   (runs from source via tsx)
export ELEVENLABS_API_KEY=sk_...   # free key: elevenlabs.io → Profile → API Keys
npm start

Use it from Claude Code

claude mcp add elevenlabs-voice -- node /absolute/path/to/dist/index.js
# (set ELEVENLABS_API_KEY in your environment first)

Or add it to your Claude Desktop config:

{
  "mcpServers": {
    "elevenlabs-voice": {
      "command": "node",
      "args": ["/absolute/path/to/elevenlabs-voice-mcp/dist/index.js"],
      "env": { "ELEVENLABS_API_KEY": "sk_..." }
    }
  }
}

Then just ask Claude: "list the ElevenLabs voices" or "say 'cześć, świecie' out loud."

Notes

  • A free ElevenLabs account includes enough monthly characters to try this out.

  • Playback uses the OS default (afplay on macOS, aplay on Linux, PowerShell on Windows); generation still works headless if no player is present.

  • Override the default voice/model with ELEVENLABS_VOICE_ID / ELEVENLABS_MODEL_ID, or per call via the tool arguments.

License

MIT

Available Tools

2 tools
list_voicesA

List the ElevenLabs voices available on the configured account (id + name + labels).

Inputs: no named parameters.

text_to_speechB

Convert text to speech with ElevenLabs, save it as an MP3, and (optionally) play it.

Inputs: text (required), play, model_id, voice_id, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 2 tools

    Disambiguation5/5

    The two tools have completely distinct purposes: one lists available voices, the other converts text to speech. There is no overlap or ambiguity in their functions.

    Naming Consistency4/5

    Both tools use snake_case, but the pattern differs: 'list_voices' is a clear verb_noun construction, while 'text_to_speech' is a noun phrase describing the action. This is a minor inconsistency, but both names are intuitive and readable.

    Tool Count3/5

    With only two tools, the server feels minimal. While both tools are essential for the primary TTS workflow, the scope is narrow and might be insufficient for users expecting voice management capabilities.

    Completeness4/5

    The core workflow of listing voices and generating speech is covered. However, missing operations like fetching individual voice details or managing voices create minor gaps that agents could work around by using the list result.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers