Skip to main content
Glama
RichieMiller-HU

Ableton MCP Extended

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_session_infoB

Get detailed information about the current Ableton session

Parameters:

get_track_infoA

Get detailed information about a specific track in Ableton.

Parameters:

  • track_index: The index of the track to get information about

create_midi_trackA

Create a new MIDI track in the Ableton session.

Parameters:

  • index: The index to insert the track at (-1 = end of list)

create_audio_trackA

Create a new audio track in the Ableton session.

Parameters:

  • index: The index to insert the track at (-1 = append at end)

create_return_trackB

Create a new return (send/FX) track in the Ableton session.

Return tracks are appended at the end of the return track list.

Parameters:

set_track_nameC

Set the name of a track.

Parameters:

  • track_index: The index of the track to rename

  • name: The new name for the track

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)

create_audio_clipA

Create a new audio clip in an audio track's clip slot by importing a file.

Requires Ableton Live 12.0.5 or newer — the underlying ClipSlot.create_audio_clip Live API was introduced in 12.0.5 and is not available in earlier 12.0.x releases.

Parameters:

  • track_index: The index of the audio track to create the clip in

  • clip_index: The index of the clip slot to create the clip in

  • path: Absolute path to a supported audio file (e.g. a .wav). The target track must be an audio track and the clip slot must be empty.

add_notes_to_clipC

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 dictionaries, each with pitch, start_time, duration, velocity, and mute

set_clip_nameA

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

delete_clipB

Delete the clip in the specified track/clip slot (empties the slot).

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot to empty

clear_clip_notesA

Remove ALL MIDI notes from a clip while keeping the clip itself (so you can rewrite it from scratch without deleting/recreating the slot).

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

load_sample_to_drum_padA

Load a browser sample (by its URI) onto a specific pad of a Drum Rack that is already on the track. This lets you build a custom drum kit pad-by-pad.

Prerequisite: a Drum Rack must already be loaded on the track (use load_instrument_or_effect with the Drum Rack URI 'query:Drums#Drum%20Rack', or any drum kit). Get the sample's URI from get_browser_items_at_path.

