Skip to main content
Glama

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
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.

OVERWRITES whatever already occupies the destination range on that track (like recording over tape) - this is also the supported way to REPLACE a section. 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_arrangement_clipA

Delete a clip from the Arrangement timeline by its position in get_arrangement_clips' list. NOTE: indices of later clips on the same track shift down by one after each delete - re-read get_arrangement_clips between deletes.

write_automationA

Write clip automation for a device parameter. points = [{"time": beats, "value": v}, ...]. Replaces any existing envelope for that parameter on the clip.

clear_automationB

Clear the clip automation envelope for a device parameter.

get_browser_treeA

List the browser's top-level categories and their immediate entries. NOTE: returns a shallow listing (no deep hierarchy) - drill down with get_browser_items_at_path("instruments"), ...("sounds/Piano & Keys"), etc., or skip straight to search_browser when you know a name. category_type: "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')

search_browserA

Search the Ableton browser by display name (case-insensitive substring). Returns loadable items with their URIs for load_instrument_or_effect / load_device_to_master / load_device_to_return.

category: optionally limit to one of "instruments", "sounds", "drums", "audio_effects", "midi_effects", "packs" (default: search all of them). Prefer this over walking get_browser_items_at_path when you know a name.

create_clipA

Create an empty MIDI clip in a Session slot. Fails if the slot already has a clip (pick another clip_index or delete_clip first) or the track is an audio track. length is in beats (4.0 = one 4/4 bar). Typical chain: create_clip -> add_notes_to_clip -> fire_clip or duplicate_to_arrangement.

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_clipA

REPLACES the clip's ENTIRE note content with the given notes (kept name for upstream compatibility). Use edit_notes to add/remove a subset.

