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 (7 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
set_ableton_link ~44

Enable or disable Ableton Link, which syncs tempo and phase with other Link-enabled apps and devices on the local network.

NameTypeReqDescription
enabledbooleanyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_arrangement_overdub ~37

Toggle arrangement overdub: recording layers MIDI onto existing arrangement clips instead of replacing them.

NameTypeReqDescription
enabledbooleanyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_arrangement_time ~60

Move the arrangement playhead to a specific position. Parameters: - time: Position in beats from the start of the arrangement (e.g. 8.0 = bar 3 in 4/4)

NameTypeReqDescription
timenumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_chain_device_parameter ~85

Set a parameter on a device INSIDE a rack chain (indices from get_rack_chains). Values clamp to the parameter's native range.

NameTypeReqDescription
chain_device_indexintegeryes–
chain_indexintegeryes–
device_indexintegeryes–
parameter–yes–
track_indexintegeryes–
valuenumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_clip_audio ~120

Set audio-clip properties. gain 0-1, pitch_coarse semitones (-48..48), pitch_fine cents, warping on/off, warp_mode 0=Beats 1=Tones 2=Texture 3=Re-Pitch 4=Complex 6=Complex Pro.

NameTypeReqDescription
clip_indexintegeryes–
gain–––
pitch_coarse–––
pitch_fine–––
track_indexintegeryes–
warp_mode–––
warping–––
NameTypeReqDescription
resultstringyes–

No examples provided.

set_clip_color ~111

Set an existing Session clip's palette color without changing its content. This is a visual organization change only. Use set_track_color to recolor the track header instead. Repeating the same color has no additional effect.

NameTypeReqDescription
clip_indexintegeryesZero-based Session-view clip-slot index on the track.
color_indexintegeryesColor index in Live's 70-color palette (0-69).
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_clip_groove ~57

Attach a Groove Pool groove to a clip by index (swing/timing feel). Pass no groove_index to clear.

NameTypeReqDescription
clip_indexintegeryes–
groove_index–––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_clip_loop ~204

Update selected loop and launch markers on one existing Session clip. Provide at least one optional field; omitted fields stay unchanged. `start` and `end` are loop-brace positions in clip-relative beats and end must be after start. `start_marker` controls where non-looped launch begins; `looping` enables or disables repetition. Use set_loop for the Arrangement's global loop region, not a clip, and get_clip_info to inspect current values.

NameTypeReqDescription
clip_indexintegeryesZero-based Session-view clip-slot index on the track.
end––Optional position in beats from the start of the clip.
looping––Optional state change: true turns it on, false turns it off.
start––Optional position in beats from the start of the clip.
start_marker––Optional position in beats from the start of the clip.
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_clip_name ~107

Rename an existing Session-view clip without changing its notes or audio. The slot must contain a clip. Use this for the clip label; use set_track_name for the track label. Repeating the same name has no additional effect.

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

No examples provided.

set_clip_signature ~55

Set a clip's own time signature (polymeter / odd-bar loops).

NameTypeReqDescription
clip_indexintegeryes–
denominatorintegeryes–
numeratorintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_clip_trigger_quantization ~62

Global launch quantization for firing clips/scenes. 0=None (instant, good for auditioning), 4=1 bar (default), 7=1/4 note, 13=1/32.

NameTypeReqDescription
valueintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_crossfade_assign ~121

Assign one regular track to crossfader side A, neither side, or side B. This configures which side affects the track; it does not move the crossfader or change track volume immediately. Use set_crossfader afterward to blend the A/B groups. Repeating the same assignment has no additional effect.

NameTypeReqDescription
assignintegeryesCrossfader assignment: 0 is A, 1 is none, 2 is B.
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_crossfader ~44

Set the master crossfader (-1.0 = full A, 0 = center, 1.0 = full B).

NameTypeReqDescription
valuenumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_device_enabled ~131

Enable or bypass one device on a regular track. `true` turns the device on; `false` bypasses its processing while preserving the device and parameter values. This changes audible signal flow but not clip content. Use set_track_mute to silence the whole track, or set_device_parameter to change one control.

NameTypeReqDescription
device_indexintegeryesZero-based device position in the target track's device chain.
enabledbooleanyesTrue turns the requested state on; false turns it off.
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_device_parameter ~163

Set a parameter after reading get_device_parameters. Numbers use the native range; strings use display units ('250 Hz', '-6 dB') or exact enum labels. Unsupported display mappings fail before writing. Returns Live's actual readback and warnings.

NameTypeReqDescription
device_indexintegeryesZero-based device position in the target track's device chain.
parameter–yesParameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.
track_indexintegeryesZero-based index of a regular track in the Live set.
value–yesNative number (clamped/quantized), exact enum label, or display text with Hz/kHz/ms/s/dB/% units, e.g. '250 Hz'. Unsupported mappings fail before writing.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_device_routing ~118

Set a device's sidechain audio input. `field` is "input_routing_type" (the source track/return) or "input_routing_channel" (Pre FX / Post FX / Post Mixer); `display_name` is one of the options from get_device_routing. For ducking, also enable the device's Sidechain parameter via set_device_parameter.

NameTypeReqDescription
device_indexintegeryes–
display_namestringyes–
fieldstringyes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_drum_pad ~85

Mute/solo/rename a single Drum Rack pad by its MIDI note (e.g. 36=kick). Per-pad muting = instant beat variations without touching the notes.

NameTypeReqDescription
device_indexintegeryes–
mute–––
name–––
noteintegeryes–
solo–––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_fold_state ~50

Fold (collapse) or unfold a group track. Errors if the track is not a group track (see get_group_info).

NameTypeReqDescription
foldedboolean––
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_groove_amount ~50

Set the global Groove Amount (0.0 to 1.0), which scales how strongly every clip's assigned groove is applied across the whole set.

NameTypeReqDescription
amountnumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_loop ~119

Set the global Arrangement loop region and its enabled state. `start` is an absolute beat and `length` is a positive beat duration. The region is updated even when `enabled=false`; playback simply will not repeat it. Use set_clip_loop for a Session clip's loop braces, not the Arrangement.

NameTypeReqDescription
enabledboolean–True turns the requested state on; false turns it off.
lengthnumberyesPositive duration or region length in beats.
startnumberyesPosition in beats from the start of the Arrangement.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_master_device_parameter ~187

Set one enabled parameter on a device in the Master track's chain. Call get_master_device_parameters first and use its parameter name/index and native min/max; numeric out-of-range values are clamped. Display strings with supported units or exact enum labels also work; unsupported mappings fail before writing. This affects the full mix. Read back the resulting display. Use set_device_parameter for a regular track or set_return_device_parameter for a return track.

NameTypeReqDescription
device_indexintegeryesZero-based device position in the target track's device chain.
parameter–yesParameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.
value–yesNative number (clamped/quantized), exact enum label, or display text with Hz/kHz/ms/s/dB/% units, e.g. '250 Hz'. Unsupported mappings fail before writing.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_master_volume ~44

Set the Main/Master track volume. Range 0.0-1.0 where 0.85 = 0 dB.

NameTypeReqDescription
volumenumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_metronome ~27

Turn Live's metronome click on/off.

NameTypeReqDescription
enabledbooleanyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_record_mode ~99

Arm or disarm Live's global Arrangement Record state. `true` enables Arrangement recording; `false` disables it. Enabling alone does not record: arm the intended tracks with set_track_arm, then use start_playback. Use set_session_record or trigger_session_record for Session slots instead. Repeating the current state has no additional effect.

NameTypeReqDescription
enabledbooleanyesTrue turns the requested state on; false turns it off.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_return_device_parameter ~194

Set one enabled parameter on a device in a return track's chain. Call get_return_device_parameters first and use its parameter name/index and native min/max; numeric out-of-range values are clamped. Supported display-unit strings and exact enum labels also work; unsupported mappings fail before writing. Use set_device_parameter for a regular track or set_master_device_parameter for the full-mix chain.

NameTypeReqDescription
device_indexintegeryesZero-based device position in the target track's device chain.
parameter–yesParameter name or zero-based parameter index returned by the matching get_*_device_parameters tool.
return_indexintegeryesZero-based return-track index; 0 is Return A.
value–yesNative number (clamped/quantized), exact enum label, or display text with Hz/kHz/ms/s/dB/% units, e.g. '250 Hz'. Unsupported mappings fail before writing.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_scene_name ~73

Rename one Session-view scene without changing any clips in the row. Use set_clip_name for an individual clip. Repeating the same name has no additional effect.

NameTypeReqDescription
namestringyesNew display name for the Live object.
scene_indexintegeryesZero-based Session-view scene (row) index.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_send ~64

Set a track's send level (send_index 0 = Return A, 1 = Return B, ...). Range 0.0-1.0.

NameTypeReqDescription
send_indexintegeryes–
track_indexintegeryes–
valuenumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_session_automation_record ~39

Toggle recording of parameter changes into Session clip envelopes - an alternative to write_automation for captured knob rides.

NameTypeReqDescription
enabledbooleanyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_session_record ~38

Toggle Session record (records into armed tracks' selected Session slots; also enables MIDI overdub into playing clips).

NameTypeReqDescription
enabledbooleanyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_simpler_playback_mode ~95

Set a Simpler device's playback mode: 0 = Classic, 1 = One-Shot, 2 = Slicing. Slicing chops the sample into playable slices, central to lofi/hip-hop sampling. Errors if the device at that index is not a Simpler.

NameTypeReqDescription
device_indexintegeryes–
modeintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_song_scale ~65

Set the song's key context. root_note 0-11 (0=C, 2=D...), scale_name e.g. "Major", "Minor", "Dorian". Read current values via get_session_info.

NameTypeReqDescription
root_note–––
scale_name–––
NameTypeReqDescription
resultstringyes–

No examples provided.

set_swing_amount ~39

Set the global swing amount (0.0 to 1.0) used when quantizing with swing.

NameTypeReqDescription
amountnumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_tempo ~37

Set the tempo of the Ableton session. Parameters: - tempo: The new tempo in BPM

NameTypeReqDescription
temponumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_time_signature ~131

Set the Live set's global time signature, such as 4/4, 3/4, or 6/8. This changes bar/grid and metronome interpretation but does not rewrite clip notes. Use set_clip_signature instead when only one clip needs a different meter for polymeter. Repeating the same signature has no additional effect.

NameTypeReqDescription
denominatorintegeryesBeat-note denominator, such as 4 in 4/4 or 8 in 6/8.
numeratorintegeryesNumber of beats per bar, such as 4 in 4/4.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_arm ~49

Arm or disarm a track for recording (fails on tracks that can't be armed, e.g. group/return tracks).

NameTypeReqDescription
armbooleanyes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_color ~41

Set a track's color by index (0-69 in Live's palette).

NameTypeReqDescription
color_indexintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_monitoring ~56

Set input monitoring: 0=In (always hear input), 1=Auto, 2=Off. Required for resampling/bounce workflows.

NameTypeReqDescription
stateintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_mute ~112

Set one regular track's mute state (`true` mutes; `false` unmutes). Muting silences that track in Live but preserves its clips, devices, and mixer settings. Use set_track_solo to audition a track relative to the rest, or stop_clip when only Session clip playback should stop.

NameTypeReqDescription
mutebooleanyesTrue turns the requested state on; false turns it off.
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_name ~56

Set the name of a track. Parameters: - track_index: The index of the track to rename - name: The new name for the track

NameTypeReqDescription
namestringyes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_pan ~115

Set one regular track's stereo pan position; 0.0 is centered. Live clamps the value to the track's native range. This changes mixer state, not the audio file or clip content. Use set_master_device_parameter for a device control, and set_crossfader for A/B crossfading.

NameTypeReqDescription
pannumberyesPan position from -1.0 (left) to 1.0 (right).
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_routing ~101

Set track routing by display name. field: input_routing_type | output_routing_type | input_routing_channel | output_routing_channel. Enables sidechain sources, bus routing, and resampling (route a track's output into another track's input, arm, record). Get options from get_track_routing first.

NameTypeReqDescription
display_namestringyes–
fieldstringyes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_solo ~111

Set one regular track's solo state (`true` solos; `false` unsolos). Solo changes monitoring relative to other tracks and does not alter clip or device content. Other tracks may remain soloed, so clear them separately when exclusive auditioning is required. Use set_track_mute to silence this track.

NameTypeReqDescription
solobooleanyesTrue turns the requested state on; false turns it off.
track_indexintegeryesZero-based index of a regular track in the Live set.
NameTypeReqDescription
resultstringyes–

No examples provided.

set_track_volume ~51

Set track volume. Range 0.0-1.0 where 0.85 = 0 dB (unity gain).

NameTypeReqDescription
track_indexintegeryes–
volumenumberyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

setup_session ~114

Bootstrap a session in one call: set tempo and create named MIDI tracks, optionally loading an instrument found by name for each. tracks: [{"name": "Drums", "instrument": "drum kit"}, {"name": "Bass", "instrument": "upright bass"}, ...]. "instrument" is a search_browser query (best match is loaded); omit it to create an empty track. Returns a per-track report with the loaded item names.

NameTypeReqDescription
temponumberyes–
tracksarrayyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

start_playback ~44

Start Arrangement playback from the current song time. NOTE: the response reports the PRE-command state (may say playing=false right after starting) - confirm with get_session_info.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

stop_all_clips ~22

Stop every playing Session clip (does not stop the transport).

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

stop_browser_preview ~19

Stop the browser preview started by preview_browser_item.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

stop_clip ~59

Stop playing a clip. Parameters: - track_index: The index of the track containing the clip - clip_index: The index of the clip slot containing the clip

NameTypeReqDescription
clip_indexintegeryes–
track_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

stop_playback ~29

Stop playback. NOTE: the response reports the PRE-command state - confirm with get_session_info.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

switch_to_arrangement_view ~24

Switch Ableton's main window to the Arrangement view. Parameters:

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.