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: Ableton MCP
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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