Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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 drives the user's open Ableton Live Set in Session View. Assume the user is a beginner.

  • Before changing anything, call live_status, then get_set_overview. Call get_set_overview again before you use track, slot or scene indices from an older answer.

  • After each change, say in one or two plain sentences what changed and what the user will hear. Explain each music word (beat, bar, scale, chord, root...) the first time you use it. Never paste tool JSON to the user.

  • Name tracks, clips and scenes by their role (Drums, Bass, Chords, Verse), and colour them with set_label.

  • Live Lite allows 8 tracks and 16 scenes (see limits in live_status): reuse empty ones before you create more.

  • Each change is one undo step. When the user dislikes a result, offer undo_last.

  • Prefer the one-call tools when they fit: create_drum_pattern, create_bassline, create_chord_progression, load_instrument, set_scale. Use write_notes for anything they cannot do.

  • Live cannot be saved from here. When you finish a task that changed the Set, end with one short reminder to press Cmd+S (Ctrl+S on Windows). Do not remind after each tool call, and do not remind when nothing changed.

Guided lessons, in order (MCP prompts the user starts from the / menu): lesson-first-beat, lesson-notes-and-scales, lesson-chords, lesson-bassline, lesson-melody, lesson-song-structure. explain-my-set describes the Set without changing it.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Tools

Functions exposed to the LLM to take actions

NameDescription
live_statusA

Check that Live is reachable. Returns the Live version, edition ("Lite", "Standard", "Suite") and supported features. Call this first. limits gives the edition's caps: audio_midi_tracks and scenes (null = no cap).

get_set_overviewA

Describe the open Set: tempo, time signature, playing state, and every track with its index, type, devices and clip slots. Indices are 0-based. drum_pads lists {note, name} for each used pad of the track's Drum Rack (null when the track has none): use those notes as pitches in write_notes. Each track's mix is {volume_db, pan, mute, solo, sends}: dB values with null = -inf, pan -50..50 (50L..50R), sends keyed by return letter ("A", "B"...). scenes lists {index, name}; return_tracks lists {send, name, devices}.

create_midi_trackA

Add a new MIDI track. index -1 puts it at the end. Live Lite allows only 8 audio+MIDI tracks, so reuse an existing empty track when you can.

create_midi_clipB

Create an empty MIDI clip in an empty clip slot of a MIDI track. Length is in beats (4 beats = 1 bar in 4/4).

delete_trackA

Delete a track with its clips and devices. One undo_last restores it. Use it to free a track under Live Lite's 8-track limit. Group tracks are refused. Later tracks' indices shift down by one, so call get_set_overview again before the next delete.

delete_clipA

Delete the clip in this clip slot. One undo_last restores it.

create_sceneA

Add a scene (a row of clip slots across all tracks). index -1 or none puts it at the end. copy_of copies that scene with all its clips and puts the copy directly below it; later scenes shift down by one. Give index or copy_of, not both. Live Lite allows only 16 scenes, so name and reuse empty scenes when you can.

copy_clipA

Copy the clip in track/slot to the empty slot to_track/to_slot, e.g. to reuse a loop in another scene. An occupied target is refused: delete_clip it first. A MIDI clip needs a MIDI target track.

write_notesA

Replace ALL notes in the clip with these notes. To edit existing notes, read_notes first and send the full changed list. Times and durations are in beats (1.0 = one quarter note). For a Drum Rack, take pitches from drum_pads in get_set_overview. The result's notes_outside_clip counts notes that start at or after the clip length; they never play (assumes the loop starts at beat 0).

read_notesA

Return the clip's length and its notes, in the same shape write_notes takes, sorted by start_time then pitch. Mute and probability are not returned, so a read_notes + write_notes round trip resets them.

set_scaleA

Set the Set's key, e.g. root "A", scale "Minor", and turn on Scale Mode so Live's MIDI editor highlights the scale's notes. create_bassline and create_chord_progression use this key when you leave root and scale out.

create_drum_patternA

Write a drum beat in a style, repeated over bars. The track must hold a Drum Rack kit; hits go to the pads that match each voice (kick, snare, hats...), and voices the kit lacks are listed in missing_voices. layers add Euclidean rhythms, e.g. {voice: "perc", pulses: 3, steps: 8}; a layer replaces the style's part for that voice. style null with layers gives layers only. The result's about explains the style for a beginner. Destination: track + slot writes a clip into Live and replaces any clip in that slot (one undo_last restores it); file_name instead writes a 120 BPM .mid file to ~/Music/ableton-mcp/midi/ and works with Live closed. Never creates tracks. 4/4 only.

create_basslineA

Write a bassline in a key. degrees are scale degrees, one per bar, cycled (default [1]; e.g. [1, 6, 4, 5]). bars defaults to len(degrees). root and scale default to the Set's scale (see set_scale); without Live, give both. octave 1 puts A at MIDI 45. The track needs an instrument (e.g. a bass synth), or the clip plays silent. Destination: track + slot writes a clip into Live and replaces any clip in that slot (one undo_last restores it); file_name instead writes a 120 BPM .mid file to ~/Music/ableton-mcp/midi/ and works with Live closed. Never creates tracks. 4/4 only.

create_chord_progressionA

Write held root-position chords built from scale degrees, e.g. [1, 6, 4, 5] in C Major gives C Am F G. The result's chords names each chord. Needs a 7-note scale (not the pentatonics or Minor Blues). root and scale default to the Set's scale (see set_scale); without Live, give both. The track needs an instrument. Destination: track + slot writes a clip into Live and replaces any clip in that slot (one undo_last restores it); file_name instead writes a 120 BPM .mid file to ~/Music/ableton-mcp/midi/ and works with Live closed. Never creates tracks. 4/4 only.

