AbletonMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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_sessionA | Get current Ableton session state: tempo, time signature, playback status, loop settings. |
| set_tempoA | Set the project tempo in BPM (60–200). |
| set_time_signatureB | Set the time signature (e.g. numerator=4, denominator=4 for 4/4). |
| playA | Start playback from the current position. |
| stopA | Stop playback and return to position 0. |
| continue_playbackA | Continue playback from the current position (does not reset to 0). |
| toggle_recordA | Toggle session record mode on/off. |
| set_loopC | Enable/disable loop and optionally set loop start and length in bars. |
| set_metronomeC | Toggle Ableton's metronome on or off. |
| get_mixerA | Get master volume, master pan, cue volume, and crossfader values. |
| set_master_volumeA | Set master volume. Range: 0.0 (silent) to 1.0 (0 dB). Above 1.0 boosts up to +6dB. |
| set_crossfaderA | Set the crossfader position. Range: -1.0 (full A) to 1.0 (full B), 0.0 = center. |
| list_tracksA | List all tracks in the session (audio, MIDI, and return tracks) with their properties. |
| get_trackB | Get detailed info about a specific track by index. |
| create_trackB | Create a new track. track_type: 'audio', 'midi', or 'return'. insert_at: position index (-1 = end). color: name ('red','blue','green',...) or integer color ID. |
| update_trackB | Update track properties. All parameters are optional. volume: 0.0–1.0+ (1.0 = 0dB). pan: -1.0 (left) to 1.0 (right). |
| delete_trackB | Permanently delete a track by index. This cannot be undone via API. |
| duplicate_trackA | Duplicate a track. The copy is inserted directly after the original. |
| get_sendsA | Get all send levels for a track (one send per return track). |
| set_sendA | Set a send level for a track. send_index: 0 = first return track, 1 = second, etc. value: 0.0 (off) to 1.0 (100%). |
| list_groupsA | List all group tracks in the session with their children and state. |
| get_groupC | Get details of a group track including all child track indices. |
| create_groupA | Group a set of contiguous tracks into a Group Track. track_indices: list of adjacent track indices to group (must be contiguous). The group bus gets its own volume/pan/devices. |
| update_groupB | Update a group track's name, volume, pan, mute, or solo state. |
| fold_groupA | Fold or unfold a group track (hide/show child tracks in the session view). |
| ungroupB | Dissolve a group track, returning its children to the top level. |
| get_group_childrenA | List all tracks that belong to a group track. |
| get_track_routingB | Get input/output routing for a track: audio source, monitoring mode, output destination, and all available routing options. |
| set_track_inputA | Set the audio/MIDI input for a track. Use get_track_routing first to see available input names. channel: optional sub-routing (e.g. '1/2', 'Left', 'Ch. 1') |
| set_track_outputA | Set the audio output routing for a track. Use get_routing_options to see available output names. |
| set_monitoring_modeA | Set the input monitoring mode for a track. mode: 'in' (always monitor input), 'auto' (monitor when armed), 'off' (no monitoring) |
| get_routing_optionsA | List all available audio I/O routing options (inputs, outputs, channels). |
| setup_sidechainA | Configure sidechain compression: route sidechain_source into the compressor on target_track so it ducks when the source plays (e.g., kick sidechain on bass). target_track_index: track with the compressor/gate to sidechain sidechain_source_index: track whose signal triggers the ducking (e.g., kick) |
| list_return_tracksA | List all return tracks (A, B, C...) with their devices and current state. |
| create_return_trackC | Add a new return track to the session. |
| update_return_trackB | Update a return track's name, volume, pan, or mute state. |
| add_device_to_returnB | Add a plugin/device to a return track. Use return tracks for shared effects (reverb, delay) that multiple tracks send to. |
| list_clipsB | List all clip slots for a track, showing which slots have clips. |
| get_clipA | Get detailed info about a clip including loop settings and warp mode. |
| create_clipC | Create a new MIDI clip in a slot. length: clip length in bars (e.g. 4.0 = 4 bars). |
| update_clipA | Update clip properties. Works for both MIDI and audio clips. loop_start/loop_end: in beats. gain: 0.0–1.0 (audio clips only). |
| delete_clipC | Delete a clip from a slot. |
| fire_clipC | Launch (fire) a clip slot. Equivalent to clicking the clip launch button. |
| stop_clipC | Stop a playing clip on a specific track. |
| get_notesB | Get all MIDI notes from a MIDI clip. Returns pitch, start time, duration, velocity. |
| add_notesC | Add MIDI notes to a clip. notes: list of objects with fields: pitch (0-127), start (beats), duration (beats), velocity (0-127), mute (bool, optional). Example: [{"pitch": 60, "start": 0.0, "duration": 1.0, "velocity": 100}] |
| clear_notesB | Remove all MIDI notes from a clip. |
| list_arrangement_clipsB | List all clips placed in the Arrangement View timeline for a track. Returns start_time, length, name, and other properties for each clip. |
| place_clip_in_arrangementA | Create a MIDI clip directly in the Arrangement View at a specific timeline position. Requires Ableton Live 10.1+ and a MIDI track. position_beats: start position in beats from the song start (e.g. 0.0 = bar 1, 4.0 = bar 2 in 4/4). length_beats: clip length in beats (e.g. 4.0 = 1 bar in 4/4, 16.0 = 4 bars). name: optional clip name. After creating, use add_notes to populate it with MIDI content. |
| delete_arrangement_clipA | Delete a clip from the Arrangement View timeline. Use list_arrangement_clips to find the clip_index. |
| list_devicesB | List all devices (plugins) on a track with their name, type, and parameter count. |
| get_deviceA | Get full details of a device including all parameters with current values, min, max. Useful to discover what parameters a plugin exposes before editing them. |
| add_deviceA | Add a device or plugin to a track by searching Ableton's browser. Works for: Ableton native (e.g. 'Reverb', 'Compressor'), VST plugins (e.g. 'FabFilter Pro-Q 3', 'Waves SSL E-Channel', 'Serum'). Plugin must be installed and scanned in Ableton. |
| enable_deviceB | Enable or disable a device (bypass). enabled=False bypasses the plugin. |
| delete_deviceB | Remove a device from a track's device chain. Cannot be undone via API. |
| list_parametersC | List all parameters of a device with current value, range, and display string. |
| set_parameter_by_indexA | Set a device parameter value by its index. Use list_parameters first to find the right index and valid range. |
| set_parameter_by_nameB | Set a device parameter value by its name (case-insensitive match). Example: set_parameter_by_name(0, 0, "Frequency", 1000.0) |
| load_presetB | Load a preset onto an existing device by searching Ableton's browser. preset_name must match exactly as shown in Ableton's browser. |
| get_rack_infoB | Get overview of a rack device: chain count, macro count, rack type. |
| list_chainsC | List all chains inside an Instrument Rack, Effect Rack, or Drum Rack. |
| get_chain_detailsB | Get full details of a rack chain including its device list. |
| set_chain_volumeC | Set the volume of a rack chain (0.0–1.0). |
| set_chain_panB | Set the pan of a rack chain (-1.0=left, 0.0=center, 1.0=right). |
| mute_chainC | Mute or unmute a rack chain. |
| get_chain_devicesC | List devices inside a specific rack chain. |
| get_macrosA | Get all macro knob values for a rack device (Macro 1–8). |
| set_macroB | Set a macro knob value on a rack. macro: macro index (0–7) or name (e.g. 'Macro 1', 'Cutoff', etc.) value: within the macro's range (usually 0.0–127.0 or 0.0–1.0) |
| list_drum_padsB | List all populated drum pads in a Drum Rack with their note assignments. |
| get_drum_padB | Get details of a drum pad by MIDI note number (e.g. 36=kick, 38=snare, 42=hihat). |
| mute_drum_padB | Mute or unmute a specific drum pad by MIDI note number. |
| list_scenesA | List all scenes with their name, color, and clip count. |
| get_sceneC | Get details for a specific scene. |
| create_sceneB | Create a new scene. insert_at: position (-1 = end of scene list). |
| update_sceneC | Update a scene's properties. time_signature: string like '4/4' or '3/4'. tempo: BPM override for this scene (if supported by your Ableton version). |
| delete_sceneA | Delete a scene. All clips in that row are also removed. |
| fire_sceneB | Launch all clips in a scene row simultaneously. |
| list_clip_automationB | List all automation envelopes in a clip. Each envelope controls one device parameter. |
| create_automationA | Create automation for a device parameter in a clip. points: list of {"time": beat_position, "value": param_value, "duration": 0.0} duration=0 creates a step (instant change). duration>0 creates a linear ramp. Example: automate filter cutoff from open to closed over 4 bars: points=[{"time":0,"value":1000},{"time":2,"value":200},{"time":4,"value":1000}] |
| add_automation_pointsC | Add breakpoints to an existing automation envelope. points: [{"time": 0.0, "value": 0.5, "duration": 0.0}, ...] |
| remove_automation_pointC | Remove a single automation breakpoint at a specific beat position. |
| clear_automation_envelopeA | Clear all breakpoints from an automation envelope (keeps the envelope, removes all data). |
| delete_automation_envelopeC | Completely remove an automation envelope from a clip. |
| automate_mixerB | Automate a mixer parameter (volume, pan, send) in a clip. param: 'volume', 'pan', or 'send_0', 'send_1', etc. points: [{"time": beat, "value": 0.0–1.0, "duration": 0.0}, ...] Example: fade out volume over 8 bars: param='volume', points=[{"time":0,"value":0.85},{"time":8,"value":0.0}] |
| get_arrangement_automationB | List automatable parameters in arrangement view for a track. Shows all device parameters that can be automated in the arrangement timeline. |
| generate_and_place_melodyA | Generate a melody and place it into an Ableton MIDI clip. Creates the clip if the slot is empty. style: musical style guide — 'electronic', 'jazz', 'classical', 'Daft Punk', 'Bach', 'blues', 'hip-hop', 'ambient', 'bossa nova', 'film score', etc. key: root note — 'C', 'D', 'F#', 'Bb', etc. scale: optional scale override — 'major', 'minor', 'dorian', 'pentatonic_minor', 'blues', 'harmonic_minor', 'whole_tone', etc. Derived from style if omitted. octave: base octave for notes (1–6, default 4 = middle octave) length_bars: how many bars to generate density: 0.0–1.0, how many beats get notes (0.3=sparse, 0.7=normal, 1.0=full) humanize: add subtle timing and velocity variation for human feel replace_existing: if True, clear existing notes before placing new ones seed: integer for reproducible generation (same seed = same melody) |
| generate_and_place_chordsC | Generate a chord progression and place it into a MIDI clip. progression: named progression — 'I-V-vi-IV', 'ii-V-I', 'I-IV-V-I', '12-bar-blues', 'i-VII-VI-VII', etc. Derived from style if omitted. voicing: 'close' (tight chords), 'spread' (open across octaves), 'arpeggiated' bars_per_chord: how many bars each chord lasts |
| generate_and_place_basslineC | Generate a bassline and place it into a MIDI clip. complexity: 0.0 (root notes only) to 1.0 (busy with passing tones and chromatic runs) |
| generate_and_place_drumsA | Generate a drum pattern and place it into a MIDI clip. Uses GM drum mapping (kick=36, snare=38, hihat=42, etc.). Set up your Drum Rack with matching pad assignments. pattern: 'four_on_floor', 'boom_bap', 'trap', 'dnb', 'rock', 'shuffle', 'bossa_nova' or derived from style if omitted. variation: 0.0–1.0, adds random additional hits beyond the base pattern |
| generate_and_place_arpeggioC | Generate an arpeggio pattern and place it into a MIDI clip. pattern: 'up', 'down', 'up-down', 'random', 'outside-in' note_duration: duration of each note in beats (0.25=16th, 0.5=8th, 1.0=quarter) octave_range: how many octaves the arpeggio spans (1–3) |
| list_generation_optionsA | List all available styles, scales, chord progressions, and drum patterns for generation. |
| build_full_arrangementB | Build a complete multi-track arrangement in Ableton from scratch. Creates tracks for: melody, chords, bass, drums and fills them with generated content. sections: list of section names, defaults to ['Intro', 'Verse', 'Chorus', 'Outro'] This is the most powerful generation command — it builds a complete song structure. |
| analyze_trackA | Get audio analysis info for a track: volume, pan, device chain state. For full waveform analysis, use start_audio_capture + stop_audio_capture. |
| export_trackA | Attempt to export a track to a WAV file. Note: Ableton's Python API has limited export support. See response for workaround instructions if direct export is unavailable. |
| get_audio_devicesA | List available audio devices on this machine. Use to find the name of your virtual routing device (VB-Cable, BlackHole, etc.) for use with start_audio_capture. |
| start_audio_captureA | Start capturing audio from a virtual audio device. Set up VB-Cable (Windows) or BlackHole (Mac) and route your Ableton output to it. device_name: exact name from get_audio_devices(), or empty for default input. |
| stop_audio_captureB | Stop audio capture and save to WAV file. Returns RMS level, peak amplitude, and duration of captured audio. |
| analyze_mixA | Analyze the current mix state (all tracks): volume levels, gain staging, frequency clashes between tracks, and overall mix balance. Gives actionable mixing suggestions without needing to capture audio. |
| analyze_wav_file_toolA | Analyze a WAV file for: RMS, peak, LUFS, dynamic range, frequency balance, stereo width, and crest factor. Returns mixing suggestions. file_path: absolute path to a WAV file (captured from Ableton or exported) |
| mastering_analysisA | Analyze multiple WAV files together for mastering. Compares tracks, detects frequency clashes, gives mastering chain suggestions. target_lufs: streaming loudness target (-14 for Spotify, -16 for Apple Music) wav_files: absolute paths to WAV files to analyze together |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
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/juampicosta/ableton-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server