Ableton Live MCP Server
PYPI · MCP-SERVER-ABLETON-LIVE · SCANNED SEP 20
Control Ableton Live with 156 typed tools for music production and offline .als analysis.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 0 of 34 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 2 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability87
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 14608 tokens (~93/item across 156 items; 156 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
- Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage77
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 20% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 157 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Ableton Live MCP Server server?
Ableton Live MCP Server runs locally as a PyPI package, launched with uvx mcp-server-ableton-live. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · mcp-server-ableton-live
claude mcp add wstierhout-ableton-live-mcp -- uvx mcp-server-ableton-live
{
"mcpServers": {
"wstierhout-ableton-live-mcp": {
"command": "uvx",
"args": [
"mcp-server-ableton-live"
]
}
}
} {
"servers": {
"wstierhout-ableton-live-mcp": {
"command": "uvx",
"args": [
"mcp-server-ableton-live"
]
}
}
} codex mcp add wstierhout-ableton-live-mcp -- uvx mcp-server-ableton-live
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"wstierhout-ableton-live-mcp": {
"type": "local",
"command": [
"uvx",
"mcp-server-ableton-live"
],
"enabled": true
}
}
} openclaw mcp add wstierhout-ableton-live-mcp --command uvx --arg mcp-server-ableton-live
mcp_servers:
wstierhout-ableton-live-mcp:
command: "uvx"
args: ["mcp-server-ableton-live"] {
"McpServers": {
"wstierhout-ableton-live-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"mcp-server-ableton-live"
]
}
}
} assistant mcp add wstierhout-ableton-live-mcp -t stdio -c uvx -a mcp-server-ableton-live
{
"mcpServers": {
"wstierhout-ableton-live-mcp": {
"command": "uvx",
"args": [
"mcp-server-ableton-live"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 19 Sept 26 −3
- Stability: pass → 0.80 functional
- 18 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → pass security
- 17 Sept 26 0
- Malware scan: pass → unverified ▼ security
- Package version: 1.8.0 → 1.8.1 functional
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- 12 Sept 26 +12
- Malware scan: unverified → pass ▲ security
- Stability: pass → 0.80 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/mcp-server-ableton-live@1.8.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 34 packages
| Packages resolved | 34 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
generate_drum_pattern ~172
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...).
| Name | Type | Req | Description |
|---|---|---|---|
| bars | integer | – | – |
| clip_index | integer | yes | – |
| humanize | integer | – | – |
| seed | – | – | – |
| style | string | – | – |
| swing | number | – | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
generate_euclidean_drums ~222
Write a Euclidean (Bjorklund) rhythm for one drum voice into a Session clip. REPLACES the clip's notes if the clip exists. Distributes `pulses` hits as evenly as possible across `steps` slots spanning one bar (steps=8 -> 8th notes, 16 -> 16th notes), repeated for `bars`. pulses=3, steps=8 is the tresillo. `rotate` shifts the pattern left by that many steps. instrument: a drum-map name (kick/snare/chat/ohat/clap/ride/...) or a raw MIDI number. `humanize` is max +/- velocity jitter.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | integer | – | – |
| clip_index | integer | yes | – |
| humanize | integer | – | – |
| instrument | string | – | – |
| pulses | integer | – | – |
| rotate | integer | – | – |
| seed | – | – | – |
| steps | integer | – | – |
| track_index | integer | yes | – |
| velocity | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
generate_genre_progression ~226
Build a genre-idiomatic chord progression and write it as voiced chords. REPLACES existing notes. genre: lofi/boom_bap/hip_hop/trap/house/deep_house/techno/trance/dnb/rnb/ neo_soul/jazz/bossa_nova/ambient/synthwave/pop/afrobeats/amapiano/... (fuzzy matched). The genre's scale-degree grammar is transposed into key+scale, then voiced (see generate_voiced_progression for the style options). bars = number of chords (the grammar loops). Returns the chord symbols it used.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | integer | – | – |
| beats_per_chord | number | – | – |
| center_pitch | integer | – | – |
| clip_index | integer | yes | – |
| genre | string | yes | – |
| key | string | – | – |
| scale | string | – | – |
| seed | – | – | – |
| style | string | – | – |
| track_index | integer | yes | – |
| velocity | integer | – | – |
| voices | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
generate_groove ~178
Write a pocketed drum groove into a Session clip. REPLACES existing notes. style: lofi | boom_bap | house | trap | jazz | funk. pocket: beats to lay every hit behind the beat (0.0-0.1). swing: off-beat hat delay (0.5 straight .. ~0.66). ghost: 0-1 probability of soft ghost snares between backbeats. humanize: max +/- velocity deviation. Uses the standard Live drum map.
| Name | Type | Req | Description |
|---|---|---|---|
| bars | integer | – | – |
| clip_index | integer | yes | – |
| ghost | number | – | – |
| humanize | integer | – | – |
| number | – | – | |
| seed | – | – | – |
| style | string | – | – |
| swing | number | – | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
generate_melody ~270
Write a voice-led melody over a chord progression. REPLACES existing notes. Notes come from key+scale, biased to chord tones on strong beats, chosen by nearest-pitch voice-leading (small steps), with optional chromatic approach notes. progression: dash-/comma-separated symbols. key: e.g. "C", "F#", "Bb". scale: major/minor/dorian/lydian/mixolydian/blues/bebop/minor_pentatonic/... density: low|medium|high (note rate). phrase_arc: rising|arch|ascend_descend| static (register contour). chromatic: 0-1 approach-note probability. low/high bound the register (MIDI). swing: 0.5 straight .. ~0.66.
| Name | Type | Req | Description |
|---|---|---|---|
| beats_per_chord | number | – | – |
| chromatic | number | – | – |
| clip_index | integer | yes | – |
| density | string | – | – |
| high | integer | – | – |
| key | string | – | – |
| low | integer | – | – |
| phrase_arc | string | – | – |
| progression | string | yes | – |
| scale | string | – | – |
| seed | – | – | – |
| swing | number | – | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
generate_phase ~254
Write a Steve-Reich phasing pattern into a Session clip. REPLACES the clip's notes if it already exists. Builds a short one-voice motif (each pitch a ``note_length``-beat note, back to back) from ``pitches`` -- a space-/comma-separated list of MIDI numbers, e.g. "60 62 64 67 69". Then stacks ``repeats`` copies of that motif, each copy starting ``shift`` beats later than the last, so the copies drift against one another. A ``shift`` smaller than the motif length (len(pitches)*note_length) gives the classic overlapping phase texture; ``shift`` == motif length is a plain loop. If ``source_clip_index`` is given, the motif is read from that clip on the same track instead of built from ``pitches``. Returns a short summary.
| Name | Type | Req | Description |
|---|---|---|---|
| clip_index | integer | yes | – |
| note_length | number | – | – |
| pitches | string | – | – |
| repeats | integer | – | – |
| shift | number | – | – |
| source_clip_index | – | – | – |
| track_index | integer | yes | – |
| velocity | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
generate_voiced_progression ~207
Write voice-led jazz chord voicings into a Session clip. REPLACES existing notes. progression: dash-/comma-separated symbols, e.g. "Am9-Dm7-G13-Cmaj7". style: rootless (3-7-9-13 stack, no root), quartal (stacked 4ths), shell (root-3-7), or block (close-position). Smooth voice-leading is applied between chords. center_pitch biases register (60 = C3 in Live). voices caps notes per chord; humanize is max +/- velocity jitter.
| Name | Type | Req | Description |
|---|---|---|---|
| beats_per_chord | number | – | – |
| center_pitch | integer | – | – |
| clip_index | integer | yes | – |
| humanize | integer | – | – |
| progression | string | yes | – |
| seed | – | – | – |
| style | string | – | – |
| track_index | integer | yes | – |
| velocity | integer | – | – |
| voices | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
generate_walking_bass ~187
Write a quarter-note walking bass line under a progression. REPLACES notes. Root on beat 1, chord/scale tones through the bar, chromatic approach into the next chord's root on the last beat, with occasional soft ghost notes. progression: dash-/comma-separated symbols. key/scale set the passing-tone pool. octave: 1 = very low (C1), 2 = typical bass (C2). ghost: 0-1 offbeat ghost-note probability.
| Name | Type | Req | Description |
|---|---|---|---|
| beats_per_chord | number | – | – |
| clip_index | integer | yes | – |
| ghost | number | – | – |
| key | string | – | – |
| octave | integer | – | – |
| progression | string | yes | – |
| scale | string | – | – |
| seed | – | – | – |
| track_index | integer | yes | – |
| velocity | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_arrangement_clips ~63
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
| Name | Type | Req | Description |
|---|---|---|---|
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_browser_items_at_path ~62
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
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_browser_tree ~104
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".
| Name | Type | Req | Description |
|---|---|---|---|
| category_type | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_clip_info ~58
Full clip state: loop points, markers, playing position, per-clip time signature; for audio clips also file path, gain display, and warp markers.
| Name | Type | Req | Description |
|---|---|---|---|
| clip_index | integer | yes | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_clip_notes ~106
Return every MIDI note in an existing Session-view MIDI clip. Each note includes pitch, start time, duration, velocity, and mute state; newer Live versions may add expression fields. This is read-only and fails for an empty slot or audio clip. Use get_clip_info for clip properties.
| Name | Type | Req | Description |
|---|---|---|---|
| clip_index | integer | yes | Zero-based Session-view clip-slot index on the track. |
| track_index | integer | yes | Zero-based index of a regular track in the Live set. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_device_parameters ~44
List all parameters of a device on a track: names, values, ranges, display strings.
| Name | Type | Req | Description |
|---|---|---|---|
| device_index | integer | yes | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_device_routing ~78
Read a device's audio-input (sidechain) routing: current input type/channel and the available options. Only sidechain-capable devices (Compressor, Gate) have this. Use the options with set_device_routing to pick a sidechain source.
| Name | Type | Req | Description |
|---|---|---|---|
| device_index | integer | yes | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_drum_pads ~45
List a Drum Rack's occupied pads (MIDI note, name, mute, solo).
| Name | Type | Req | Description |
|---|---|---|---|
| device_index | integer | yes | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_grooves ~27
List grooves in the Groove Pool (index + name) and the global groove amount.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_group_info ~51
Report a track's group state: whether it is a foldable group track, whether it is inside a group, its fold state, and its parent group's name.
| Name | Type | Req | Description |
|---|---|---|---|
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_locators ~33
List arrangement locators (index, name, beat time) for structure-aware navigation. Jump with jump_to_locator.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_master_device_parameters ~28
List parameters of a device on the Master track.
| Name | Type | Req | Description |
|---|---|---|---|
| device_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_master_meters ~41
Read the Master track's output meters - values pinned near 1.0 during playback mean the master is clipping; pull set_master_volume down.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_rack_chains ~57
List an Instrument/Effect Rack's chains and the devices inside each - previously unreachable nested devices. Use set_chain_device_parameter to control them.
| Name | Type | Req | Description |
|---|---|---|---|
| device_index | integer | yes | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_return_device_parameters ~53
List parameters of a device on a Return track: names, values, min/max, display strings. Call before set_return_device_parameter.
| Name | Type | Req | Description |
|---|---|---|---|
| device_index | integer | yes | – |
| return_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_return_tracks ~17
List return tracks (index + name).
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_scale_info ~71
Read the song's scale and tuning: scale name, root note, scale intervals, and the active tuning system (microtonal, Live 12.3+) if any. Set the scale with set_song_scale; tune device parameters (e.g. Wavetable) with set_device_parameter.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_session_info ~94
Return global Live-set and transport state without modifying the set. Includes tempo, song time signature, playback position/state, Arrangement loop, track/return/scene counts, scene names, key/scale, record mode, launch quantization, Master volume/pan, and Live version. Use get_track_info for a single track's clips/devices, or get_session_snapshot for a compact overview of every track.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_session_snapshot ~65
One-call overview of the whole set: tempo, time signature, play state, and for every track its name, type, mute/solo/arm, volume, clip count, and device names, plus return-track names. Prefer this over many get_track_info calls.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_track_info ~107
Return detailed state for one regular track without modifying the set. Includes name/type, mixer and arm/mute/solo state, sends, freeze/color state, playing/fired slot indices, every Session slot's basic clip state, and the device-chain names/types. Use get_session_info for global transport state, get_device_parameters for parameter values, or get_clip_info for full clip properties.
| Name | Type | Req | Description |
|---|---|---|---|
| track_index | integer | yes | Zero-based index of a regular track in the Live set. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_track_meters ~76
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.
| Name | Type | Req | Description |
|---|---|---|---|
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_track_routing ~68
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.
| Name | Type | Req | Description |
|---|---|---|---|
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
humanize_clip ~113
Read a MIDI clip, apply timing + velocity humanization, and write it back. REPLACES the clip's notes with the jittered version. timing: max +/- start-time deviation in beats. velocity: max +/- velocity deviation. Pitches are preserved; times stay non-negative. seed makes it reproducible.
| Name | Type | Req | Description |
|---|---|---|---|
| clip_index | integer | yes | – |
| seed | – | – | – |
| timing | number | – | – |
| track_index | integer | yes | – |
| velocity | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
jump_by ~40
Move the playhead by a relative number of beats (negative moves back). Works during playback for on-the-fly navigation.
| Name | Type | Req | Description |
|---|---|---|---|
| beats | number | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
jump_to_cue ~44
Jump the playhead to the next locator/cue (direction >= 0) or the previous one (direction < 0).
| Name | Type | Req | Description |
|---|---|---|---|
| direction | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
jump_to_locator ~31
Move the playhead to a locator (index from get_locators).
| Name | Type | Req | Description |
|---|---|---|---|
| locator_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
list_known_devices ~20
List the devices that describe_device has curated guidance for.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
list_recipes ~36
List the built-in composition recipes (name, description, and default tempo/key/scale/bars), for use with apply_recipe.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
load_device_to_master ~40
Load a device/effect from the browser onto the Master/Main track (e.g. a limiter for mastering).
| Name | Type | Req | Description |
|---|---|---|---|
| item_uri | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
load_device_to_return ~119
Append one loadable browser device or preset to a return track's chain. Obtain `item_uri` from search_browser. Loading selects the return track in Live and creates a new device, so repeated calls add duplicates. Prefer audio effects on returns; use load_instrument_or_effect for a regular track or load_device_to_master for the Master chain.
| Name | Type | Req | Description |
|---|---|---|---|
| item_uri | string | yes | Loadable browser-item URI returned by search_browser. |
| return_index | integer | yes | Zero-based return-track index; 0 is Return A. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
load_drum_kit ~167
Load a Drum Rack, then the first loadable kit at a browser path. Use search_browser to obtain the rack URI and get_browser_items_at_path to verify the kit path. This is a two-step mutation: it appends the rack first, then loads the first loadable item found at `kit_path`. If path lookup fails, the new empty rack remains on the track; repeated calls add more racks. Use load_instrument_or_effect when one known browser URI is sufficient.
| Name | Type | Req | Description |
|---|---|---|---|
| kit_path | string | yes | Slash-separated Live browser path, such as "drums/acoustic". |
| rack_uri | string | yes | Loadable browser-item URI returned by search_browser. |
| track_index | integer | yes | Zero-based index of a regular track in the Live set. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
load_instrument_or_effect ~91
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')
| Name | Type | Req | Description |
|---|---|---|---|
| track_index | integer | yes | – |
| uri | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
preview_browser_item ~67
Audition a browser item (a sample, instrument, or preset) through Live's preview tab WITHOUT loading it onto a track. `item_uri` comes from search_browser or get_browser_items_at_path. Use stop_browser_preview to stop.
| Name | Type | Req | Description |
|---|---|---|---|
| item_uri | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
quantize_clip ~91
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).
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | – |
| clip_index | integer | yes | – |
| grid | string | – | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
rack_variation ~83
Rack macro snapshots. action: "store" (save current macros as a variation), "recall" (restore variation `index`), "randomize" (randomize all macro knobs - instant sound-design exploration).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| device_index | integer | yes | – |
| index | – | – | – |
| track_index | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
re_enable_automation ~40
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
record_section ~162
Bounce a section of the arrangement to an audio file WITHOUT the Export dialog, so you can hear an internal signal. Creates a temporary audio track, routes its input to `source` ("Resampling" = the master output, or a track's name for that track's output), arms it, and records from start_beat to end_beat in REAL TIME (a 4-bar section takes about 4 bars of wall-clock; capped at 5 minutes). Returns the recorded WAV path. Set cleanup=False to keep the recording track. Runs the transport and adds an arrangement clip.
| Name | Type | Req | Description |
|---|---|---|---|
| cleanup | boolean | – | – |
| end_beat | number | yes | – |
| source | string | – | – |
| start_beat | number | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
redo ~16
Redo the last undone action in Live.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
replace_simpler_sample ~108
Replace a Simpler sample with an absolute local audio-file path. Requires Live 12.4+ AND runtime API support; otherwise fails before writing. Replaces musical content: confirm the target and preserve the original set. Readback is not an audio audition.
| Name | Type | Req | Description |
|---|---|---|---|
| device_index | integer | yes | Zero-based device position in the target track's device chain. |
| path | string | yes | – |
| track_index | integer | yes | Zero-based index of a regular track in the Live set. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
save_set ~60
Save the current Live set to its existing file, if the Live API supports it (it does not on most versions). Returns whether the API call is available and whether the save succeeded. To save under a new name/path, use the GUI Save-As.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
search_browser ~122
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | – |
| max_results | integer | – | – |
| query | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
session_diff ~99
Report what changed in the set since the LAST time you called this tool: tempo/time-signature/play-state, tracks added, removed, renamed or reordered, and per-track volume, mute, solo, arm, clip-count, and device changes. The first call records a baseline (no diff). Track IDs are scoped to the running bridge; older bridges cannot identify renames reliably. Call it before and after an edit to verify it took effect.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
What is the Ableton Live MCP Server server?
Ableton Live MCP Server is listed in the public MCP registry as io.github.wstierhout/ableton-live-mcp. Control Ableton Live with 156 typed tools for music production and offline .als analysis. This page covers its PyPI package (mcp-server-ableton-live).
Is the Ableton Live MCP Server server safe to use?
Ableton Live MCP Server scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Ableton Live MCP Server server expose?
Ableton Live MCP Server exposes 156 tools: get_session_info, set_tempo, start_playback, stop_playback, create_scene, and 151 more. Their descriptions and schemas cost roughly 14,156 tokens of context every time the server is loaded.
Is the Ableton Live MCP Server server still maintained?
Ableton Live MCP Server is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.