browse_libraryA

List one level of Live's browser. root is one of: instruments, drums, audio_effects, midi_effects, sounds, samples, clips, packs, user_library, plugins, max_for_live, current_project. path is the folder names to open, e.g. []. Navigate one level at a time: add one folder name per call.

load_from_libraryA

Load a browser item onto a track, e.g. a drum kit from root "drums". path must end at an item that browse_library marked is_loadable. Returns the names of the devices that were added and device_index, the position of the first one (use [device_index] as device_path in read_device). Loading an instrument replaces the track's current instrument; undo_last restores it. For instruments and their presets, load_instrument does this in one call.

load_instrumentA

Put an instrument on a MIDI track, replacing its current instrument; undo_last restores it. Without preset you get the bare device. preset is a preset name from the kind's browser folders, e.g. drift "Deep Bass" or drum_rack "808 Core Kit" (a kit); case and the .adv/.adg ending are ignored. Live Lite has drift, simpler, impulse, drum_rack, drum_sampler and instrument_rack only; other kinds are refused there. Returns the added devices, device_index (for read_device) and the browser root and path that were loaded.

read_deviceA

Read one device's parameters: {index, name, value, min, max, display, quantized, enabled}; switches (quantized) also list their choices in items. display is Live's own text for the value, e.g. "1.20 kHz". device_path defaults to [0], the track's first device (get_set_overview lists the devices). Add [chain, device] to go into a rack: [0, 0, 1] is device 1 in chain 0 of rack 0. chains lists a rack's chains and their devices (null when the device is not a rack). enabled false means a macro or lock controls the parameter: change the macro instead.

set_device_parametersA

Change parameters of one device (device_path as in read_device), all in one undo step. values maps a parameter name from read_device (case ignored) to a raw value between its min and max, or, for a switch, one of its items, e.g. {"Filter Freq": 0.6, "Osc 1 Shape": "Saw"}. Raw values are not units: check display in the result and set again if it is off. If any entry is invalid, nothing changes. undo_last restores all of them.

set_track_mixA

Set a track's mixer; give only what you want to change. volume_db in dB (0 is Live's default, max +6). pan -50..50 (-50 = 50L, 50 = 50R). sends maps a return letter to dB, e.g. {"A": -12}. To silence a track use mute. solo is not exclusive: Live does not unsolo other tracks, so unsolo them yourself. Returns the track's resulting mix.

set_labelA

Rename and/or colour a track (track alone), a clip (track + slot) or a scene (scene alone). Live snaps the colour to the nearest one in its chooser. Colour by role, e.g. drums red, bass blue, chords green, and scenes by song section (intro, verse, chorus).

set_tempoA

Set the song tempo in BPM (20-999).

play_clipB

Start playing the clip in this slot. Live starts the transport if it is stopped.

fire_sceneA

Launch every clip in this scene (one song section). Live starts the transport if it is stopped. Not an undo step.

stopB

Stop playback.

undo_lastA

Undo the last change in Live. Each tool call that changes the Set is one undo step.

write_midi_fileA

Save notes as a .mid file in ~/Music/ableton-mcp/midi/ without using Live (works even when Live is closed). The user can drag the file into Live. The file holds notes only, so tell the user to drop it on a track that has an instrument (e.g. a Drum Rack kit) or it plays silent. Times are in beats. name: letters, digits, space, '_' or '-'. An existing file with that name is never overwritten: pick a new name.

Prompts

Interactive templates invoked by user choice

NameDescription
lesson-first-beatBuild a one-bar drum loop step by step: kick, snare, hi-hats and tempo.
lesson-notes-and-scalesHear what a scale is, compare major and minor, and pick a key for the song.
lesson-chordsBuild a four-chord progression in the song's key.
lesson-basslineWrite a bassline that follows the chords and locks with the drums.
lesson-melodyWrite a short melody in the key that fits over the chords.
lesson-song-structureTurn the loops into song sections (scenes) and play them in order.
explain-my-setDescribe the open Set in plain words (tempo, key, each track's role) without changing it.

Resources

Contextual data attached and managed by the client

NameDescription
capabilitiesSame as the live_status tool: Live version, edition, features and limits.
set-overviewSame as the get_set_overview tool: tempo, key, tracks, devices, clips, scenes and mix.

TDQS

A3.7/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target a distinct resource+action (clips, tracks, scenes, devices, mix, transport), and the detailed descriptions draw lines carefully. The main fuzziness is the MIDI-content cluster: create_midi_clip + write_notes, write_midi_file, and the three generators (create_drum_pattern, create_bassline, create_chord_progression) all produce notes across overlapping destinations, and load_from_library overlaps load_instrument (the description even says 'load_instrument does this in one call').

Naming Consistency4/5

The set overwhelmingly follows verb_noun snake_case: create_/delete_/copy_/read_/write_/set_/get_/load_/browse_/play_. Deviations are minor and domain-justified: bare 'stop', 'undo_last', and 'fire_scene' alongside 'play_clip', plus the state-style 'live_status'.

Tool Count3/5

27 tools exceeds the comfortable band; the surface is genuinely broad (tracks, clips, notes, scenes, devices, mixer, browser, offline MIDI export), so each tool is defensible, but it is heavy for an agent to route through. Some consolidation is plausible, e.g. folding the three generators and write_midi_file into fewer entry points.

Completeness4/5

Strong session-view lifecycle coverage: create/delete tracks and clips, scene creation, note read/write, device read/write, mixer, transport, browser loading, undo, plus offline file output. Gaps remain: no scene deletion or clip move/duplicate (only copy to empty slot), no device removal, no per-clip stop or arrangement-view operations, so a few workflows dead-end.