Official ElevenLabs Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech and audio processing APIs.
10K+
27 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
Official ElevenLabs Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech and audio processing APIs.
| Attribute | Details |
|---|---|
| Docker Image | mcp/elevenlabs |
| Author | elevenlabs |
| Repository | https://github.com/elevenlabs/elevenlabs-mcp |
| Attribute | Details |
|---|---|
| Dockerfile | https://github.com/elevenlabs/elevenlabs-mcp/blob/afc22357432db9e8b33991a83d41906001f6d759/Dockerfile |
| Commit | afc22357432db9e8b33991a83d41906001f6d759 |
| Docker Image built by | Docker Inc. |
| Docker Scout Health Score | |
| Verify Signature | COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/elevenlabs --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub |
| Licence | MIT License |
| Tools provided by this Server | Short Description |
|---|---|
add_knowledge_base_to_agent | Add a knowledge base to ElevenLabs workspace. |
check_subscription | Check the current subscription status. |
compose_music | Convert a prompt to music and save the output audio file to a given directory. |
create_agent | Create a conversational AI agent with custom configuration. |
create_composition_plan | Create a composition plan for music generation. |
create_voice_from_preview | Add a generated voice to the voice library. |
get_agent | Get details about a specific conversational AI agent |
get_conversation | Gets conversation with transcript. |
get_voice | Get details of a specific voice |
isolate_audio | Isolate audio from a file. |
list_agents | List all available conversational AI agents |
list_conversations | Lists agent conversations. |
list_models | List all available models |
list_phone_numbers | List all phone numbers associated with the ElevenLabs account |
make_outbound_call | Make an outbound call using an ElevenLabs agent. |
play_audio | Play an audio file. |
search_voice_library | Search for a voice across the entire ElevenLabs voice library. |
search_voices | Search for existing voices, a voice that has already been added to the user's ElevenLabs voice library. |
simulate_conversation | Simulate a text conversation between a conversational AI agent and a simulated user. |
speech_to_speech | Transform audio from one voice to another using provided audio files. |
speech_to_text | Transcribe speech from an audio file. |
text_to_sound_effects | Convert text description of a sound effect to sound effect with a given duration. |
text_to_speech | Convert text to speech with a given voice. |
text_to_voice | Create voice previews from a text prompt. |
upload_music_for_inpainting | Upload an existing audio file to ElevenLabs so it can be referenced in music_v2 inpainting workflows. |
video_to_music | Generate background music for one or more video files. |
voice_clone | Create an instant voice clone of a voice using provided audio files. |
add_knowledge_base_to_agentAdd a knowledge base to ElevenLabs workspace. Allowed types are epub, pdf, docx, txt, html.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
agent_id | string | ID of the agent to add the knowledge base to. |
knowledge_base_name | string | Name of the knowledge base. |
input_file_path | stringoptional | Path to the file to add to the knowledge base. |
text | stringoptional | Text to add to the knowledge base. |
url | stringoptional | URL of the knowledge base. |
This tool interacts with external entities.
check_subscriptionCheck the current subscription status. Could be used to measure the usage of the API.
compose_musicConvert a prompt to music and save the output audio file to a given directory. Directory is optional, if not provided, the output file will be saved to $HOME/Desktop. Saves output file to directory (default: $HOME/Desktop).
Two models are supported:
- music_v2 (default): latest model. Composition plans use a `chunks` array where each chunk is either a `GenerationChunk` (text, duration_ms, positive_styles, negative_styles, context_adherence, optional conditioning_ref + condition_strength) or an `AudioRefChunk` ({song_id, range: {start_ms, end_ms}}) for inpainting. Inpainting also requires the source song to have been stored — call this tool with store_for_inpainting=True or use upload_music_for_inpainting first to get a song_id.
- music_v1: legacy model. Composition plans use positive_global_styles, negative_global_styles, sections.
| Parameters | Type | Description |
|---|---|---|
composition_plan | stringoptional | Composition plan dict. Shape depends on model_id (see above). Must provide either prompt or composition_plan. |
force_instrumental | booleanoptional | If True, the model will avoid generating lyrics/vocals. |
model_id | stringoptional | Which music model to use. One of "music_v1" or "music_v2". Defaults to "music_v2". |
music_length_ms | stringoptional | Length of the generated music in milliseconds (3000-600000). Cannot be used if composition_plan is provided. |
output_directory | stringoptional | Directory to save the output audio file |
prompt | stringoptional | Prompt to convert to music. Must provide either prompt or composition_plan. |
seed | stringoptional | Optional integer seed for reproducible generation (music_v2 only). |
store_for_inpainting | booleanoptional | If True, the generated song is stored server-side and the returned song_id can be used in later inpainting calls (as an AudioRefChunk.song_id, or conditioning_ref). |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
create_agentCreate a conversational AI agent with custom configuration.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
first_message | string | First message the agent will say i.e. "Hi, how can I help you today?" |
name | string | Name of the agent |
system_prompt | string | System prompt for the agent |
asr_quality | stringoptional | Quality of the ASR. high or low. |
language | stringoptional | ISO 639-1 language code for the agent |
llm | stringoptional | LLM to use for the agent |
max_duration_seconds | integeroptional | Maximum duration of a conversation in seconds. Defaults to 600 seconds (10 minutes). |
max_tokens | stringoptional | Maximum number of tokens to generate. |
model_id | stringoptional | ID of the ElevenLabs model to use for the agent. |
optimize_streaming_latency | integeroptional | Optimize streaming latency. Range is 0 to 4. |
record_voice | booleanoptional | Whether to record the agent's voice. |
retention_days | integeroptional | Number of days to retain the agent's data. |
similarity_boost | numberoptional | Similarity boost for the agent. Range is 0 to 1. |
stability | numberoptional | Stability for the agent. Range is 0 to 1. |
temperature | numberoptional | Temperature for the agent. The lower the temperature, the more deterministic the agent's responses will be. Range is 0 to 1. |
turn_timeout | integeroptional | Timeout for the agent to respond in seconds. Defaults to 7 seconds. |
voice_id | stringoptional | ID of the voice to use for the agent |
This tool interacts with external entities.
create_composition_planCreate a composition plan for music generation. Usage of this endpoint does not cost any credits but is subject to rate limiting depending on your tier. Composition plans can be used when generating music with the compose_music tool.
The returned plan shape depends on model_id:
- music_v2 (default): `{"chunks": [GenerationChunk | AudioRefChunk, ...]}`. Each GenerationChunk has `text`, `duration_ms`, `positive_styles`, `negative_styles`, `context_adherence` and optional `conditioning_ref` + `condition_strength`. AudioRefChunks reference a stored song via `song_id` and `range: {start_ms, end_ms}` for inpainting.
- music_v1: `{"positive_global_styles": [...], "negative_global_styles": [...], "sections": [...]}`.
| Parameters | Type | Description |
|---|---|---|
prompt | string | Prompt to create a composition plan for |
model_id | stringoptional | Which music model to plan for. One of "music_v1" or "music_v2". Defaults to "music_v2". |
music_length_ms | stringoptional | The length of the composition plan to generate in milliseconds. Must be between 10000ms and 300000ms. Optional - if not provided, the model will choose a length based on the prompt. |
source_composition_plan | stringoptional | An optional composition plan dict to use as a source for the new composition plan. Should match the shape of the model_id you request. |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
create_voice_from_previewAdd a generated voice to the voice library. Uses the voice ID from the text_to_voice tool.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
generated_voice_id | string | |
voice_description | string | |
voice_name | string |
This tool interacts with external entities.
get_agentGet details about a specific conversational AI agent
| Parameters | Type | Description |
|---|---|---|
agent_id | string |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
get_conversationGets conversation with transcript. Returns: conversation details and full transcript. Use when: analyzing completed agent conversations.
| Parameters | Type | Description |
|---|---|---|
conversation_id | string | The unique identifier of the conversation to retrieve, you can get the ids from the list_conversations tool. |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
get_voiceGet details of a specific voice
| Parameters | Type | Description |
|---|---|---|
voice_id | string |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
isolate_audioIsolate audio from a file. Saves output file to directory (default: $HOME/Desktop).
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
input_file_path | string | |
output_directory | stringoptional |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
list_agentsList all available conversational AI agents
list_conversationsLists agent conversations. Returns: conversation list with metadata. Use when: asked about conversation history.
| Parameters | Type | Description |
|---|---|---|
agent_id | stringoptional | |
call_start_after_unix | stringoptional | |
call_start_before_unix | stringoptional | |
cursor | stringoptional | |
max_length | integeroptional | |
page_size | integeroptional |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
list_modelsList all available models
list_phone_numbersList all phone numbers associated with the ElevenLabs account
make_outbound_callMake an outbound call using an ElevenLabs agent. Automatically detects provider type (Twilio or SIP trunk) and uses the appropriate API.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
agent_id | string | The ID of the agent that will handle the call |
agent_phone_number_id | string | The ID of the phone number to use for the call |
to_number | string | The phone number to call (E.164 format: +1xxxxxxxxxx) |
This tool may perform destructive updates.
This tool interacts with external entities.
play_audioPlay an audio file. Supports WAV and MP3 formats.
| Parameters | Type | Description |
|---|---|---|
input_file_path | string |
This tool is read-only. It does not modify its environment.
search_voice_librarySearch for a voice across the entire ElevenLabs voice library.
| Parameters | Type | Description |
|---|---|---|
page | integeroptional | Page number to return (0-indexed) |
page_size | integeroptional | Number of voices to return per page (1-100) |
search | stringoptional | Search term to filter voices by |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
search_voicesSearch for existing voices, a voice that has already been added to the user's ElevenLabs voice library. Searches in name, description, labels and category.
| Parameters | Type | Description |
|---|---|---|
search | stringoptional | Search term to filter voices by. Searches in name, description, labels and category. |
sort | stringoptional | Which field to sort by. created_at_unix might not be available for older voices. |
sort_direction | stringoptional | Sort order, either ascending or descending. |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
simulate_conversationSimulate a text conversation between a conversational AI agent and a simulated user. Runs the full conversation and returns the transcript plus analysis.
Use this to test agent behaviour, evaluate prompts, and catch failure modes without
a live call. The simulated user follows the persona you describe.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs.
Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
agent_id | string | ID of the agent to test. Use list_agents to find IDs. |
simulated_user_prompt | string | Instructions for how the simulated user should behave. |
extra_evaluation_criteria | stringoptional | Optional list of dicts, each with: |
first_message | stringoptional | Optional opening message to kick off the conversation. |
max_turns | integeroptional | Maximum conversation turns. Defaults to 10. |
This tool interacts with external entities.
speech_to_speechTransform audio from one voice to another using provided audio files. Saves output file to directory (default: $HOME/Desktop).
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
input_file_path | string | |
output_directory | stringoptional | |
voice_name | stringoptional |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
speech_to_textTranscribe speech from an audio file. When save_transcript_to_file=True: Saves output file to directory (default: $HOME/Desktop). When return_transcript_to_client_directly=True, always returns text directly regardless of output mode.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
input_file_path | string | |
diarize | booleanoptional | Whether to diarize the audio file. If True, which speaker is currently speaking will be annotated in the transcription. |
language_code | stringoptional | ISO 639-3 language code for transcription. If not provided, the language will be detected automatically. |
output_directory | stringoptional | Directory where files should be saved (only used when saving files). |
return_transcript_to_client_directly | booleanoptional | Whether to return the transcript to the client directly. |
save_transcript_to_file | booleanoptional | Whether to save the transcript to a file. |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
text_to_sound_effectsConvert text description of a sound effect to sound effect with a given duration. Saves output file to directory (default: $HOME/Desktop).
Duration must be between 0.5 and 5 seconds.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
text | string | Text description of the sound effect |
duration_seconds | numberoptional | Duration of the sound effect in seconds |
loop | booleanoptional | Whether to loop the sound effect. Defaults to False. |
output_directory | stringoptional | Directory where files should be saved (only used when saving files). |
output_format | stringoptional |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
text_to_speechConvert text to speech with a given voice. Saves output file to directory (default: $HOME/Desktop).
Only one of voice_id or voice_name can be provided. If none are provided, the default voice will be used.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
text | string | |
language | stringoptional | ISO 639-1 language code for the voice. |
model_id | stringoptional | |
output_directory | stringoptional | |
output_format | stringoptional | |
similarity_boost | numberoptional | |
speed | numberoptional | |
stability | numberoptional | |
style | numberoptional | |
use_speaker_boost | booleanoptional | |
voice_id | stringoptional | |
voice_name | stringoptional |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
text_to_voiceCreate voice previews from a text prompt. Creates three previews with slight variations. Saves output file to directory (default: $HOME/Desktop).
If no text is provided, the tool will auto-generate text.
Voice preview files are saved as: voice_design_(generated_voice_id)_(timestamp).mp3
Example file name: voice_design_Ya2J5uIa5Pq14DNPsbC1_20250403_164949.mp3
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
voice_description | string | |
output_directory | stringoptional | |
text | stringoptional |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
upload_music_for_inpaintingUpload an existing audio file to ElevenLabs so it can be referenced in music_v2 inpainting workflows. Returns a song_id you can plug into a composition plan's AudioRefChunks (or a generation chunk's conditioning_ref) to edit or extend the track via the compose_music tool.
Optionally extracts a composition plan from the uploaded audio so you have a starting point to mutate.
Note: this endpoint is gated to enterprise customers with inpainting access.
| Parameters | Type | Description |
|---|---|---|
input_file_path | string | Path to a local audio file to upload. |
extract_composition_plan | stringoptional | Which model to extract a composition plan for ("music_v1" or "music_v2"). Pass None to skip extraction. Defaults to "music_v2". |
This tool interacts with external entities.
video_to_musicGenerate background music for one or more video files. Saves output file to directory (default: $HOME/Desktop).
The videos are concatenated server-side in the order provided; the generated score targets the combined duration. Constraints: 1-10 videos per call, combined size <= 200 MB, combined duration <= 600 seconds.
| Parameters | Type | Description |
|---|---|---|
input_file_paths | array | Paths to the video files. Order is preserved. |
description | stringoptional | Optional natural-language direction for the music (e.g. "Build suspense, then resolve with a warm cinematic finish."). |
model_id | stringoptional | Which music model to use. One of "music_v1" or "music_v2". Defaults to "music_v2". |
output_directory | stringoptional | Directory to save the generated audio file. Defaults to $HOME/Desktop. |
tags | stringoptional | Optional list of up to 10 short style cues (e.g. ["cinematic", "suspenseful", "uplifting"]). |
This tool is read-only. It does not modify its environment.
This tool interacts with external entities.
voice_cloneCreate an instant voice clone of a voice using provided audio files.
⚠️ COST WARNING: This tool makes an API call to ElevenLabs which may incur costs. Only use when explicitly requested by the user.
| Parameters | Type | Description |
|---|---|---|
files | array | |
name | string | |
description | stringoptional |
This tool interacts with external entities.
{
"mcpServers": {
"elevenlabs": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ELEVENLABS_API_KEY",
"-v",
"/local-directory:/local-directory",
"mcp/elevenlabs"
],
"env": {
"ELEVENLABS_API_KEY": "<ELEVENLABS_API_KEY>"
}
}
}
}