notes: list of {"pitch": 0-127 (60 = C3 in Live's naming), "start_time": beats from clip start (float), "duration": beats, "velocity": 1-127, "mute": bool}. Precondition: the clip must exist (create_clip first).

set_clip_nameC

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

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_clipA

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

delete_clipB

Delete a Session-view clip from a clip slot.

get_clip_notesB

Read back all MIDI notes in a Session clip.

get_groovesA

List grooves in the Groove Pool (index + name) and the global groove amount.

set_clip_grooveA

Attach a Groove Pool groove to a clip by index (swing/timing feel). Pass no groove_index to clear.

quantize_clipA

Quantize a MIDI clip. grid: quarter/eighth/eighth_triplet/sixteenth/sixteenth_triplet/thirtysecond. amount 0.0-1.0 (use <1.0 to humanize toward the grid without full snap).

set_clip_audioA

Set audio-clip properties. gain 0-1, pitch_coarse semitones (-48..48), pitch_fine cents, warping on/off, warp_mode 0=Beats 1=Tones 2=Texture 3=Re-Pitch 4=Complex 6=Complex Pro.

set_clip_loopC

Set a clip's loop braces (start/end beats), start marker, and looping on/off.

edit_notesA

Edit a subset of notes in a MIDI clip without rewriting all of them. add = [{pitch,start_time,duration,velocity,mute}], remove = [{pitch,start_time}] (matched by pitch+start).

set_clip_colorB

Set a clip's color by index (0-69 in Live's palette).

get_clip_infoA

Full clip state: loop points, markers, playing position, per-clip time signature; for audio clips also file path, gain display, and warp markers.

duplicate_clip_toA

Copy a Session clip to any other track/scene slot (overwrites the destination slot). The cross-track way to build variations.

clip_operationA

Structural clip edits. op: "duplicate_loop" (double the loop, duplicating notes - extend 2 bars to 4 before adding variation), "crop" (discard material outside the loop), "duplicate_region" (copy notes from region_start/region_length to destination_time, optionally transposing by transposition_amount semitones; pitch=-1 means all pitches).

set_clip_signatureA

Set a clip's own time signature (polymeter / odd-bar loops).

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

get_device_parametersA

List all parameters of a device on a track: names, values, ranges, display strings.

set_device_parameterA

Set a device parameter by name or index. Value is clamped to the parameter's min/max.

set_device_enabledC

Enable or bypass a device on a track.

load_device_to_returnB

Load a device/effect from the browser onto a return track.

load_device_to_masterA

Load a device/effect from the browser onto the Master/Main track (e.g. a limiter for mastering).

get_master_device_parametersA

List parameters of a device on the Master track.

set_master_device_parameterC

Set a parameter on a Master-track device by name or index.

set_return_device_parameterB

Set a parameter on a Return-track device by name or index.

get_return_device_parametersA

List parameters of a device on a Return track: names, values, min/max, display strings. Call before set_return_device_parameter.

get_rack_chainsA

List an Instrument/Effect Rack's chains and the devices inside each - previously unreachable nested devices. Use set_chain_device_parameter to control them.

set_chain_device_parameterA

Set a parameter on a device INSIDE a rack chain (indices from get_rack_chains). Values clamp to the parameter's native range.

get_drum_padsA

List a Drum Rack's occupied pads (MIDI note, name, mute, solo).

set_drum_padA

Mute/solo/rename a single Drum Rack pad by its MIDI note (e.g. 36=kick). Per-pad muting = instant beat variations without touching the notes.

rack_variationA

Rack macro snapshots. action: "store" (save current macros as a variation), "recall" (restore variation index), "randomize" (randomize all macro knobs - instant sound-design exploration).

generate_drum_patternA

Write a genre drum pattern into a Session clip on a Drum Rack track. REPLACES the clip's notes if the clip exists.

style: lofi | boom_bap | house | techno | trap | dnb | ambient. swing: beats to delay 8th-note offbeats (0.0-0.1; 0.06 ≈ MPC-ish). humanize: max random velocity deviation (0 = machine-perfect). Uses the standard Live drum map (36 kick, 38 snare, 42/46 hats...).

generate_chord_progressionB

Write a chord progression into a Session clip. REPLACES existing notes.

progression: dash- or comma-separated symbols, e.g. "Am9-Fmaj7-Cmaj9-G13" or "Dm7, G7, Cmaj7". Qualities: maj7/m7/m9/9/13/7#9/sus4/dim/add9 etc. rhythm: "held" (one chord per slot), "stabs" (hit on 1 and the and-of-3), "quarters" (four hits per bar, velocity-tapered). strum: seconds-ish stagger between chord tones (0 = block chord).

generate_basslineA

Write a bassline following a chord progression. REPLACES existing notes.

progression: same syntax as generate_chord_progression. style: "roots" (long root notes), "root_fifth" (root + fifth bounce), "walking" (root, approach tones), "eighth_pump" (driving 8ths on the root). octave: 1 = very low (C1=24), 2 = typical bass (C2=36).

write_drum_gridA

Write drums from an ASCII grid (16th-note steps). REPLACES existing notes.

grid: one line per instrument: "name: pattern" where pattern chars are 'X' (accent, vel 105), 'x' (normal, 85), 'o' (soft, 55), '.' or '-' (rest). Line length = number of 16th steps (16 = one 4/4 bar; 32 = two bars...). Instruments: kick snare rim clap chat phat ohat ltom mtom htom crash ride perc shaker, or a raw MIDI number ("36: x...").

Example (one bar of lofi): kick: X..x......X..... snare: ....x.......x... chat: x.o.x.o.x.o.x.o.

setup_sessionA

Bootstrap a session in one call: set tempo and create named MIDI tracks, optionally loading an instrument found by name for each.

tracks: [{"name": "Drums", "instrument": "drum kit"}, {"name": "Bass", "instrument": "upright bass"}, ...]. "instrument" is a search_browser query (best match is loaded); omit it to create an empty track. Returns a per-track report with the loaded item names.

get_session_infoB

Get detailed information about the current Ableton session

Parameters:

set_tempoA

Set the tempo of the Ableton session.

Parameters:

  • tempo: The new tempo in BPM

start_playbackA

Start Arrangement playback from the current song time. NOTE: the response reports the PRE-command state (may say playing=false right after starting) - confirm with get_session_info.

stop_playbackA

Stop playback. NOTE: the response reports the PRE-command state - confirm with get_session_info.

create_sceneA

Create a new scene (row of clip slots). index -1 appends at the end.

create_locatorB

Create an arrangement locator (marker) at a beat time, optionally named.

fire_sceneB

Launch a scene (fires every clip in that row).

set_scene_nameC

Rename a scene.

set_time_signatureC

Set the song time signature (e.g. 4/4, 3/4, 6/8).

set_loopB

Set the arrangement loop region (in beats) and enable/disable looping.

undoB

Undo the last action in Live.

redoA

Redo the last undone action in Live.

batch_commandsA

Run several commands in ONE round-trip and ONE undo step (atomic-ish: stops at the first error; completed steps are a single undo away).

commands = [{"type": "", "params": {...}}, ...]. Command names match the MCP tool names (the few that differ are auto-translated), e.g. [{"type": "set_tempo", "params": {"tempo": 80}}, {"type": "create_midi_track", "params": {"index": -1}}]. Prefer this for multi-step edits: fewer round-trips, one undo reverts all.

capture_midiA

Grab recently played MIDI into a new clip (Live's Capture MIDI). Requires that MIDI was recently played into an armed/monitored track.

set_song_scaleA

Set the song's key context. root_note 0-11 (0=C, 2=D...), scale_name e.g. "Major", "Minor", "Dorian". Read current values via get_session_info.

set_metronomeA

Turn Live's metronome click on/off.

stop_all_clipsA

Stop every playing Session clip (does not stop the transport).

back_to_arrangerA

Return playback control to the Arrangement (after Session clips have overridden arrangement content - the orange 'Back to Arrangement' state).

set_record_modeB

Toggle Arrangement record. With record_mode on, start_playback records armed tracks into the Arrangement.

set_session_recordA

Toggle Session record (records into armed tracks' selected Session slots; also enables MIDI overdub into playing clips).

continue_playingA

Resume playback from the current position (start_playback restarts from the playhead's last start point instead).

set_clip_trigger_quantizationA

Global launch quantization for firing clips/scenes. 0=None (instant, good for auditioning), 4=1 bar (default), 7=1/4 note, 13=1/32.

delete_sceneA

Delete a scene (row). Later scene indices shift down by one.

duplicate_sceneB

Duplicate a scene with all its clips - instant section variation.

capture_and_insert_sceneA

Snapshot the currently playing Session clips into a new scene - the 'keep that combination' workflow.

get_locatorsA

List arrangement locators (index, name, beat time) for structure-aware navigation. Jump with jump_to_locator.

jump_to_locatorA

Move the playhead to a locator (index from get_locators).

re_enable_automationA

Restore automation that was overridden by manual parameter changes. IMPORTANT: setting a device parameter that has an envelope overrides the envelope until this is called.

set_arrangement_overdubA

Toggle arrangement overdub: recording layers MIDI onto existing arrangement clips instead of replacing them.

set_session_automation_recordA

Toggle recording of parameter changes into Session clip envelopes - an alternative to write_automation for captured knob rides.

trigger_session_recordA

Start Session recording into armed tracks; record_length in beats records a fixed-length loop (e.g. 16.0 = 4 bars) then auto-switches to playback.

get_track_infoB

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)

set_track_nameA

Set the name of a track.

Parameters:

  • track_index: The index of the track to rename

  • name: The new name for the track

delete_trackA

Delete a track. NOTE: indices of all later tracks shift down by one.

set_track_volumeA

Set track volume. Range 0.0-1.0 where 0.85 = 0 dB (unity gain).

set_track_panC

Set track panning, -1.0 (left) to 1.0 (right).

set_track_muteC

Mute or unmute a track.

set_track_soloC

Solo or unsolo a track.

set_master_volumeA

Set the Main/Master track volume. Range 0.0-1.0 where 0.85 = 0 dB.

set_sendA

Set a track's send level (send_index 0 = Return A, 1 = Return B, ...). Range 0.0-1.0.

create_return_trackA

Create a new return track (a send bus, e.g. for shared reverb or delay).

create_audio_trackB

Create a new audio track. index -1 appends at the end.

get_return_tracksA

List return tracks (index + name).

set_track_colorA

Set a track's color by index (0-69 in Live's palette).

duplicate_trackB

Duplicate a track along with its devices and clips.

set_track_armA

Arm or disarm a track for recording (fails on tracks that can't be armed, e.g. group/return tracks).

get_track_metersA

Read a track's output level meters (post-fader): left/right 0.0-1.0ish (0.85 ≈ 0 dB, like faders). Poll during playback to judge balance/clipping - this is how you 'listen' without exporting.

get_master_metersA

Read the Master track's output meters - values pinned near 1.0 during playback mean the master is clipping; pull set_master_volume down.

get_track_routingA

Read a track's input/output routing (current + all available options) and monitoring state (0=In, 1=Auto, 2=Off). Routing options are identified by display_name - use those strings with set_track_routing.

Prompts

Interactive templates invoked by user choice

NameDescription
make_a_beatGuided workflow: compose a beat from scratch in the current Live set.
mix_and_masterGuided workflow: balance, bus processing, and in-Live mastering.

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/wstierhout/ableton-live-mcp'

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