Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Ableton Live MCP Server

PYPI · MCP-SERVER-ABLETON-LIVE

Control Ableton Live with 156 typed tools for music production and offline .als analysis.

0 this week 96 Trust /100

Last scanned (6 hours ago)

Scores higher than 99% of PyPI servers

Category Design and Media

Trust breakdown (7 categories)

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 build step with no custom scripting around it. View diagnostics → Pass
  • 0 of 33 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to wstierhout/ableton-live-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 48 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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
Changelog

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.

  • 5 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 3 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 31 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 25 Oct 26 +1
    • Stability: 0.97 → pass security
  • 24 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 23 Oct 26 −16
    • Malware scan: pass → unverified ▼ security
    • Stability: pass → 0.93 functional
  • 21 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
Diagnostics

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 5 Nov 2026 · Analysed pypi/mcp-server-ableton-live@1.8.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo wstierhout/ableton-live-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/wstierhout/ableton-live-mcp/.github/workflows/publish.yml@refs/tags/v1.8.1
Rekor log index 2878505945
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:a35edb0f890016519fb9b49df354b2efdb06f5eb00854d1b28e7b88c962bbac8

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 33 packages
Packages resolved 33
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 156 exposed · ~14,156 tokens

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 →

Tool Tokens
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...).

NameTypeReqDescription
barsinteger––
clip_indexintegeryes–
humanizeinteger––
seed–––
stylestring––
swingnumber––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
barsinteger––
clip_indexintegeryes–
humanizeinteger––
instrumentstring––
pulsesinteger––
rotateinteger––
seed–––
stepsinteger––
track_indexintegeryes–
velocityinteger––
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
barsinteger––
beats_per_chordnumber––
center_pitchinteger––
clip_indexintegeryes–
genrestringyes–
keystring––
scalestring––
seed–––
stylestring––
track_indexintegeryes–
velocityinteger––
voicesinteger––
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
barsinteger––
clip_indexintegeryes–
ghostnumber––
humanizeinteger––
pocketnumber––
seed–––
stylestring––
swingnumber––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
beats_per_chordnumber––
chromaticnumber––
clip_indexintegeryes–
densitystring––
highinteger––
keystring––
lowinteger––
phrase_arcstring––
progressionstringyes–
scalestring––
seed–––
swingnumber––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
clip_indexintegeryes–
note_lengthnumber––
pitchesstring––
repeatsinteger––
shiftnumber––
source_clip_index–––
track_indexintegeryes–
velocityinteger––
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
beats_per_chordnumber––
center_pitchinteger––
clip_indexintegeryes–
humanizeinteger––
progressionstringyes–
seed–––
stylestring––
track_indexintegeryes–
velocityinteger––
voicesinteger––
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
beats_per_chordnumber––
clip_indexintegeryes–
ghostnumber––
keystring––
octaveinteger––
progressionstringyes–
scalestring––
seed–––
track_indexintegeryes–
velocityinteger––
NameTypeReqDescription
resultstringyes–

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

NameTypeReqDescription
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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

NameTypeReqDescription
pathstringyes–
NameTypeReqDescription
resultstringyes–

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

NameTypeReqDescription
category_typestring––
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
clip_indexintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
clip_indexintegeryesZero-based Session-view clip-slot index on the track.
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

get_device_parameters ~44

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

NameTypeReqDescription
device_indexintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
device_indexintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_drum_pads ~45

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

NameTypeReqDescription
device_indexintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

No examples provided.

get_master_device_parameters ~28

List parameters of a device on the Master track.

NameTypeReqDescription
device_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
device_indexintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
device_indexintegeryes–
return_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_return_tracks ~17

List return tracks (index + name).

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
clip_indexintegeryes–
seed–––
timingnumber––
track_indexintegeryes–
velocityinteger––
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
beatsnumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

jump_to_cue ~44

Jump the playhead to the next locator/cue (direction >= 0) or the previous one (direction < 0).

NameTypeReqDescription
directioninteger––
NameTypeReqDescription
resultstringyes–

No examples provided.

jump_to_locator ~31

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

NameTypeReqDescription
locator_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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

NameTypeReqDescription
item_uristringyes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
item_uristringyesLoadable browser-item URI returned by search_browser.
return_indexintegeryesZero-based return-track index; 0 is Return A.
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
kit_pathstringyesSlash-separated Live browser path, such as "drums/acoustic".
rack_uristringyesLoadable browser-item URI returned by search_browser.
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

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

NameTypeReqDescription
track_indexintegeryes–
uristringyes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
item_uristringyes–
NameTypeReqDescription
resultstringyes–

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

NameTypeReqDescription
amountnumber––
clip_indexintegeryes–
gridstring––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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

NameTypeReqDescription
actionstringyes–
device_indexintegeryes–
index–––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
cleanupboolean––
end_beatnumberyes–
sourcestring––
start_beatnumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

redo ~16

Redo the last undone action in Live.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
device_indexintegeryesZero-based device position in the target track's device chain.
pathstringyes–
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
category–––
max_resultsinteger––
querystringyes–
NameTypeReqDescription
resultstringyes–

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.

NameTypeReqDescription
resultstringyes–

No examples provided.

Install

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

# add to Claude Code
claude mcp add wstierhout-ableton-live-mcp -- uvx mcp-server-ableton-live
Common questions

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 96 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. 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 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Ableton Live MCP Server server under?

Ableton Live MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.