Ableton MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_session_infoB | Get detailed information about the current Ableton session |
| get_track_infoB | Get detailed information about a track. Parameters:
|
| get_master_track_infoA | Convenience: get the master track's info (devices, volume, panning). |
| create_midi_trackB | Create a new MIDI track in the Ableton session. Parameters:
|
| set_track_nameA | Set the name of a track. Parameters:
|
| create_clipA | Create a new MIDI clip in the specified track and clip slot. Parameters:
|
| add_notes_to_clipB | Add MIDI notes to a clip. Parameters:
|
| set_clip_nameB | Set the name of a clip. Parameters:
|
| set_tempoA | Set the tempo of the Ableton session. Parameters:
|
| load_instrument_or_effectA | Load an instrument or effect onto a track using its URI. Parameters:
|
| fire_clipA | Start playing a clip. Parameters:
|
| stop_clipB | Stop playing a clip. Parameters:
|
| start_playbackA | Start playing the Ableton session. |
| stop_playbackA | Stop playing the Ableton session. |
| get_browser_treeA | Get a hierarchical tree of browser categories from Ableton. Parameters:
|
| get_browser_items_at_pathA | Get browser items at a specific path in Ableton's browser. Parameters:
|
| load_drum_kitB | Load a drum rack and then load a specific drum kit into it. Parameters:
|
| get_device_parametersA | List every tunable parameter on a device. Returns each parameter's index, name, current value, min, max, and (for quantized parameters like enums) the available value items. Use this BEFORE set_device_parameter so you know which index to address and what range is valid. Parameters:
|
| set_device_parameterA | Set a parameter on a device to a specific value. Value is clipped to the parameter's min..max if out of range. Call get_device_parameters first to discover the parameter index and valid range. Parameters:
|
| set_track_volumeA | Set a track's volume. Live uses a 0.0-1.0 normalized scale (0.85 ≈ 0 dB / unity). Parameters:
|
| set_track_muteA | Mute or un-mute a track. track_kind: 'regular' (default) or 'return'. Master cannot be muted. |
| set_track_soloA | Solo or un-solo a track. track_kind: 'regular' (default) or 'return'. Master cannot be soloed. |
| set_track_armA | Arm or un-arm a track for recording. Fails on tracks that cannot be armed (e.g. group tracks). |
| delete_trackA | Delete a track from the session. DESTRUCTIVE — cannot be undone via MCP. On a trial license with save disabled, the track cannot be recovered. |
| delete_clipA | Delete a clip from a Session-view clip slot. No-op if the slot is empty. |
| delete_deviceA | Delete a device from a track's device chain. Parameters:
|
| create_audio_trackA | Create a new audio track in the session. Parameters:
|
| set_track_panA | Set a track's stereo pan position. Parameters:
|
| set_track_sendA | Set how much of a track's signal is sent to a return track. Send indices match the order of return tracks in the session (A=0, B=1, ...). Use get_session_info to see how many return tracks exist. Parameters:
|
| import_audio_fileA | Load an audio file from disk into a Session-view clip slot on an audio track. LIMITATION: Live's Python API cannot load arbitrary file paths directly. The file must be reachable through Live's browser — i.e., either under ~/Music/Ableton/User Library/ (always reachable) or inside a folder that's been added as a Place in Live's browser sidebar (the '+ Add Folder' button). If the file isn't in a browser-reachable location, this returns a clear error explaining what to do. The fallback is always to drag the file into the slot manually from Finder. Parameters:
|
| place_clip_in_arrangementA | Drop a Session-view MIDI clip onto the Arrangement timeline at a specific beat position. The source Session clip is copied (not moved) — it remains in its slot and the new arrangement clip is an independent copy. Beat positions: position=0 is bar 1 beat 1, position=16 is bar 5 beat 1 (16 beats = 4 bars in 4/4), etc. Currently MIDI tracks only. Audio tracks will raise an error. Parameters:
|
| clear_arrangement_clipsA | Delete ALL arrangement clips from a track. Destructive — for redoing arrangement. Parameters:
|
| get_arrangement_clipsA | List all clips currently on a track's Arrangement timeline, with positions, lengths, and names. Use this to verify arrangement work, find gaps, or confirm placements. Parameters:
|
| set_locatorA | Add or update a named locator (section marker) at a specific beat position on the Arrangement timeline. Use for section labels: "Intro", "Build 1", "Drop 1", "Break", "Drop 2", "Outro". If a locator already exists at this position, its name is updated. Parameters:
|
| clear_locatorsA | Delete ALL locators (cue points) from the song. Destructive — for redoing locator placement. |
| set_loopA | Set the Arrangement view loop region and toggle whether it's active. Useful for previewing specific sections of the arrangement (e.g. just the drop, just the build). Parameters:
|
| get_device_routingsA | Inspect available input routings for a device (used to discover sidechain sources). Returns the available routing types and channels for the device, plus current selections. Use this BEFORE set_device_routing so you know what type/channel names are valid. Parameters:
|
| set_device_routingA | Set a device's input routing (e.g., select a sidechain audio source). For sidechain on Compressor/Gate: typical usage is to set the routing channel to another track's name (e.g., "5-Kick"). Names are matched case-insensitively via substring. Call get_device_routings first to discover the exact type/channel names available. Parameters:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 38 tools
Most tools clearly target distinct resources and actions (tracks, clips, devices, transport, arrangement). A few overlaps exist, such as get_master_track_info duplicating get_track_info with track_kind='master', and load_drum_kit being a specialized version of load_instrument_or_effect, but descriptions help clarify the intended usage.
The naming is largely consistent with a verb_noun pattern (get_*, set_*, create_*, delete_*). Minor deviations include 'fire_clip' instead of 'play_clip' or 'start_clip', and 'add_notes_to_clip' uses 'add' instead of 'create'. These are readable but not perfectly uniform.
With 38 tools, the server exceeds the typical MCP scope and falls into the 'too many' category (>25). While the domain of DAW control is broad, many tools could be consolidated or omitted (e.g., get_master_track_info is redundant). This number may overwhelm agents and increase selection difficulty.
The tool surface covers core Ableton workflows well: session transport, track management, clip creation and editing, device control, browser navigation, and arrangement placement. Minor gaps exist, such as no way to delete a single arrangement clip (only clear all), no scene management, and no undo/redo, but agents can work around these.