AbletonMCP
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., "@AbletonMCP add a reverb device to track 1"
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.
AbletonMCP - Ableton Live Model Context Protocol Integration
AbletonMCP connects Ableton Live to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Ableton Live. This integration enables prompt-assisted music production, track creation, and Live session manipulation.
This is a fork of ahujasid/ableton-mcp by Siddharth Ahuja. The original project introduced this Ableton Live <-> MCP integration and covered core session/track/clip/browser control; all credit for that foundation goes to the original author. This fork (published as the
ableton-mcp-fullpackage) rewrites the implementation into a modular, fully unit- and end-to-end-tested architecture and extends coverage to the full mixer, device parameters and rack chains/drum pads, clip envelope automation, scenes, arrangement clips, and transport/session state -- see Capabilities below for the full list. Licensed under the same MIT terms as the original (see LICENSE).Removed from upstream: the original repo's Smithery integration (
smithery.yaml, its generatedDockerfile, and the Smithery install instructions/badge) has been removed from this fork. Smithery's hosted install path reports tool usage statistics, session/active-user counts, and error/performance metrics for servers installed through it; this fork drops that integration so no such telemetry is collected.
Join the Community
Give feedback, get inspired, and build on top of the MCP: Discord.
Features
Two-way communication: Connect Claude AI to Ableton Live through a socket-based server
Full track control: Create, delete, duplicate, rename, color, mute/solo/arm, route, and fold MIDI, audio, and return tracks
Mixer control: Volume, panning, sends, crossfader assignment, and the master track
Session and arrangement clips: Create, delete, duplicate, quantize, loop, and read/write MIDI notes; duplicate clips into the arrangement
Scenes: Create, delete, duplicate, fire, rename, color, and tempo-lock scenes
Devices: Load instruments/effects/samples from the browser, toggle devices, and read/write any device parameter, including inside racks and drum pads
Automation: Insert and clear clip envelope automation for device parameters
Transport: Play/stop/continue, loop region, punch in/out, overdub, session record, and cue points
Session introspection: Full session/track/clip/scene/device state as structured JSON
Related MCP server: AbletonMCP
Components
The system consists of two main components, each organized by domain rather than as one large file:
Ableton Remote Script (
AbletonMCP_Remote_Script/): A MIDI Remote Script for Ableton Live that opens a JSON/TCP socket server and dispatches commands to handler modules that call the Live Object Model (LOM).socket_server.py- generic threaded JSON-over-TCP server (no Live API dependency)dispatcher.py- command registry and dispatch, with aLiveContextindirection layerlive_api_utils.py- pure helpers for looking up and serializing Live objectshandlers/- one module per domain:session,transport,tracks,mixer,clips,scenes,devices,automation,browser,application__init__.py- thinControlSurfacesubclass that wires the socket server to the dispatcher
MCP Server (
MCP_Server/): A Python server that implements the Model Context Protocol and connects to the Ableton Remote Script.connection.py- the TCP/JSON client (AbletonConnection)mcp_instance.py- the sharedFastMCPinstance and lifespantools/- one module per domain, mirroring the Remote Script's handler modules 1:1server.py- thin entry point that registers all tools and runs the server
Everything except the ControlSurface subclass itself (which needs Live's _Framework) is plain, dependency-free Python, importable and unit-testable outside of Ableton Live.
Installation
Prerequisites
Ableton Live 10 or newer
Python 3.8 or newer
If you're on Mac, please install uv as:
brew install uvOtherwise, install from [uv's official website][https://docs.astral.sh/uv/getting-started/installation/]
⚠️ Do not proceed before installing UV
Claude for Desktop Integration
Follow along with the setup instructions video
Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
{
"mcpServers": {
"AbletonMCP": {
"command": "uvx",
"args": [
"ableton-mcp-full"
]
}
}
}Cursor Integration
Run ableton-mcp-full without installing it permanently through uvx. Go to Cursor Settings > MCP and paste this as a command:
uvx ableton-mcp-full⚠️ Only run one instance of the MCP server (either on Cursor or Claude Desktop), not both
Installing the Ableton Remote Script
Follow along with the setup instructions video (note: the video shows the older single-file version; the install location is the same, but you now copy a folder of files instead of a single __init__.py)
Download this repo, or at minimum the whole
AbletonMCP_Remote_Script/directory (it now contains several files and ahandlers/subfolder, not just__init__.py)Find Ableton's MIDI Remote Scripts directory. Different OS and versions have different locations. One of these should work, you might have to look:
For macOS:
Method 1: Go to Applications > Right-click on Ableton Live app → Show Package Contents → Navigate to:
Contents/App-Resources/MIDI Remote Scripts/Method 2: If it's not there in the first method, use the direct path (replace XX with your version number):
/Users/[Username]/Library/Preferences/Ableton/Live XX/User Remote Scripts
For Windows:
Method 1: C:\Users[Username]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts
Method 2:
C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\Method 3:
C:\Program Files\Ableton\Live XX\Resources\MIDI Remote Scripts\Note: Replace XX with your Ableton version number (e.g., 10, 11, 12)
Create a folder called
AbletonMCPin the Remote Scripts directory and copy the entire contents of this repo'sAbletonMCP_Remote_Script/directory into it (__init__.py,dispatcher.py,socket_server.py,live_api_utils.py, and thehandlers/subfolder) -- so you end up with.../AbletonMCP/__init__.py,.../AbletonMCP/handlers/tracks.py, etc.Launch (or restart) Ableton Live
Go to Settings/Preferences → Link, Tempo & MIDI
In the Control Surface dropdown, select "AbletonMCP"
Set Input and Output to "None"
Usage
Starting the Connection
Ensure the Ableton Remote Script is loaded in Ableton Live
Make sure the MCP server is configured in Claude Desktop or Cursor
The connection should be established automatically when you interact with Claude
Using with Claude
Once the config file has been set on Claude, and the remote script is running in Ableton, you will see a hammer icon with tools for the Ableton MCP.
Capabilities
Every tool below is available both to Claude (as an MCP tool) and as a Remote Script command; the two are always kept in exact 1:1 correspondence (enforced by a test, see Testing).
Session & transport - tempo, time signature, metronome, clip trigger quantization, undo/redo, play/stop/continue, song position, loop region, punch in/out, overdub, session record, cue points
Tracks & mixer - create/delete/duplicate MIDI, audio, and return tracks; rename, color, mute/solo/arm, monitoring state, input/output routing, group track fold state; volume, panning, sends, crossfader assign, master volume/crossfader
Clips - create/delete/duplicate session clips; fire/stop clips and stop-all; rename, color, loop region, quantize; add/get/remove MIDI notes; duplicate a session clip into the arrangement and list/delete arrangement clips
Scenes - create/delete/duplicate/fire scenes; rename, color, and tempo-lock
Devices - list devices on a track; load instruments/effects/samples from the browser; delete/activate devices; list/get/set device parameters; inspect rack chains and drum pads
Automation - clear and insert clip envelope points for any device parameter
Browser - browse the full category tree, look up items by path or URI, load items onto tracks, and preview items before loading
Example Commands
Here are some examples of what you can ask Claude to do:
"Create an 80s synthwave track" Demo
"Create a Metro Boomin style hip-hop beat"
"Create a new MIDI track with a synth bass instrument"
"Add reverb to my drums"
"Create a 4-bar MIDI clip with a simple melody"
"Get information about the current Ableton session"
"Load a 808 drum rack into the selected track"
"Add a jazz chord progression to the clip in track 1"
"Set the tempo to 120 BPM"
"Play the clip in track 2"
"Automate the filter cutoff on the bass to sweep up over 4 bars"
"Set up a group track with a compressor on the return"
"Duplicate this clip into the arrangement at bar 9"
Troubleshooting
Connection issues: Make sure the Ableton Remote Script is loaded, and the MCP server is configured on Claude
Timeout errors: Try simplifying your requests or breaking them into smaller steps
"Unknown command" errors: The Remote Script folder in Ableton's Remote Scripts directory is out of date -- re-copy the full
AbletonMCP_Remote_Script/directory (see Installation) and restart LiveHave you tried turning it off and on again?: If you're still having connection errors, try restarting both Claude and Ableton Live
Technical Details
Communication Protocol
The system uses a simple JSON-based protocol over TCP sockets:
Commands are sent as JSON objects with a
typeand optionalparamsResponses are JSON objects with a
statusandresultormessageAll Live API access happens on Ableton's main thread; the Remote Script hops there internally and blocks the socket response until the command completes, so the client never has to guess when it's safe to send the next command
Testing
The whole command surface is unit tested without needing a running Ableton Live instance, using lightweight fakes for the Live Object Model (tests/fakes/live_objects.py):
uv pip install -e ".[dev]"
pytestThis runs:
tests/remote_script/- every handler, the dispatcher's error handling, and the socket server, all against fakestests/mcp_server/- the socket client (AbletonConnection) against a real loopback socket, plus every@mcp.toolagainst a fake connection, including a cross-check that every tool sends a command the Remote Script dispatcher actually knows about
tests/integration/ contains opt-in, read-only tests against a real Ableton Live instance (they never create/delete anything, to avoid mutating whatever project happens to be open). They're excluded by default and only run with:
pytest -m integration tests/integrationThey're automatically skipped if nothing is listening on localhost:9877.
Known Limitations
Some things Ableton Live's UI can do aren't exposed through the scriptable Live Object Model at all, so they're out of scope here too:
Freezing/flattening tracks
Reordering tracks or devices within a chain (the LOM has no "move" call for either)
Warp mode/markers and detailed audio-clip editing beyond gain and loop points
Groove pool assignment
Saving/exporting the project (the LOM does not expose a save call)
Anything specific to third-party plugin UIs beyond their exposed parameters
Automation envelope support (clear_clip_envelope/insert_envelope_point(s)) relies on Clip.automation_envelope, which has historically had version-to-version quirks in Live's own API; treat it as best-effort and verify results in the Live UI, especially on older Live versions.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Credits
Original project and the initial Ableton Live <-> MCP integration: Siddharth Ahuja (ahujasid/ableton-mcp)
This fork (architecture rewrite and extended coverage): rephlex187 (rephlex187/Ableton-Live-MCP)
License
MIT -- see LICENSE. Same license as the upstream project; the original copyright notice is preserved as required.
Disclaimer
This is a third-party integration and not made by Ableton.
Available Tools
112 toolsadd_notes_to_clipA
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 dicts, each with pitch, start_time, duration, velocity, mute (and optionally probability, velocity_deviation)
Inputs: ctx (required), notes (required), clip_index (required), track_index (required).
can_redoA
Check whether there is an action available to redo.
Inputs: ctx (required).
can_undoA
Check whether there is an action available to undo.
Inputs: ctx (required).
clear_clip_envelopeC
Clear all automation for a device parameter within a clip.
Inputs: ctx (required), parameter (required), clip_index (required), track_index (required), +1 more.
continue_playbackA
Resume playback from the current position without resetting it.
Inputs: ctx (required).
create_audio_trackB
Create a new audio track in the Ableton session.
Parameters:
index: The index to insert the track at (-1 = end of list)
Inputs: ctx (required), index.
create_clipC
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: ctx (required), clip_index (required), track_index (required), length.
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: ctx (required), index.
create_return_trackB
Create a new return track in the Ableton session.
Parameters:
index: The index to insert the return track at (-1 = end of list)
Inputs: ctx (required), index.
create_sceneA
Create a new scene (index=-1 appends at the end).
Inputs: ctx (required), index.
delete_arrangement_clipB
Delete a clip from the arrangement view by its index (see list_arrangement_clips).
Inputs: ctx (required), clip_index (required), track_index (required).
delete_clipC
Delete the clip in the given track and slot.
Inputs: ctx (required), clip_index (required), track_index (required).
delete_deviceC
Remove a device from a track.
Inputs: ctx (required), track_index (required), device_index (required).
delete_return_trackC
Delete the return track at the given index.
Inputs: ctx (required), return_track_index (required).
delete_sceneB
Delete the scene at the given index.
Inputs: ctx (required), scene_index (required).
delete_trackC
Delete the track at the given index.
Inputs: ctx (required), track_index (required).
duplicate_clipB
Duplicate a clip from one slot to an empty slot on the same track.
Inputs: ctx (required), track_index (required), to_clip_index (required), from_clip_index (required).
duplicate_clip_to_arrangementC
Duplicate a session clip into the arrangement view at the given time (beats).
Inputs: ctx (required), clip_index (required), track_index (required), arrangement_time (required).
duplicate_sceneC
Duplicate the scene at the given index.
Inputs: ctx (required), scene_index (required).
duplicate_trackC
Duplicate the track at the given index.
Inputs: ctx (required), track_index (required).
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: ctx (required), clip_index (required), track_index (required).
fire_sceneC
Fire (launch) the scene at the given index.
Inputs: ctx (required), scene_index (required).
get_application_infoB
Get the running Ableton Live application version.
Inputs: ctx (required).
get_browser_itemC
Look up a single browser item by URI or by path.
Inputs: ctx (required), uri, path.
get_browser_items_at_pathC
Get browser items at a specific path in Ableton's browser.
Parameters:
path: e.g. "instruments/Bass" or any other available browser category
Inputs: ctx (required), path (required).
get_browser_treeA
Get a hierarchical tree of browser categories from Ableton.
Parameters:
category_type: 'all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects'
Inputs: ctx (required), category_type.
get_chain_infoC
Get detailed information about a chain inside a rack device.
Inputs: ctx (required), chain_index (required), track_index (required), device_index (required).
get_clip_infoC
Get detailed information about a clip.
Inputs: ctx (required), clip_index (required), track_index (required).
get_clip_trigger_quantizationC
Get the global clip trigger quantization.
Inputs: ctx (required).
get_crossfaderA
Get the current crossfader position.
Inputs: ctx (required).
get_device_infoC
Get detailed information about a device on a track.
Inputs: ctx (required), track_index (required), device_index (required).
get_device_parameterB
Get a device parameter's current value, range, and quantized states.
Inputs: ctx (required), parameter (required), track_index (required), device_index (required).
get_loopB
Get the current loop state, start, and length (in beats).
Inputs: ctx (required).
get_master_track_infoA
Get detailed information about the master track.
Inputs: ctx (required).
get_master_volumeC
Get the master track's current volume.
Inputs: ctx (required).
get_metronomeB
Get the metronome on/off state.
Inputs: ctx (required).
get_notes_from_clipB
Get the MIDI notes in a clip within the given pitch/time window.
Inputs: ctx (required), clip_index (required), track_index (required), from_time, +3 more.
get_overdubC
Get the current overdub state.
Inputs: ctx (required).
get_positionA
Get the current arrangement playhead position, in beats.
Inputs: ctx (required).
get_return_track_infoC
Get detailed information about a return track.
Inputs: ctx (required), return_track_index (required).
get_scene_infoC
Get detailed information about a scene.
Inputs: ctx (required), scene_index (required).
get_session_infoB
Get detailed information about the current Ableton session.
Inputs: ctx (required).
get_session_record_statusB
Get the current session record status.
Inputs: ctx (required).
get_tempoB
Get the current tempo of the Ableton session.
Inputs: ctx (required).
get_time_signatureB
Get the current time signature of the Ableton session.
Inputs: ctx (required).
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: ctx (required), track_index (required).
get_track_panningC
Get a track's current pan position.
Inputs: ctx (required), track_index (required), track_type.
get_track_routingC
Get a track's input/output routing types, channels, and available options.
Inputs: ctx (required), track_index (required).
get_track_sendsC
List a track's send levels to each return track.
Inputs: ctx (required), track_index (required), track_type.
get_track_volumeC
Get a track's current volume.
Inputs: ctx (required), track_index (required), track_type.
insert_envelope_pointC
Insert a single automation breakpoint for a device parameter within a clip.
Inputs: ctx (required), time (required), value (required), parameter (required), +3 more.
insert_envelope_pointsC
Insert multiple automation breakpoints for a device parameter within a clip.
Parameters:
points: List of {"time": beats, "value": value} dicts
Inputs: ctx (required), points (required), parameter (required), clip_index (required), +2 more.
jump_to_cue_pointC
Jump the playhead to the cue point at the given index.
Inputs: ctx (required), index (required).
list_arrangement_clipsB
List the clips placed in the arrangement view for a track.
Inputs: ctx (required), track_index (required).
list_cue_pointsB
List all cue points in the arrangement.
Inputs: ctx (required).
list_device_parametersC
List all parameters exposed by a device.
Inputs: ctx (required), track_index (required), device_index (required).
list_devicesC
List the devices on a track.
Inputs: ctx (required), track_index (required).
list_drum_padsC
List the populated drum pads of a Drum Rack device.
Inputs: ctx (required), track_index (required), device_index (required).
list_rack_chainsC
List the chains inside a rack device (Instrument/Drum/Audio/MIDI Rack).
Inputs: ctx (required), track_index (required), device_index (required).
list_scenesC
List all scenes in the session.
Inputs: ctx (required).
list_tracksC
List all regular tracks, return tracks, and the master track.
Inputs: ctx (required).
load_browser_itemB
Load any browser item (instrument, effect, sample, or preset) onto a track by URI.
This is the generic form of load_instrument_or_effect -- use it for browser items that aren't instruments or effects (e.g. audio samples).
Inputs: ctx (required), item_uri (required), track_index (required).
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: ctx (required), kit_path (required), rack_uri (required), track_index (required).
load_instrument_or_effectB
Load an instrument or effect onto a track using its browser 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: ctx (required), uri (required), track_index (required).
preview_browser_itemB
Preview-play a browser item (sample/preset) without loading it onto a track.
Inputs: ctx (required), item_uri (required).
quantize_clipC
Quantize the notes in a MIDI clip.
Parameters:
quantization: 4=1 Bar, 5=1/2, 6=1/4, 7=1/8, 8=1/16 (Live's quantization enum)
amount: 0.0-1.0, how strongly to snap notes to the grid
Inputs: ctx (required), clip_index (required), track_index (required), quantization (required), +1 more.
redoB
Redo the last undone action in Ableton Live.
Inputs: ctx (required).
remove_notes_from_clipC
Remove MIDI notes from a clip within the given pitch/time window.
Inputs: ctx (required), clip_index (required), track_index (required), from_time, +3 more.
set_clip_colorC
Set a clip's color by Live's palette color index.
Inputs: ctx (required), clip_index (required), color_index (required), track_index (required).
set_clip_loopingC
Enable or disable looping for a clip.
Inputs: ctx (required), looping (required), clip_index (required), track_index (required).
set_clip_loop_regionB
Set a clip's loop start/end points, in beats.
Inputs: ctx (required), end (required), start (required), clip_index (required), +1 more.
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: ctx (required), name (required), clip_index (required), track_index (required).
set_clip_trigger_quantizationB
Set the global clip trigger quantization.
Parameters:
quantization: 0=None, 1=8 Bars, 2=4 Bars, 3=2 Bars, 4=1 Bar, 5=1/2, 6=1/4, 7=1/8, 8=1/16
Inputs: ctx (required), quantization (required).
set_crossfaderA
Set the crossfader position (-1.0 = full A, 1.0 = full B).
Inputs: ctx (required), value (required).
set_device_activeC
Turn a device on or off.
Inputs: ctx (required), active (required), track_index (required), device_index (required).
set_device_parameterC
Set a device parameter's value.
Parameters:
parameter: Parameter name or index (see list_device_parameters)
value: New value, clamped to the parameter's [min, max] range
Inputs: ctx (required), value (required), parameter (required), track_index (required), +1 more.
set_loopC
Enable or disable arrangement loop.
Inputs: ctx (required), enabled (required).
set_loop_regionB
Set the arrangement loop region, in beats.
Inputs: ctx (required), start (required), length (required).
set_master_volumeA
Set the master track's volume (0.0-1.0).
Inputs: ctx (required), volume (required).
set_metronomeC
Turn the metronome on or off.
Inputs: on (required), ctx (required).
set_overdubC
Enable or disable MIDI overdub recording.
Inputs: ctx (required), enabled (required).
set_positionB
Move the arrangement playhead to the given position, in beats.
Inputs: ctx (required), beats (required).
set_punch_inC
Enable or disable punch-in recording.
Inputs: ctx (required), enabled (required).
set_punch_outB
Enable or disable punch-out recording.
Inputs: ctx (required), enabled (required).
set_scene_colorC
Set a scene's color by Live's palette color index.
Inputs: ctx (required), color_index (required), scene_index (required).
set_scene_nameC
Rename a scene.
Inputs: ctx (required), name (required), scene_index (required).
set_scene_tempoB
Set (or clear, if enabled=False) a scene's tempo lock.
Inputs: ctx (required), tempo (required), scene_index (required), enabled.
set_session_recordC
Arm/disarm session record mode.
Inputs: ctx (required), enabled (required).
set_tempoA
Set the tempo of the Ableton session.
Parameters:
tempo: The new tempo in BPM (20-999)
Inputs: ctx (required), tempo (required).
set_time_signatureC
Set the time signature of the Ableton session.
Parameters:
numerator: Beats per bar (e.g. 4)
denominator: Beat unit (e.g. 4)
Inputs: ctx (required), numerator (required), denominator (required).
set_track_armC
Arm or disarm a track for recording.
Inputs: arm (required), ctx (required), track_index (required).
set_track_colorB
Set a track's color by Live's palette color index.
Inputs: ctx (required), color_index (required), track_index (required).
set_track_crossfader_assignC
Assign a track to a crossfader side.
Parameters:
assign: 'A', 'B', or 'None'
Inputs: ctx (required), assign (required), track_index (required), track_type.
set_track_fold_stateC
Expand or collapse a group track.
Inputs: ctx (required), folded (required), track_index (required).
set_track_input_routing_channelC
Set a track's input routing channel by display name (see get_track_routing).
Inputs: ctx (required), track_index (required), channel_name (required).
set_track_input_routing_typeB
Set a track's input routing type by display name (see get_track_routing).
Inputs: ctx (required), track_index (required), routing_type_name (required).
set_track_monitoring_stateC
Set a track's input monitoring state.
Parameters:
state: 0 = In, 1 = Auto, 2 = Off
Inputs: ctx (required), state (required), track_index (required).
set_track_muteC
Mute or unmute a track.
Inputs: ctx (required), mute (required), track_index (required).
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: ctx (required), name (required), track_index (required).
set_track_output_routing_channelA
Set a track's output routing channel by display name (see get_track_routing).
Inputs: ctx (required), track_index (required), channel_name (required).
set_track_output_routing_typeC
Set a track's output routing type by display name (see get_track_routing).
Inputs: ctx (required), track_index (required), routing_type_name (required).
set_track_panningC
Set a track's pan position.
Parameters:
panning: -1.0 (full left) to 1.0 (full right)
track_type: 'regular', 'return', or 'master'
Inputs: ctx (required), panning (required), track_index (required), track_type.
set_track_sendB
Set a track's send level to a return track.
Parameters:
send_index: Index of the send (matches the return track's index)
value: Send level (0.0-1.0)
Inputs: ctx (required), value (required), send_index (required), track_index (required), +1 more.
set_track_soloC
Solo or unsolo a track.
Inputs: ctx (required), solo (required), track_index (required).
set_track_volumeA
Set a track's volume.
Parameters:
track_index: Index of the track
volume: Volume value (0.0-1.0, where ~0.85 is 0dB)
track_type: 'regular', 'return', or 'master'
Inputs: ctx (required), volume (required), track_index (required), track_type.
start_playbackB
Start playing the Ableton session.
Inputs: ctx (required).
stop_all_clipsA
Stop all currently playing clips across the session.
Inputs: ctx (required).
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: ctx (required), clip_index (required), track_index (required).
stop_playbackC
Stop playing the Ableton session.
Inputs: ctx (required).
stop_previewA
Stop any currently playing browser preview.
Inputs: ctx (required).
toggle_cue_pointC
Create or delete a cue point at the current playhead position.
Inputs: ctx (required).
undoC
Undo the last action in Ableton Live.
Inputs: ctx (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 112 tools
Most tools have clearly distinct purposes, but there are a few overlapping boundaries: set_track_volume/get_track_volume can target the master track while dedicated set_master_volume/get_master_volume also exist, and get_track_info may overlap with get_master_track_info/get_return_track_info. Load_instrument_or_effect and load_browser_item overlap but are explicitly clarified.
All tool names follow a consistent snake_case verb_noun pattern (set_tempo, get_position, create_midi_track, fire_clip, list_devices). Even semantically similar actions use distinct verbs (get/list/start/stop/set/create/delete) with no mixed conventions.
112 tools is an extreme count for an MCP server, far exceeding the well-scoped range. While Ableton Live has a broad feature set, the sheer number overwhelms agents and violates the 50+ threshold for an extreme mismatch.
The tool surface is remarkably extensive, covering transport, tracks, clips, scenes, devices, racks, drum pads, automation envelopes, and browser browsing. However, there are notable gaps such as arrangement record arming, clip moving between slots/tracks, and project-level operations like save/export.
Maintenance
Related MCP Connectors
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
Compose, mix, master and export in Logic Pro, REAPER or Ableton Live by talking to an AI engineer.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Browser DAW for AI assistants: build multitrack songs with MIDI, effects, stems and 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
- AlicenseBqualityDmaintenanceConnects Ableton Live to Claude AI via the Model Context Protocol for prompt-assisted music production and session manipulation. It enables users to create tracks, load instruments, and manage MIDI clips using natural language commands.161MIT
- AlicenseBqualityDmaintenanceConnects Claude AI to Ableton Live via the Model Context Protocol, enabling prompt-assisted music production, track and clip manipulation, and session control.16MIT
- AlicenseBqualityDmaintenanceConnects Ableton Live to Claude AI via the Model Context Protocol, enabling prompt-assisted music production, track creation, and Live session manipulation.16MIT