Ableton MCP Extended
Integrates text-to-speech generation, custom voice cloning, and AI sound effects directly into Ableton Live sessions, allowing generated audio to be imported instantly.
Provides extensive tools for the creation and manipulation of MIDI clips and notes, including programmatic control over transposition, quantization, and batch note edits.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ableton MCP Extended Create a 4-bar MIDI clip on the Piano track and add a reverb effect."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ableton MCP Extended
Control Ableton Live using natural language via AI assistants like Claude or Cursor. This project provides a robust Model Context Protocol (MCP) server that translates natural language commands into precise actions within your Ableton Live session.
Video demonstration: https://www.youtube.com/watch?v=7ZKPIrJuuKk
This tool is designed for producers, developers, and AI enthusiasts who want to streamline their music production workflow, experiment with generative music, and build custom integrations with Ableton Live.
You can transform this conversation:
👤 "Create a brief minimalist/neo-classical composition in a style similar to Ólafur Arnalds'. (Ableton MCP) / I've loaded four MIDI tracks called "Noire" and "Noire (2) ["Emotional Felt" presets], "Noire (2) ["Reversed Felt" preset, for ambient background], and "Noire (3) ["Ethereal Felt" preset, also for ambient background]. All loaded with nice piano instruments. You have also a MIDI track called "Strings" with a nice string ensemble instrument loaded. Feel free to add new instruments and effects, if pertinent."
🤖 "Creating MIDI clips... Adding effects... Done!"
👤 "Then, use ElevenLabs MCP to create a spoken-word audio clip (default voice and settings) with a relevant poem in the style of “Jim Morrison” to accompany the composition."
🤖 "Generating poem... Transforming it into speech... Importing it into your session... Done!"Into this music production session:
https://github.com/user-attachments/assets/d6ef2de5-bdeb-4097-acc0-67d70f7f85b3
Key Features
This project provides comprehensive, programmatic control over the Ableton Live environment.
Session and Transport Control:
Start and stop playback.
Get session info, including tempo, time signature, and track count.
Manage scenes: create, delete, rename, and fire.
Track Management:
Create, rename, and get detailed information for MIDI and audio tracks.
Control track properties: volume, panning, mute, solo, and arm.
Manage track grouping and folding states.
MIDI Clip and Note Manipulation:
Create and name MIDI clips with specified lengths.
Add, delete, transpose, and quantize notes within clips.
Perform batch edits on multiple notes in a single operation.
Adjust clip loop parameters and follow actions.
Device and Parameter Control:
Load instruments and effects from Ableton's browser by URI.
Get a full list of parameters for any device on a track.
Set and batch-set device parameters using normalized values (0.0 to 1.0).
Automation and Envelopes:
Add and clear automation points for any device parameter within a clip. [This feature isn't working perfectly yet.]
Get information about existing clip envelopes.
Browser Integration:
Navigate and list items from Ableton's browser.
Load instruments, effects, and samples directly from a browser path or URI.
Import audio files directly into audio tracks or clip slots.
Voice & Audio Generation
Text-to-Speech Integration: Generate narration, vocal samples, or spoken elements through ElevenLabs MCP [included].
Custom Voice Creation: Clone voices for unique character in your tracks
Sound Effects: Create custom SFX with AI
Direct Import: Generated audio appears instantly in your Ableton session
Extensible Framework for Custom Tools
Example: XY Mouse Controller: Demonstrates creating custom Ableton controllers with the MCP framework
Ultra-Low Latency: High-performance UDP protocol enables responsive real-time control
Unlimited Possibilities: Build your own custom tools and controllers for Ableton Live
Related MCP server: ableton-live-mcp
Quick Start (5 Minutes)
Prerequisites
Ableton Live 11+ (any edition)
Python 3.10 or higher
Claude Desktop or Cursor IDE
1. Get the Code
git clone https://github.com/uisato/ableton-mcp-extended.git
cd ableton-mcp-extended
pip install -e .2. Install Ableton Script
Find your Ableton Remote Scripts folder:
Windows:
C:\Users\[You]\Documents\Ableton\User Library\Remote Scripts\Mac:
~/Library/Preferences/Ableton/Live [Version]/User Remote Scripts/
Create folder:
AbletonMCPCopy
AbletonMCP_Remote_Script/__init__.pyinto this folder
3. Configure Ableton
Open Ableton Live
Go to Preferences → Link, Tempo & MIDI
Set Control Surface to "AbletonMCP"
Set Input/Output to "None"
4. Connect AI Assistant
For Claude Desktop:
{
"mcpServers": {
"AbletonMCP": {
"command": "python",
"args": ["C:/path/to/ableton-mcp-extended/MCP_Server/server.py"]
}
}
}For Cursor: Add MCP server in Settings → MCP with the same path.
5. Start Creating!
Open your AI assistant and try:
"Create a new MIDI track with a piano"
"Add a simple drum beat"
"What tracks do I currently have?"
How It Works
graph TB
A[You: Natural Language] --> B[AI Assistant]
B --> C[MCP Server]
C --> D[Ableton Remote Script]
D --> E[Ableton Live API]
E --> F[🎵 Your Music]
G[ElevenLabs AI] --> H[Generated Audio]
H --> CYou issue a command in plain English to your AI assistant (e.g., "Create a new MIDI track and name it 'Bass'").
The AI Assistant understands the intent and calls the appropriate tool from the MCP server.
The MCP Server (server.py) receives the tool call and constructs a specific JSON command.
The Ableton Remote Script (init.py), running inside Live, receives the JSON command via a socket connection.
The Remote Script executes the command using the official Ableton Live API, making the change in your session instantly.
Advanced Features
For real-time parameter control with ultra-low latency:
# Install the hybrid server
cp -r Ableton-MCP_hybrid-server/AbletonMCP_UDP/ ~/Remote\ Scripts/AbletonMCP_UDP/
# Try the XY Mouse Controller example
cd experimental_tools/xy_mouse_controller
python mouse_parameter_controller_udp.pyThis demonstrates how to build:
Custom real-time controllers for Ableton
Expressive performance tools
Interactive music applications
This repository can be integrated with other MCP servers, such as one for ElevenLabs, to generate and import audio directly into your project.
Set up the ElevenLabs MCP server according to its instructions.
Update your AI assistant's config to include both servers.
Example mcp-config.json:
{
"mcpServers": {
"AbletonMCP": {
"command": "python",
"args": ["/path/to/ableton-mcp-extended/server.py"]
},
"ElevenLabs": {
"command": "python",
"args": ["/path/to/elevenlabs_mcp/server.py"],
"env": {
"ELEVENLABS_API_KEY": "your-api-key-here"
}
}
}
}Components Overview
This project includes several specialized components:
Core MCP Server
Standard TCP communication for reliable AI control
Extensive Ableton Live API integration
Compatible with Claude Desktop, Cursor, and Gemini CLI.
Hybrid TCP/UDP Server
High-performance real-time parameter control
Ultra-low latency for live performance
Perfect for controllers and interactive tools
ElevenLabs Integration
Professional text-to-speech generation
Custom voice creation and cloning
Direct import into Ableton sessions
Real-time SFX generation
Experimental Tools & Examples
XY Mouse Controller: Example demonstrating how to build custom Ableton controllers
Extensible Framework: Foundation for creating your own control interfaces
Proof of Concept: Shows the power and flexibility of the MCP approach
Documentation
Installation Guide - Detailed setup instructions
User Guide - What, which, and how
Community & Support
GitHub Issues: Bug reports and feature requests
Discussions: Share your creations and get help
Share Your Creations
Tag me with your AI-generated experiments! I love seeing what the community creates:
YouTube | Instagram | Patreon | Website
What's Next
Fixing Automation Point Placement Bugs
VST Plugin Support - Control third-party plugins [Though it can be achieved throught the "Configure" parameter function]
Arrangement View - Full timeline control
Hardware Integration - Bridge MIDI controllers through AI
Advanced AI - Smarter and better music understanding and generation
License & Credits
This project is licensed under the MIT License - see LICENSE for details.
Built with:
Model Context Protocol - AI integration framework
ElevenLabs API - Professional voice generation
Ableton Live - Digital audio workstation
Inspired by: The original ableton-mcp project
Made with ❤️ for the music production community
If this project helps your creativity, consider giving it a ⭐ star!
Available Tools
16 toolsadd_notes_to_clipC
Add MIDI notes to a clip.
Parameters:
- track_index: The index of the track containing the clip
- clip_index: The index of the clip slot containing the clip
- notes: List of note dictionaries, each with pitch, start_time, duration, velocity, and mute
Inputs: track_index (required), clip_index (required), notes (required). Returns: result
create_clipA
Create a new MIDI clip in the specified track and clip slot.
Parameters:
- track_index: The index of the track to create the clip in
- clip_index: The index of the clip slot to create the clip in
- length: The length of the clip in beats (default: 4.0)
Inputs: track_index (required), clip_index (required), length. Returns: result
create_midi_trackB
Create a new MIDI track in the Ableton session.
Parameters:
- index: The index to insert the track at (-1 = end of list)
Inputs: index. Returns: result
fire_clipC
Start playing a clip.
Parameters:
- track_index: The index of the track containing the clip
- clip_index: The index of the clip slot containing the clip
Inputs: track_index (required), clip_index (required). Returns: result
get_browser_items_at_pathA
Get browser items at a specific path in Ableton's browser.
Parameters:
- path: Path in the format "category/folder/subfolder"
where category is one of the available browser categories in Ableton
Inputs: path (required). Returns: result
get_browser_treeB
Get a hierarchical tree of browser categories from Ableton.
Parameters:
- category_type: Type of categories to get ('all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects')
Inputs: category_type. Returns: result
get_session_infoA
Get detailed information about the current Ableton session
Inputs: no named parameters. Returns: result
get_track_infoC
Get detailed information about a specific track in Ableton.
Parameters:
- track_index: The index of the track to get information about
Inputs: track_index (required). Returns: result
load_drum_kitB
Load a drum rack and then load a specific drum kit into it.
Parameters:
- track_index: The index of the track to load on
- rack_uri: The URI of the drum rack to load (e.g., 'Drums/Drum Rack')
- kit_path: Path to the drum kit inside the browser (e.g., 'drums/acoustic/kit1')
Inputs: track_index (required), rack_uri (required), kit_path (required). Returns: result
load_instrument_or_effectB
Load an instrument or effect onto a track using its URI.
Parameters:
- track_index: The index of the track to load the instrument on
- uri: The URI of the instrument or effect to load (e.g., 'query:Synths#Instrument%20Rack:Bass:FileId_5116')
Inputs: track_index (required), uri (required). Returns: result
set_clip_nameB
Set the name of a clip.
Parameters:
- track_index: The index of the track containing the clip
- clip_index: The index of the clip slot containing the clip
- name: The new name for the clip
Inputs: track_index (required), clip_index (required), name (required). Returns: result
set_tempoC
Set the tempo of the Ableton session.
Parameters:
- tempo: The new tempo in BPM
Inputs: tempo (required). Returns: result
set_track_nameB
Set the name of a track.
Parameters:
- track_index: The index of the track to rename
- name: The new name for the track
Inputs: track_index (required), name (required). Returns: result
start_playbackB
Start playing the Ableton session.
Inputs: no named parameters. Returns: result
stop_clipB
Stop playing a clip.
Parameters:
- track_index: The index of the track containing the clip
- clip_index: The index of the clip slot containing the clip
Inputs: track_index (required), clip_index (required). Returns: result
stop_playbackB
Stop playing the Ableton session.
Inputs: no named parameters. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Most tools have distinct purposes, such as create_clip vs. add_notes_to_clip, but there is some potential overlap between fire_clip and start_playback, as both initiate playback in different contexts. The descriptions clarify that fire_clip targets specific clips while start_playback controls the entire session, but an agent might occasionally confuse them without careful reading.
All tool names follow a consistent snake_case verb_noun pattern, such as create_clip, get_session_info, and set_tempo. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions across the 16 tools.
With 16 tools, the server is slightly on the heavier side but remains reasonable for controlling an Ableton session, covering essential operations like clip management, track creation, and playback control. It avoids being overwhelming while providing comprehensive functionality, though it could be streamlined by merging closely related tools like start_playback and stop_playback into a single toggle.
The tool set covers key aspects of Ableton control, including clip and track manipulation, browser navigation, and session playback, but has minor gaps such as missing update or delete operations for clips or tracks. Agents can work around these omissions by combining existing tools, but the lack of direct modification tools may limit efficiency in some workflows.
Maintenance
Related MCP Connectors
Manage ElevenLabs voice agents and generate speech, music, sound effects, images, and video.
Compose, mix, master and export in Logic Pro, REAPER or Ableton Live by talking to an AI engineer.
Score video, make music as an agent: 100+ AI instruments play your MIDI, audio, stems, Logic/Ableton
ElevenLabs in natural language: generate speech in any language, create and manage voices, compose m
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables programmatic control over Ableton Live sessions through natural language commands for managing tracks, MIDI clips, and device parameters. It also integrates with ElevenLabs to generate and import AI-based audio and voice elements directly into the DAW.280MIT
- AlicenseCqualityCmaintenanceEnables AI agents to control Ableton Live by evaluating arbitrary Python code and using predefined tools for common tasks, supporting voice and text commands for music production.27236MIT
- FlicenseCqualityCmaintenanceEnables full control of Ableton Live from AI assistants, including transport, tracks, clips, devices, and scene management through 143 tools.100-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control Ableton Live with full access to Live's object model, including clip creation, device control, automation, and audio signal capture for mixing and mastering tasks.1MIT