Ableton MCP for Live Intro
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_infoA | Snapshot of the Live set: tempo, signature, transport, every track with its devices and clips (by slot), return tracks, master, scenes, selection. |
| set_tempoA | Set the song tempo in BPM (20-999). |
| set_time_signatureC | Set the song time signature, e.g. 4/4, 3/4, 6/8. |
| transportC | Transport control. 'undo'/'redo' use Live's own history; 'back_to_arranger' makes every track follow the Arrangement again after Session clips were launched. |
| set_song_optionsB | Metronome, arrangement loop (start/length in beats), playhead and record mode. song_time only moves the playhead while playing; while stopped use start_time (the position 'play' starts from). |
| get_track_infoB | Detailed info for one track (mixer, clips, device list with indexes). |
| create_trackC | Create a MIDI, audio or return track. index=-1 appends at the end. |
| delete_trackC | Delete a track or return track. |
| duplicate_trackB | Duplicate a track (with devices and clips); the copy lands right after it. |
| set_trackC | Change track properties. volume is 0.0-1.0 (0.85 = 0 dB, about 0.025 per dB near the top), pan -1 (L) to 1 (R), color_index 0-69 from Live's palette, sends is a list per return track (0.0-1.0, None leaves one unchanged). |
| get_routingC | Current and available input/output routings of a track (by display name). |
| set_routingC | Route a track by display name, e.g. input_type='Resampling' (records the master) or input_type='808' (records another track). See get_routing for options. |
| select_trackB | Select a track in Live's UI (shows its devices at the bottom). |
| create_clipB | Create an empty MIDI clip in a Session View slot. length in beats (4 = one 4/4 bar). |
| load_audio_clipA | Load an audio file (absolute path, WAV/AIFF/FLAC/MP3) into an empty Session View slot of an audio track. |
| arrangement_audio_clipA | Place an audio file (absolute path, WAV/AIFF/FLAC/MP3) directly on an audio
track's Arrangement timeline at |
| set_audio_clipC | Audio clip playback. warp_mode: 0 Beats, 1 Tones, 2 Texture, 3 Re-Pitch (tape-style: pitch and speed move together), 4 Complex, 6 Complex Pro (check which your edition has). pitch_coarse in semitones (-48..48), pitch_fine in cents (-50..50), gain raw 0..1 (read gain_display). |
| add_notesB | Write MIDI notes into an existing clip. replace=True clears the clip first. Notes beyond the clip length are kept but won't play until the loop is extended. |
| get_notesC | Read all notes of a MIDI clip (e.g. something the user played) plus clip info. |
| remove_notesC | Delete notes inside a pitch/time window (defaults: the whole clip). |
| quantize_clipC | Quantize a clip's notes to a grid. amount 0-1 (1 = hard quantize). |
| set_clipC | Rename a clip, change its loop region (beats), looping on/off or color. |
| delete_clipC | Delete the clip in a slot. |
| duplicate_clipB | Copy a clip to another slot (overwrites the target). Good for making variations. |
| fire_clipB | Launch a clip (starts on the next launch-quantization boundary). |
| stop_track_clipsB | Stop whatever clip is playing on one track. |
| select_clipC | Highlight a clip slot in Live's UI so the user sees it in the clip view. |
| set_clip_automationB | Draw a clip envelope for a device parameter (e.g. an Auto Filter sweep).
Points are steps: each holds |
| create_sceneC | Add a scene (row). index=-1 appends at the bottom. |
| rename_sceneC | Rename a scene (e.g. 'Intro', 'Verso', 'Coro'). |
| fire_sceneC | Launch every clip in a scene row. |
| duplicate_sceneC | Duplicate a scene with all its clips; the copy lands right below. |
| delete_sceneB | Delete a scene row and its clips. |
| get_device_parametersA | List every parameter of a device: index, name, raw value, min, max, the value as Live displays it (Hz, dB, ms...) and options for switch-type parameters. For a device nested inside a rack, pass chain + chain_device (see get_rack). |
| set_device_parametersA | Set several parameters at once: {"Frequency": 0.4, "Resonance": 0.3}. Keys are parameter names (or indexes as strings); values are raw numbers within min/max, or an option name for switch parameters. {"Device On": 0} bypasses it. Raw values are not always linear units: check the returned 'display' and adjust. Racks: pass chain + chain_device to reach a device inside a rack (see get_rack). |
| set_parameter_realA | Set a parameter in the units Live displays instead of raw values: Hz for frequencies (e.g. 150, 5000), dB for gains/thresholds, ms for times (seconds are converted), % for amounts. Finds the raw value by bisection without side effects. Prefer this over set_device_parameters for EQs, filters, compressors. |
| set_sidechainB | Read or set the sidechain source of a Compressor (or any device with its own input routing). source = a track name, e.g. a silent 'ghost trigger' track that plays short hits on the 808 notes; then set_device_parameters {"S/C On": 1}. Omit source to list the available sources. |
| delete_deviceC | Remove a device from a track's chain. |
| get_drum_padsC | List the filled pads of a Drum Rack (MIDI note -> sample name). |
| browseA | List the contents of a browser folder, e.g. 'instruments', 'drums', 'audio_effects/Delay & Loop', 'instruments/Drift'. First segment is the category. |
| search_browserB | Find loadable items (devices, presets, kits, samples) whose name contains
|
| load_deviceA | Load an instrument, effect, kit or preset onto a track (appended to its chain).
Give an exact browser |
| device_propertyB | Read (value omitted) or set a device property that is not an automatable parameter, e.g. Simpler 'voices' (1 = mono, needed for 808 glide). |
| get_rackB | Show the chains of a rack (Instrument/Drum/Audio Effect Rack; most presets are racks) and the devices inside each, to edit parameters the macros hide. |
| set_chainB | Mix one chain of a rack, e.g. a single Drum Rack pad (get_rack lists them): volume 0-1 like a track fader (0.85 = 0 dB, 1.0 = +6 dB), pan -1..1. |
| move_deviceB | Reorder a device in its chain (load_device always appends at the end, e.g. move an EQ in front of the master Limiter). |
| arrangement_placeA | Copy a Session clip into the Arrangement timeline at |
| get_arrangement_clipsC | List the clips already on a track's Arrangement timeline (start/end in beats). |
| clear_arrangementB | Remove every clip from a track's Arrangement timeline (Session clips stay). |
| show_viewA | Show a view of Live's window ('Arranger', 'Session', 'Browser', 'Detail', 'Detail/Clip', 'Detail/DeviceChain') and optionally hide others, e.g. view='Arranger', hide=['Browser', 'Detail'] for a clean Arrangement. |
| navigate_viewB | Zoom or scroll a view like the arrow keys. In the Arranger, zoom 'left' zooms out in time (3 steps fit a ~64-bar song on a wide window) and scroll 'left' goes toward bar 1. |
| measure_levelsA | Poll Live's output meters while the set plays and return the peak and average level per track, return and master (Live meter scale 0-1; 0.917 is -0.3 dBFS, ~0.0125-0.015 units per dB near the top). Start playback first. This is the closest thing to listening: use it to balance and catch clipping. |
| pingA | Check the bridge is alive and report Live's version. |
| render_to_wavA | Render the Arrangement to WAV by recording in real time (Live has no export API). Default: the master mix to one file on the user's Desktop. With stems (track/return names, or ["all"]) it records one post-mixer file per track in a single pass into " - stems/" (mind Intro's 16-track limit: each stem adds a temporary track). end_bar=None renders to the last clip; tail_bars keeps reverb/delay tails. Files start exactly on the downbeat (latency pre-roll cut). The set must be saved once; the render saves it again (Live only releases new recordings on save). Takes as long as the music plays: returns immediately unless wait_seconds > 0; poll render_status until 'done'. Master renders include an analysis (LUFS, true peak, bands, per-section loudness); stems a level summary. Renders obey solo/mute: soloed tracks are reported in the result. |
| render_statusB | Progress of the current render; with wait_seconds, block up to that long. |
| analyze_audioA | Objective 'ears' for a WAV/AIFF/FLAC: integrated LUFS, sample and true peak, crest factor, clipping, spectral balance per band (dB relative to total), stereo and low-end (<150 Hz) correlation, loudness per section, and a 'texture' block for Foley/ambiences: contrast_db (p95-p10 of 50 ms RMS; a real fireplace ~25-30 dB, below ~10 dB reads as a wash/"falling water"), crackle_ratio (p99/median 50 ms energy; >= 4 for crackly textures) and tonal_peak_hz/tonal_prominence (a line > 3x its local median in a noisy ambience is a hum; on music it is just a note, so ignore it there). |
| reload_scriptA | Hot-reload the Remote Script inside Live after its source file was updated. |
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 57 tools
The set covers many distinct Ableton resources, but several device-parameter and clip-placement tools overlap enough to cause hesitation. set_device_parameters, set_parameter_real, device_property, and set_sidechain all modify device state, while arrangement_audio_clip, arrangement_place, load_audio_clip, and create_clip differ mainly by context.
Most tools use snake_case and an action_object pattern, but the convention is not uniform: transport, ping, browse, and device_property are noun/single-word tools, while others are verb_noun or noun_verb phrases. The names remain readable but are not fully predictable.
57 tools is far beyond the typical 3-15 well-scoped range and exceeds the 50+ threshold for an extreme mismatch. Even for a complex DAW, this surface creates high selection cost and makes it hard to keep the set coherent.
The surface covers core Ableton workflows: transport, tracks, clips, scenes, devices, browser, arrangement, rendering, and audio analysis. Minor gaps remain, such as reading clip automation/envelopes or explicit master-track operations, but agents can mostly work around them.