ableton-mcp
This server exposes an MCP interface to Ableton Live 12 via OSC, enabling an AI assistant to observe and control a Live session. Capabilities include:
Reading session state: Get session overview (tempo, time signature, track summaries), track details (devices, clip slots, routing), MIDI clip notes, transport state (playing, beat position, loop), and currently selected objects.
Analyzing musical content: Detect key/scale at clip, track, or session level.
Writing musical ideas: Create MIDI clips with notes, modify existing clip notes, generate chord progressions, and drum patterns.
Controlling transport & song settings: Set tempo (BPM) and time signature; capture MIDI.
Managing tracks, clips, and scenes: Create, duplicate, delete, rename, and color tracks, clips, and scenes.
Triggering playback: Fire or stop specific clips.
Controlling devices: Load devices from Live's library, set device parameters, and manage clip automation.
Mixing: Adjust track volume, panning, mute, solo, and arm.
Browsing the library: List browser contents and load instruments/effects.
Undoing actions: Perform undo operations.
Utility: Look up Ableton Live keyboard shortcuts by action name.
Click on "Install 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-mcpGive me an overview of my current Ableton session."
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
An MCP server that lets Claude observe and compose in Ableton Live 12 via AbletonOSC.
Designed for musicians who want a pair-programming-style collaborator: Claude can read your Live set, explain what's there, and write musical ideas directly into clips — then narrate the choices so you learn as you go.
Status
v0.8 — high-level composition tools and a simpler write API. create_chord_progression (roman numerals or chord names + key) and create_drum_pattern (step strings like x...x...x...x...) let Claude express harmonic and rhythmic ideas in a few tokens instead of emitting raw note lists. The duplicate/delete/rename trio per object collapses into one edit_track / edit_clip / edit_scene tool each, cutting the surface area Claude has to reason about. Browser listing in the forked AbletonOSC now caches per-folder results, so the first hit pays the disk walk and subsequent list_browser calls return instantly (previously they tripped the 2.0s OSC timeout on large libraries). v0.7 added analyze tools (detect_clip_key, detect_track_key, detect_session_key) using Krumhansl-Schmuckler key profiles. Builds on v0.6 scenes + color, v0.5 revise-and-respond (undo, capture MIDI), v0.4 automation, and v0.3 browser/loading.
Related MCP server: AbletonMCP
How it works
Claude ←→ MCP (this repo, stdio) ←→ python-osc ←→ AbletonOSC remote script ←→ Ableton Live 12Tool surface (v0.8)
Read — get_session_overview, get_track_detail, get_clip_notes, get_transport_state, get_selected, get_device_parameters, list_browser, sample_clip_automation
Analyze — detect_clip_key, detect_track_key, detect_session_key
Revise — undo
Write — create_midi_clip, modify_clip_notes, create_chord_progression, create_drum_pattern, set_tempo, set_time_signature, create_track, load_device, set_device_parameter, set_clip_automation / clear_clip_automation, set_track_volume / set_track_panning / set_track_mute / set_track_solo / set_track_arm, edit_track / edit_clip / edit_scene (duplicate, delete, rename), create_scene, set_clip_color / set_scene_color, capture_midi, fire_clip / fire_scene / stop_clip (gated — Claude must ask the user)
Setup
1. Install AbletonOSC in Live
This repo bundles a forked AbletonOSC as a submodule with a BrowserHandler added for list_browser / load_device. Clone with submodules and symlink into Live's MIDI Remote Scripts folder:
git clone --recurse-submodules https://github.com/mrinalghosh/ableton-mcp.git
cd ableton-mcp
# macOS
ln -s "$PWD/AbletonOSC" "$HOME/Music/Ableton/User Library/Remote Scripts/AbletonOSC"macOS:
~/Music/Ableton/User Library/Remote Scripts/Windows:
Documents\Ableton\User Library\Remote Scripts\
Then in Live → Settings → Link, Tempo & MIDI, add AbletonOSC as a Control Surface.
2. Install this MCP server
git clone https://github.com/mrinalghosh/ableton-mcp.git
cd ableton-mcp
pip install -e .3. Register with Claude
Add to your Claude Code / Claude Desktop MCP config:
{
"mcpServers": {
"ableton": {
"command": "ableton-mcp"
}
}
}Pedagogy
The system prompt asks Claude to write first, then explain: when you ask for a musical idea, Claude generates the MIDI directly into Live, then narrates the choices (key, rhythm, voice leading). When you ask "what is this?", Claude grounds itself with get_selected before answering.
Known quirks
Track/clip names come back with hyphens instead of spaces. AbletonOSC normalizes whitespace in string responses, so a track displayed in Live as
1 MIDIis reported as1-MIDI. We pass this through unchanged — reversing it would corrupt names the user actually wrote with hyphens.undois per-Live-action, not per-MCP-tool. A single MCP write may correspond to several Live undo steps (e.g.create_track+load_device+create_midi_clipis three undos), or to one (amodify_clip_noteswith 16 notes is one). To fully reverse a multi-step change, callundorepeatedly — the reply'scan_undo_moreflag indicates whether more history remains. AbletonOSC doesn't expose undo grouping, so we can't fix this in the wrapper.
Roadmap
v0.1: end-to-end smoke test against real Live instance; name tracks after creationv0.2: device parameter control (get_device_parameters,set_device_parameter); per-track mixer (volume, pan, mute, solo)v0.3: browse Live's Library and load instruments/effects onto tracks (forked AbletonOSC addsBrowserHandler)v0.4: clip automation lanes — read/write parameter envelopes inside a clip (forked AbletonOSC addsAutomationHandler)v0.5: revise-and-respond —undo;duplicate_clip/delete_clip/delete_track/rename_track/rename_clip; capture MIDI (record-arm + Capture) so Claude can riff on what you just playedv0.6: scene management (create_scene,fire_scene,delete_scene,rename_scene); clip color so Claude can visually group variantsv0.7: scale/key inference —detect_clip_key/detect_track_key/detect_session_keyusing Krumhansl-Schmuckler key profiles, plus pitch utility helpersv0.8: high-level composition tools (create_chord_progression,create_drum_pattern) so Claude can express musical ideas in a few tokens; collapse per-object dup/delete/rename into singleedit_track/edit_clip/edit_scenetools; cache browser folder listings in AbletonOSC fork to fixlist_browsertimeouts on large librariesv0.9: quantize captured MIDI — close the capture loop with
quantize_clip
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrinalghosh/ableton-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server