ElevenLabs MCP
Offizieller MCP-Server von ElevenLabs — gibt Claude Code/Desktop Zugriff auf die komplette ElevenLabs-Plattform (TTS, Voice Cloning, Conversational AI Agents, Audio-Verarbeitung).
Zweck
Mit diesem MCP koennen wir aus Claude Code heraus:
- TTS — Text als MP3 generieren mit jeder Voice (Multilingual v2 / Flash etc.)
- Voice-Auswahl + Vorhoeren — Stimmen-Bibliothek durchsuchen, Sample anhoeren
- Voice Cloning — von Audio-Sample oder Text-Beschreibung
- Conversational AI Agents — anlegen, konfigurieren, Tools/Functions definieren
- Audio-Transcription — STT auf Audio-Files
- Sound Effects — generieren
Das macht ElevenLabs steuerbar wie Papierkram oder M365 — ohne ins Web-Dashboard wechseln zu muessen.
Setup
Voraussetzungen
uv/uvxinstalliert (/Users/marvinkuehlmann/.local/bin/uvx)- ElevenLabs-API-Key in
.env.local(Vault-Root)
Registrierung in Claude Code (user-scoped)
claude mcp add-json -s user elevenlabs '{
"command": "/Users/marvinkuehlmann/.local/bin/uvx",
"args": ["elevenlabs-mcp"],
"env": {"ELEVENLABS_API_KEY": "<KEY aus .env.local>"}
}'Verifikation: claude mcp list | grep elevenlabs → ✓ Connected
Aktivierung
Nach add-json muss Claude Code neu gestartet werden damit die Tools in der Session verfuegbar werden — neuer MCP wird nur beim Session-Start angemeldet.
Wichtige Tools (nach Restart sichtbar)
| Tool | Zweck |
|---|---|
text_to_speech | Text → MP3 (Voice-ID waehlbar) |
list_voices | alle verfuegbaren Stimmen |
voice_design | neue Stimme aus Text-Beschreibung |
clone_voice | aus Audio-Sample neue Voice ID |
transcribe_audio | STT |
create_agent | Conversational-AI-Agent anlegen |
list_agents | bestehende Agents |
update_agent | Prompt/Voice/Tools eines Agents aendern |
agent_call / phone tools | Outbound-Test-Calls und Twilio-Setup |
(Liste nicht vollstaendig — nach Restart mcp__elevenlabs__* greppen.)
Use-Cases die uns vermutlich am haeufigsten begegnen
- Voice-Auswahl fuer Kundenprojekt —
search_voice_librarymit “german conversational” / “german customer care”, Preview-MP3 vorhoeren, eine ID festlegen. - DE-Voice-Bot fuer Kunden-Demo (Restaurant/Praxis/Service) — fertiges Pattern: elevenlabs-convai-de-voice-agent. Erste Anwendung 2026-05-09 bei Aylem (telefon-assistent-aws) — Convai-Widget komplett client-side, Tools per Webhook.
- Demo-Audio fuer Pitches — TTS generieren, in Praesentationen einbauen.
- YouTube/Vlog-Voiceover —
text_to_speechmit Voice nach Wahl, MP3 nachassets/.
Quirks / Stolperer
MCP-Setup:
claude mcp addmit-e KEY=VALFlag wurde im positional-Parsing falsch interpretiert (das Argument nach-ewurde fortgesetzt verzehrt). Workaround:add-jsonnutzen mit JSON-Config — eindeutig und stabil.uvx-Pfad muss absolut sein (/Users/marvinkuehlmann/.local/bin/uvx), sonst “spawn ENOENT” wenn Claude Code aus Kontext ohne PATH gestartet wird.- ElevenLabs-Keys haben kein Verfallsdatum — rotieren wenn sie in Chats/Logs sichtbar waren.
Tool-Aufrufe (gelernt 2026-05-09 beim Aylem-POC):
mcp__elevenlabs__text_to_speech:voice_idUNDvoice_nameduerfen nicht beide gleichzeitig gesetzt sein — eines reicht, sonst Fehler.mcp__elevenlabs__create_agenthat kein Tools-Argument im Schema — Tools werden separat via REST-API als eigene Resourcen erstellt (POST /v1/convai/tools) und am Agent uebertool_idsreferenziert (PATCH /v1/convai/agents/{id}). Pattern dafuer: elevenlabs-convai-de-voice-agent.- Convai-Tools-Schema verlangt
descriptionauf JEDEM property imrequest_body_schema— auch inarray.items. Sonst 422 mit „Must set one of: description, dynamic_variable, is_system_provided, or constant_value”.
Free-Tier-Limits:
- Shared-library-voices kann der Free-Tier-Account NICHT via
text_to_speech-API generieren (paid_plan_required) — auch wenn die Voice pervoices/addin die eigene Library kopiert wurde. - Conversational-AI rendert die Voice trotzdem ohne Subscription, weil sie im Render-Loop direkt benutzt wird, nicht ueber die TTS-API.
- Workaround fuer Voice-Sample-Vorhoeren ohne Subscription: Preview-MP3 direkt aus dem Public-Bucket downloaden — die URL steht in
search_voice_library-Output unterPreview URL.
REST-API:
- Auth-Header heisst
xi-api-key(nichtAuthorization: Bearer ...). ?voice_id=Filter im/v1/shared-voicesEndpoint wird ignoriert. Workaround: per?search=<name>&language=defiltern und lokal nachvoice_idsuchen.voices/addgibt die SELBEvoice_idzurueck wie sie in der shared library war — nicht eine neue ID erwarten.
Regeln
- API-Key nie in Code, nie in Repo. Liegt in
.env.localund in der Claude-Code-User-Config (~/.claude.json, vom System verwaltet) - Free-Tier Limit (10k Credits/Monat) im Auge behalten — wenn wir produktiv hosten, Subscription
- Bei Conversational-AI-Agents: Tool-Webhook-URL muss oeffentlich erreichbar sein — fuer lokales Dev ngrok oder Cloudflare Tunnel, fuer Produktion eigene Domain (z.B. via web-properties / AWS)
Related
- “_index” — MCP-Inventar
- ”telefon-assistent-aws” — Aylem-Voice-Bot, primaerer Use-Case fuer ElevenLabs Agents
- ”llm-hosting-eu-optionen” — Hosting-Trade-offs (ElevenLabs ist nicht EU-only, Datenpfad pruefen bei Kundenprojekten)
- Offizielles Repo: https://github.com/elevenlabs/elevenlabs-mcp
- Agents-Doku: https://elevenlabs.io/docs/agents-platform