Ableton Producer MCP
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 Producer MCPcreate a 4-bar house beat at 124 BPM with kick, bass, and hats"
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 Producer MCP
An MCP server that lets Claude (or any MCP client) produce music in Ableton Live: build tracks, write MIDI, load and tweak devices, arrange sections and draw real automation, all from a chat.
It is a fork of ahujasid/ableton-mcp (MIT) extended for full-track production work. The fork adds arrangement editing, device-parameter control and clip and arrangement automation.
What this fork adds
Area | Tools |
Automation | Read, write and clear clip envelopes (Session and Arrangement clips). Write real Arrangement track automation (filter sweeps, builds, fades) with |
Devices | Read and set any device parameter, including on the master track ( |
Arrangement | Copy Session clips to the timeline, list Arrangement clips, rename them, move the playhead, create locators. |
Editing | Clear notes, delete clips, create audio tracks, load audio files into clips. |
State |
|
Safety | Version handshake with the Remote Script, and an installer that puts the script in the folder Live actually scans. |
Related MCP server: ableton-mcp-extended
Requirements
Ableton Live 11 or 12. Developed on Live 12.
insert_deviceneeds Live 12.1.5 or newer.Python 3.10+
uv (
brew install uvon macOS)An MCP client: Claude Code, Claude Desktop, Cursor or similar.
Installation
1. Clone the repository
git clone https://github.com/kovtun-oleksii/ableton-producer-mcp.git2. Install the Remote Script into Live
The MCP server talks to Live through a MIDI Remote Script (a control surface) that runs inside Live. Install it with:
uv --directory /absolute/path/to/ableton-producer-mcp run ableton-mcp-install-scriptThe script is copied to <User Library>/Remote Scripts/AbletonMCP/, the folder Live 10.1.13+ scans for third-party control surfaces. Useful options:
Option | What it does |
| Show which Remote Scripts folders were found, then exit. |
| Install into an explicit folder. |
| Overwrite even if |
| Also copy into the old |
3. Enable the control surface in Live
Restart Live.
Open Settings → Link, Tempo & MIDI. In Live 11 this is Preferences → Link Tempo MIDI.
Under Control Surface, pick AbletonMCP.
Set Input and Output to None.
The script listens on localhost:9877.
4. Connect your MCP client
Claude Code
claude mcp add AbletonMCP -- uv --directory /absolute/path/to/ableton-producer-mcp run ableton-mcpClaude Desktop. Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"AbletonMCP": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/ableton-producer-mcp", "run", "ableton-mcp"]
}
}
}Cursor and other clients: use the same command, uv --directory /absolute/path/to/ableton-producer-mcp run ableton-mcp.
Run only one MCP client against Live at a time, because they share the same socket.
5. Check the connection
With Live open, ask your assistant "What's in my Live set?". It should call get_session_info and report the tempo and tracks.
You can also query the Remote Script directly, bypassing the MCP server. Run this from the repository folder:
python3 scripts/live_call.py get_script_infoThe reply should report Remote Script version 1.8.3. If the server warns about a version mismatch, run step 2 again and restart Live.
Updating
git -C /absolute/path/to/ableton-producer-mcp pullIf the Remote Script changed, run the installer from step 2 again. Then restart Live, or re-select AbletonMCP under Control Surface.
Tools
Each tool also takes an optional user_prompt argument.
Session and transport
get_session_info, get_remote_script_info, get_session_snapshot, set_tempo, start_playback, stop_playback, switch_to_arrangement_view, set_arrangement_time
Tracks
get_track_info, create_midi_track, create_audio_track, set_track_name
Clips and notes (Session view)
create_clip, add_notes_to_clip, get_clip_notes, clear_notes_from_clip, set_clip_name, delete_clip, fire_clip, stop_clip, create_audio_clip
Arrangement
duplicate_to_arrangement, get_arrangement_clips, set_arrangement_clip_name, create_locator
Devices and browser
get_device_parameters, set_device_parameter, insert_device, load_instrument_or_effect, load_drum_kit, get_browser_tree, get_browser_items_at_path
Automation
get_clip_automation, set_clip_automation, clear_clip_automation, set_arrangement_automation, clear_arrangement_automation
Feedback and dataset (opt-in, see Telemetry and data)
set_dataset_consent, submit_intent, rate_last_action, prefer_candidate, reject_last_action, record_audition
Units and conventions
Time is in beats (quarter notes). In 4/4, bar N starts at beat
(N − 1) × 4. Notes look like{"pitch": 60, "start_time": 0.0, "duration": 0.5, "velocity": 96}. Middle C is 60 (C3 in Live).Parameter values use each parameter's own
min..maxrange. Callget_device_parametersfirst to find the index, range and current display value.Indices shift when tracks or devices are added or removed. Look things up by name right before each change, especially if you are editing the set at the same time.
Automation
Clip envelopes: set_clip_automation writes a curve into one clip, with times relative to the clip start:
{"track_index": 2, "clip_index": 0, "device_index": 1, "parameter_index": 4,
"points": [{"time": 0, "value": 0.2}, {"time": 16, "value": 0.8}]}Points ramp linearly. Add "step": true to a point to hold its value until the next point, which gives a jump.
Arrangement automation: Live's API cannot create envelopes inside Arrangement clips. set_arrangement_automation works around this:
Each Arrangement clip in the curve's span is rebuilt in a spare Session slot, with the same notes plus the envelope.
The rebuilt clip is copied back onto the timeline.
Live converts the envelope into real track automation.
Times are absolute Arrangement beats. Things to know:
The track needs one empty Session slot and MIDI clips covering the span. Audio clips, and clips looped or trimmed in the Arrangement, are skipped and reported.
Rebuilding a clip can reset that span for other automated parameters on the same track. Put all curves for the same span into one call (or one plan job, see below), then read the values back.
Group tracks and audio tracks that monitor an input can't be automated through the API.
For batch jobs, scripts/arrangement_automation.py plan.json runs the same technique from the command line. The plan format is described at the top of the script.
Tips and limits
Session overrides Arrangement. After firing Session clips, press Back to Arrangement in Live or the timeline stays muted.
Read parameter values with the transport stopped. During playback, readings lag about one beat.
Loading a device arms the track. Loading a device or sample selects that track and arms it; disarm it afterwards.
get_session_snapshotcan be very large. Passinclude_notes=falseandinclude_params=falsewhen you only need the structure.Not possible through this server: deleting or muting tracks, moving devices within a chain, choosing a sidechain source ("Audio From"). Do these by hand in Live.
Configuration
Variable | Default | Used by |
|
| MCP server |
|
|
|
| unset | Kill switch: set any of them to |
| unset | Installer skips the copy unless |
Telemetry and data
A fresh clone sends nothing. Telemetry and dataset recording need credentials in MCP_Server/config.py. That file is not part of this repository and is ignored by git.
The feedback and dataset tools record only after the user explicitly agrees via set_dataset_consent. The kill-switch variables above override any consent.
Development
python3 -m unittest discover -s testsscripts/live_call.pysends one raw command to the Remote Script and prints the reply. Use it to smoke-test script changes in a running Live.scripts/live_names.pyholds name-based track and device helpers, setters that take display values (such as dB), and a peak meter.scripts/arrangement_automation.pywrites Arrangement automation from a JSON plan.MCP_Server/bundled_ableton_remote_script/AbletonMCP_init.pyis the Remote Script that ships with the package. After editing it, run the installer again and reload the control surface in Live.
Credits and license
MIT, see LICENSE. Based on ableton-mcp by Siddharth Ahuja. This is a third-party project and is not affiliated with or endorsed by Ableton.
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for Producer/Riffusion AI music generation
Related MCP Servers
- AlicenseCqualityDmaintenanceConnects Claude AI to Ableton Live through the Model Context Protocol, enabling prompt-assisted music production with track creation, instrument loading, clip editing, and session control. Allows users to create complete musical arrangements by describing what they want in natural language.373MIT
- FlicenseNot gradedqualityCmaintenanceEnables natural language control of Ableton Live through Claude, including session management, track and clip creation, device parameter adjustment, and browser browsing.1-
- AlicenseBqualityDmaintenanceConnects Ableton Live to Claude AI via the Model Context Protocol, enabling prompt-assisted music production, track creation, and Live session manipulation.16MIT
- FlicenseBqualityDmaintenanceControl Ableton Live from Claude Code via the Model Context Protocol (MCP). Create/edit tracks, control plugins, fire clips, edit MIDI notes, capture audio — all through natural language.100-