Parameters:

  • track_index: The index of the track holding the Drum Rack

  • pad_note: MIDI note number of the target pad (e.g. 36=C1, 38=D1, 42=F#1)

  • item_uri: Browser URI of the sample to load onto that pad

set_tempoA

Set the tempo of the Ableton session.

Parameters:

  • tempo: The new tempo in BPM

load_instrument_or_effectA

Load an instrument or effect onto a track using its 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')

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

stop_clipC

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

start_playbackA

Start playing the Ableton session.

Parameters:

stop_playbackC

Stop playing the Ableton session.

Parameters:

get_browser_treeB

Get a hierarchical tree of browser categories from Ableton.

Parameters:

  • category_type: Type of categories to get ('all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects')

get_browser_items_at_pathA

Get browser items at a specific path in Ableton's browser.

Parameters:

  • path: Path in the format "category/folder/subfolder" where category is one of the available browser categories in Ableton

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')

switch_to_arrangement_viewA

Switch Ableton's main window to the Arrangement view.

Parameters:

set_arrangement_timeA

Move the arrangement playhead to a specific position.

Parameters:

  • time: Position in beats from the start of the arrangement (e.g. 8.0 = bar 3 in 4/4)

get_arrangement_clipsA

List all clips placed in the Arrangement timeline for a track.

Returns each clip's name, start_time, end_time, length, and type.

Parameters:

  • track_index: The index of the track to inspect

duplicate_to_arrangementA

Copy a Session-view clip into the Arrangement timeline.

Uses Live's track.duplicate_clip_to_arrangement() API (Live 11 / 12). The clip is placed at destination_time beats from the start of the arrangement on the same track it lives in.

Typical workflow:

  1. create_clip / add_notes_to_clip to build a Session clip

  2. Call duplicate_to_arrangement once per bar/section you need

  3. Call switch_to_arrangement_view to confirm the result in Live

Parameters:

  • track_index: Index of the track that owns the Session clip

  • clip_index: Index of the clip slot in that track (Session view)

  • destination_time: Beat position in the arrangement to place the clip (e.g. 0.0 = start, 8.0 = bar 3 in 4/4)

delete_trackA

Delete a track by its index. Indices of later tracks shift down by one.

Parameters:

  • track_index: The index of the track to delete

create_sceneA

Create a new scene (Session-view row). index=-1 appends at the end.

Parameters:

  • index: The position to insert the scene at (-1 = end)

set_scene_nameB

Set the name of a scene (Session-view row), e.g. 'INTRO', 'HOOK'.

Parameters:

  • scene_index: The index of the scene

  • name: The new scene name

duplicate_clip_to_sceneA

Copy a clip (MIDI or AUDIO) from one slot to another empty slot on the SAME track. This is how you place a loop into several scenes for live performance — and unlike create_clip it works for audio clips too.

Parameters:

  • track_index: The track that owns the clip

  • src_clip_index: The slot index to copy FROM (must contain a clip)

  • dest_clip_index: The slot index to copy TO (must be empty)

set_track_colorB

Set a track's color. Pass either an int 0xRRGGBB (e.g. 16711680 for red) or a [r, g, b] list with 0-255 values.

Parameters:

  • track_index: The index of the track

  • color: 0xRRGGBB int, or [r, g, b]

set_track_monitorA

Set a track's input monitoring. Use 'in'/0 to always hear the live input (e.g. a mic), 'auto'/1 for monitor-when-armed, 'off'/2 for none.

Parameters:

  • track_index: The index of the track

  • state: 'in'|'auto'|'off' or 0|1|2

set_track_armB

Arm or disarm a track for recording / input monitoring.

Parameters:

  • track_index: The index of the track

  • armed: True to arm, False to disarm

set_track_volumeA

Set a track's mixer fader. value is the normalized 0.0-1.0 position where ~0.85 is 0 dB and 1.0 is +6 dB (the fader max). For bigger gain than the fader allows, add a Utility device and use set_device_parameter on its Gain.

Parameters:

  • track_index: The index of the track

  • value: Normalized volume 0.0-1.0

get_device_parametersA

List every parameter of a device (index, name, current value, min, max). Use this before set_device_parameter to find the right parameter and its range.

Parameters:

  • track_index: The track holding the device

  • device_index: The device's index in that track's chain (0 = first)

set_device_parameterA

Set a device parameter (e.g. a Utility's Gain, a Compressor's Threshold) by its index or its name. Call get_device_parameters first to see names/ranges. The value is clamped to the parameter's min/max.

Parameters:

  • track_index: The track holding the device

  • device_index: The device's index in that track's chain (0 = first)

  • parameter: Parameter index (int) or exact parameter name (str)

  • value: The value to set (in the parameter's own units, e.g. dB for Gain)

get_clip_notesA

Read the actual MIDI notes of a clip (pitch, start_time, duration, velocity, mute) so you can see its real chords/melody. MIDI clips only.

Parameters:

  • track_index: The track holding the clip

  • clip_index: The clip slot index (Session scene - 1)

update_notesA

Surgically modify EXISTING notes in a MIDI clip without clearing/rewriting it. Each update matches notes by pitch + start_time (within tolerance) and applies the new_* fields. Much safer than clear_clip_notes + add_notes_to_clip.

Parameters:

  • track_index: The track holding the clip

  • clip_index: The clip slot index

  • updates: List of dicts, each with: pitch (int, required), start_time (float, required, beats), tolerance (float, optional, default 0.05 beats), new_velocity / new_duration / new_start_time / new_pitch / new_mute (optional)

remove_notes_in_rangeA

Surgically remove notes inside a pitch/time window of a MIDI clip, keeping everything else (unlike clear_clip_notes which wipes all).

Parameters:

  • track_index / clip_index: which clip

  • from_pitch: lowest MIDI pitch to remove (default 0)

  • pitch_span: how many pitches up from from_pitch (default 128 = all)

  • from_time: window start in beats (default 0.0)

  • time_span: window length in beats (-1 = to end of clip)

set_clip_loopA

Set a clip's loop and start/end marker properties (in beats). Only the parameters you pass are changed.

Parameters:

  • track_index / clip_index: which clip

  • looping: enable/disable looping

  • loop_start / loop_end: loop brace positions in beats

  • start_marker / end_marker: clip play start/end in beats

quantize_clipA

Quantize a MIDI clip's notes to a grid.

Parameters:

  • track_index / clip_index: which clip

  • grid: 1=1/4, 2=1/8, 3=1/8T, 4=1/8+T, 5=1/16 (default), 6=1/16T, 7=1/16+T, 8=1/32

  • amount: 0.0-1.0 strength (1.0 = hard snap; 0.5 keeps half the human feel)

get_drum_pad_namesA

List which MIDI note triggers which drum pad/instrument on the first Drum Rack of a track (e.g. 36=Kick 808, 38=Snare...). Call this before writing/fixing drum MIDI so you know what each pitch plays.

Parameters:

  • track_index: The track holding the Drum Rack

bounce_midi_clip_to_audioA

Bounce (record) a MIDI clip's audible output to an audio clip, in REAL TIME via resampling-record (Live's Freeze/Flatten is not automatable). Creates an audio track (or uses dest_track_index), routes the MIDI track's Post FX output into it, records the clip in the same scene row, and auto-stops after clip length + tail. Returns immediately — wait the reported duration_seconds, then verify with get_track_info / get_arrangement_clips.

Playback is audible during the bounce; don't change the session while recording.

Parameters:

  • track_index: source MIDI track

  • clip_index: source clip slot (recording lands in the SAME slot row on the audio track)

  • extra_tail_beats: extra beats recorded for reverb/delay tails (default 4)

  • dest_track_index: existing audio track to record into (-1 = create new '[BOUNCE]' track)

get_scene_namesA

List all Session scenes: index, name, tempo hint (if the scene name sets one) and whether the scene is empty. Use before firing/organizing scenes.

undoA

Undo the last action in Ableton Live (equivalent to Cmd+Z). Returns can_undo and can_redo flags after the operation so the caller knows whether further undo/redo steps are available.

redoA

Redo the last undone action in Ableton Live (equivalent to Cmd+Shift+Z). Returns can_undo and can_redo flags after the operation.

set_track_panA

Set a track's stereo panning position.

Parameters:

  • track_index: The index of the track

  • pan: Pan value -1.0 (full left) to 1.0 (full right); 0.0 = center

set_track_muteB

Mute or unmute a track.

Parameters:

  • track_index: The index of the track

  • mute: True to mute, False to unmute

set_track_soloB

Solo or unsolo a track.

Parameters:

  • track_index: The index of the track

  • solo: True to solo, False to unsolo

get_return_tracksA

List all return tracks (A, B, C…) with their names and loaded devices. Use before set_send_level to know available return track indices.

set_send_levelA

Set a track's send level to a return track.

Parameters:

  • track_index: The index of the source track

  • send_index: The index of the send (0 = first return track / Send A)

  • level: Normalized level 0.0-1.0 (0.0 = off, 0.85 ~ 0 dB, 1.0 = max)

get_metersA

Snapshot the current output meter levels for every track and the master. Returns output_meter_left and output_meter_right (0.0-1.0 linear peak) for each track, plus output_meter_level where available. Call repeatedly during playback to poll levels; each call is a single instantaneous sample.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/RichieMiller-HU/ableton-mcp-extended'

If you have feedback or need assistance with the MCP directory API, please join our Discord server