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 "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 Give 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.
Available Tools
13 toolscreate_midi_clipC
Create a MIDI clip and fill with notes. Use this when the user wants a musical idea written into the set.
Inputs: track (required), clip_slot (required), length_beats (required), notes (required).
create_trackC
Create a new MIDI or audio track at end of set.
Inputs: track_type, name.
explain_shortcutB
Look up an Ableton Live keyboard shortcut by action name.
Inputs: action (required).
fire_clipA
Start playing a clip. ASK THE USER FIRST before calling — surprise playback is disruptive.
Inputs: track (required), clip (required).
get_clip_notesB
MIDI notes in a clip: pitch, start (beats), duration, velocity.
Inputs: track (required), clip (required). Returns: result
get_selectedA
What the user currently has selected in Live. Call this first when the user asks 'what is this?'.
Inputs: no named parameters. Returns: object
get_session_overviewB
Tempo, time signature, and summary of every track.
Inputs: no named parameters. Returns: object
get_track_detailB
Devices, clip slots, and routing for one track.
Inputs: track (required). Returns: object
get_transport_stateB
Transport state: playing, current beat, loop.
Inputs: no named parameters. Returns: object
modify_clip_notesC
Replace all notes in an existing MIDI clip.
Inputs: track (required), clip (required), notes (required).
set_tempoC
Set song tempo (BPM).
Inputs: bpm (required).
set_time_signatureC
Set song time signature.
Inputs: numerator (required), denominator (required).
stop_clipC
Stop a clip.
Inputs: track (required), clip (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool targets a distinct action or resource: clip creation/modification, transport controls, track management, session overview, and shortcut lookup. No two tools have overlapping purposes.
All tools follow a consistent snake_case verb_noun pattern (e.g., create_midi_clip, get_clip_notes, set_tempo), making them predictable and easy to distinguish.
13 tools cover the essential operations for an Ableton Live assistant without being overwhelming. The scope is well-balanced for core music production tasks.
Covers clip, track, transport, and session management. Missing operations like delete_track or record_arm are minor gaps that agents can work around, but core workflows are solid.
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.
Compose, mix, master and export in Logic Pro, REAPER or Ableton Live by talking to an AI engineer.
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
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
- AlicenseNot gradedqualityDmaintenanceEnables natural language control over Ableton Live for generating musical patterns, melodies, and full song arrangements. It also provides tools for sample searching and mixing assistance through an OSC-based connection with Claude Desktop.1MIT
- 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 Claude AI to Ableton Live via the Model Context Protocol, enabling prompt-assisted music production, track and clip manipulation, and session control.16MIT