Mmcp.market

Ableton Live MCP Server

by wstierhout·io.github.wstierhout/ableton-live-mcp·v1.8.1

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

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

17 stars665 downloads/wk

Reviews

Write one

Nobody has reviewed Ableton Live MCP Server yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Ableton Live MCP Server tools (100, 19 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • _mute_of
  • add_notes_to_clip

    REPLACES the clip's entire note content with the given notes. Use edit_notes to add or remove a subset without touching the rest.

  • adg_analyze

    Full offline analysis of a .adg rack or .adv preset: named macros (name/value), the chain + device tree (recursive, incl. racks-inside-racks with each device's kind/name/on-state and any sample), legacy macro-> parameter mappings, every referenced sample (name + relative path), the required Live edition, and — for drum racks — the pad map (pad -> MIDI note, label, and sample). No Live required.

  • adg_edition

    Classify the Live edition a saved .adg/.adv needs, offline: 'suite' if any Suite-only device is present (Operator, Wavetable, Echo, Drift, Meld, Sampler, Collision, ...), else 'standard' if any Standard-only device is present (EQ Eight, Compressor, Simpler, Impulse, Drum Rack, ...), else 'intro'. Returns the verdict plus which devices drove it, so an agent can tell whether a preset will load on th

  • adg_summary

    Summarize a saved .adg rack or .adv device preset WITHOUT Live running: name, rack type, total device count, top-level chain count, named-macro count, required Live edition (intro/standard/suite), and whether it is a drum kit (`is_drum_rack` is true when the preset is or wraps a Drum Rack — factory kits ship wrapped in an Instrument Rack). `path` is a filesystem path to a .adg or .adv file.

  • als_details

    Read mixing and arrangement detail from a saved .als, offline: the set's locators (name + beat time) and each track's fader volume, pan, and number of automation lanes. Complements als_summary for reviewing a mix without Live.

  • als_detect_key

    Detect the key/scale of a saved .als file WITHOUT Live running (Krumhansl-Kessler). Pools notes from every MIDI clip in the set, or only one track when `track_index` is given. `weight` selects the histogram weighting ("duration", "velocity", "product", "count"). `path` is a filesystem path to a .als file.

  • als_diff

    Diff two saved .als files (e.g. song_v4.als vs song_v5.als) offline: tempo/time-signature changes, tracks added/removed by name, and per-track deltas in device chain, clip count, note count, and mute state. Great for logging what changed between versions.

  • als_extract_midi

    Extract MIDI notes from a track in a saved .als file, as {pitch,start,duration,velocity} dicts per clip. `track_index` is the track's position in the set (see als_summary). No Live required.

  • als_find_unfinished

    Lint a saved .als for likely-unfinished work, offline: no master limiter/compressor, MIDI track with no instrument, MIDI clip with no notes, empty audio track, or muted tracks. Returns machine-readable issues so an agent can decide what to fix before rendering.

  • als_list_tracks

    List every track in a saved .als file with its clips (name, MIDI/audio, start, length, looping, sample path, note count). No Live required.

  • als_summary

    Summarize a saved .als file WITHOUT Live running: version/creator, tempo, time signature, and each track's kind, name, mute/solo, device names, clip count, and note count. `path` is a filesystem path to a .als file.

  • analyze_audio_file

    Measure local WAV (integer/float), AIFF/AIFF-C, FLAC, Ogg Vorbis, MP3, AAC or M4A/MP4 (AAC/ALAC) without Live: per-channel sample peak/RMS dBFS, DC offset, crest factor and full-scale samples. Analyzes the first max_seconds (default 30, maximum 120); marks partial results. Not LUFS or true peak. No upload. Compressed files are measured after decoding; this does not recover lost audio. Files are re

  • analyze_mix

    Heuristic session-state checks, NOT audio, peak, LUFS or headroom measurements. Scan the current live set for inspection leads: several high faders, a muted or empty Session track, or a MIDI track without devices. External routing and Arrangement audio may explain these states. Returns machine-readable findings so you can decide what to fix. Reads the session; changes nothing.

  • apply_recipe

    Scaffold a genre starter in one call: set the tempo, add Drums, Bass, and Chords MIDI tracks, try to load fitting instruments, and write generated parts. `name` is one from list_recipes (e.g. "lofi_beat", "house_groove"). tempo/key/scale/bars override the recipe defaults. Adds new tracks; it does not overwrite existing ones.

  • clear_automationwrite action

    Delete one device parameter's entire automation envelope from a clip.

  • clip_operation

    Structural clip edits. op: "duplicate_loop" (double the loop, duplicating notes - extend 2 bars to 4 before adding variation), "crop" (discard material outside the loop), "duplicate_region" (copy notes from region_start/region_length to destination_time, optionally transposing by transposition_amount semitones; pitch=-1 means all pitches).

  • create_audio_clipwrite action

    Create a new audio clip in an audio track's clip slot by importing a file.

  • create_clipwrite action

    Create an empty MIDI clip in a Session slot. Fails if the slot already has a clip (pick another clip_index or delete_clip first) or the track is an audio track. length is in beats (4.0 = one 4/4 bar). Typical chain: create_clip -> add_notes_to_clip -> fire_clip or duplicate_to_arrangement.

  • create_locatorwrite action

    Create or rename an Arrangement locator at an absolute beat position.

  • create_scenewrite action

    Create a new scene (row of clip slots). index -1 appends at the end.

  • delete_arrangement_clipwrite action

    Delete a clip from the Arrangement timeline by its position in get_arrangement_clips' list. NOTE: indices of later clips on the same track shift down by one after each delete - re-read get_arrangement_clips between deletes.

  • delete_clipwrite action

    Delete the existing Session-view clip in a slot, including its content.

  • describe_capabilities

    A high-level map of this server: the tool groups and what each covers, plus the conventions to follow, so you can orient before your first call. Set ABLETON_TOOLSETS to load only some groups. For the current live state, call get_session_snapshot; for mix problems, analyze_mix.

  • describe_device

    Return curated guidance for a common Ableton native device: which parameters matter, their units (note `curve` = perceptual, not proportional), sensible values, and mixing tips. `device_name` is case-insensitive (e.g. "EQ Eight", "Compressor", "Glue Compressor", "Reverb", "Auto Filter", "Saturator", "Utility", "Limiter", "Delay"). Pair with get_device_parameters for the live indices and ranges.

  • detect_clip_key

    Detect the key/scale of one Session MIDI clip (Krumhansl-Kessler). Reads the clip's notes and returns the best-fit key with a confidence (-1..1), margin over the runner-up, and the runner-up key. `weight` is how notes are weighted into the pitch-class histogram: "duration" (default), "velocity", "product", or "count". Reads only; changes nothing.

  • detect_session_key

    Detect the overall key/scale of the whole set by pooling the notes of every MIDI track's Session clips (Krumhansl-Kessler). Gives the harmonic center of the arrangement as a whole. `weight` selects the histogram weighting ("duration", "velocity", "product", "count"). Reads only.

  • detect_track_key

    Detect the key/scale of a whole track by pooling the notes of every Session clip it holds (Krumhansl-Kessler). Useful when a part is spread across several clips. `weight` selects the histogram weighting ("duration", "velocity", "product", "count"). Reads only; changes nothing.

  • duplicate_clip_to

    Copy a Session clip to any other track/scene slot (overwrites the destination slot). The cross-track way to build variations.

  • duplicate_to_arrangement

    Copy a Session-view clip into the Arrangement timeline.

  • edit_notes

    Edit a subset of notes in a MIDI clip without rewriting all of them. add = [{pitch,start_time,duration,velocity,mute}], remove = [{pitch,start_time}] (matched by pitch+start).

  • fire_clip

    Launch one existing Session-view clip using Live's launch quantization.

  • fire_scene

    Launch a Session-view scene using Live's launch quantization.

  • generate_additivewrite action

    Write a Philip-Glass additive process into a Session clip. REPLACES the clip's notes if it already exists.

  • generate_basslinewrite action

    Write a bassline following a chord progression. REPLACES existing notes.

  • generate_chord_progression

    Generate voiced chords and write them into one Session-view MIDI clip.

  • generate_drum_patternwrite action

    Write a genre drum pattern into a Session clip on a Drum Rack track. REPLACES the clip's notes if the clip exists.

  • generate_euclidean_drumswrite action

    Write a Euclidean (Bjorklund) rhythm for one drum voice into a Session clip. REPLACES the clip's notes if the clip exists.

  • generate_genre_progression

    Build a genre-idiomatic chord progression and write it as voiced chords. REPLACES existing notes.

  • generate_groovewrite action

    Write a pocketed drum groove into a Session clip. REPLACES existing notes.

  • generate_melodywrite action

    Write a voice-led melody over a chord progression. REPLACES existing notes.

  • generate_phasewrite action

    Write a Steve-Reich phasing pattern into a Session clip. REPLACES the clip's notes if it already exists.

  • generate_voiced_progressionwrite action

    Write voice-led jazz chord voicings into a Session clip. REPLACES existing notes.

  • generate_walking_basswrite action

    Write a quarter-note walking bass line under a progression. REPLACES notes.

  • get_arrangement_clips

    List all clips placed in the Arrangement timeline for a track.

  • get_browser_items_at_path

    Get browser items at a specific path in Ableton's browser.

  • get_browser_tree

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

  • get_clip_info

    Full clip state: loop points, markers, playing position, per-clip time signature; for audio clips also file path, gain display, and warp markers.

  • get_clip_notes

    Return every MIDI note in an existing Session-view MIDI clip.

  • get_device_parameters

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

  • get_device_routing

    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.

  • get_drum_pads

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

  • get_grooves

    List grooves in the Groove Pool (index + name) and the global groove amount.

  • get_master_device_parameters

    List parameters of a device on the Master track.

  • get_rack_chains

    List an Instrument/Effect Rack's chains and the devices inside each - previously unreachable nested devices. Use set_chain_device_parameter to control them.

  • get_return_device_parameters

    List parameters of a device on a Return track: names, values, min/max, display strings. Call before set_return_device_parameter.

  • get_session_info

    Return global Live-set and transport state without modifying the set.

  • humanize_clip

    Read a MIDI clip, apply timing + velocity humanization, and write it back. REPLACES the clip's notes with the jittered version.

  • list_known_devices

    List the devices that describe_device has curated guidance for.

  • list_recipes

    List the built-in composition recipes (name, description, and default tempo/key/scale/bars), for use with apply_recipe.

  • load_device_to_master

    Load a device/effect from the browser onto the Master/Main track (e.g. a limiter for mastering).

  • load_device_to_return

    Append one loadable browser device or preset to a return track's chain.

  • load_drum_kit

    Load a Drum Rack, then the first loadable kit at a browser path.

  • load_instrument_or_effect

    Load an instrument or effect onto a track using its URI.

  • preview_browser_item

    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.

  • quantize_clip

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

  • rack_variation

    Rack macro snapshots. action: "store" (save current macros as a variation), "recall" (restore variation `index`), "randomize" (randomize all macro knobs - instant sound-design exploration).

  • record_section

    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

  • replace_simpler_sample

    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.

  • search_browser

    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.

  • session_diff

    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 verif

  • set_arrangement_time

    Move the arrangement playhead to a specific position.

  • set_chain_device_parameter

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

  • set_clip_audio

    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.

  • set_clip_color

    Set an existing Session clip's palette color without changing its content.

  • set_clip_groove

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

  • set_clip_loopwrite action

    Update selected loop and launch markers on one existing Session clip.

  • set_clip_name

    Rename an existing Session-view clip without changing its notes or audio.

  • set_clip_signature

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

  • set_device_enabled

    Enable or bypass one device on a regular track.

  • set_device_parameter

    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.

  • set_device_routing

    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.

  • set_drum_pad

    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.

  • set_loop

    Set the global Arrangement loop region and its enabled state.

  • set_master_device_parameter

    Set one enabled parameter on a device in the Master track's chain.

  • set_return_device_parameter

    Set one enabled parameter on a device in a return track's chain.

  • set_scene_name

    Rename one Session-view scene without changing any clips in the row.

  • set_simpler_playback_mode

    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.

  • set_tempo

    Set the tempo of the Ableton session.

  • set_time_signature

    Set the Live set's global time signature, such as 4/4, 3/4, or 6/8.

  • setup_session

    Bootstrap a session in one call: set tempo and create named MIDI tracks, optionally loading an instrument found by name for each.

  • start_playback

    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.

  • stop_browser_preview

    Stop the browser preview started by preview_browser_item.

  • stop_clip

    Stop playing a clip.

  • stop_playback

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

  • switch_to_arrangement_view

    Switch Ableton's main window to the Arrangement view.

  • transform_clip

    Read a MIDI clip's notes, apply a classical motif transformation, and write the result. Overwrites the source clip unless ``dest_clip_index`` is given (in which case that destination slot is REPLACED instead).

  • undo

    Revert the most recent undoable Live-set action.

  • write_automationwrite action

    Write clip automation for a device parameter. points = [{"time": beats, "value": v}, ...]. Replaces any existing envelope for that parameter on the clip.

  • write_drum_gridwrite action

    Write drums from an ASCII grid (16th-note steps). REPLACES existing notes.

Public scan report

scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it

no findings
  • Code scan34 source files scanned25/25
  • Live reliabilityno gateway calls yet and no remote to proben/a
  • Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 2 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

What the publisher says

From the Ableton Live MCP Server repository's README, as published. We do not edit it. Read it on GitHub

<!-- mcp-name: io.github.wstierhout/ableton-live-mcp -->

Ableton Live MCP Server

Website and installation guide: abletonmcp.com

Control Ableton Live from an AI assistant. This is a Model Context Protocol (MCP) server that gives Claude, Cursor, Codex, or any MCP client 156 tools for building tracks, editing MIDI, loading instruments and effects, mixing, and mastering inside a running Ableton Live set, plus offline tools that read and diff saved .als project files with Live closed.

A Remote Script runs inside Live and exposes the Live API over a local socket. The MCP server turns that into typed, validated tools that an AI can call correctly, with per-tool documentation, read-only and destructive hints, and workflow prompts.

Quickstart

You need Ableton Live 11 or 12, Python 3.10+, and uv (brew install uv).

1. Register the MCP server.

Codex (local desktop, CLI or IDE host):

codex mcp add ableton -- uvx mcp-server-ableton-live@1.8.1
codex mcp list

For manual configuration and troubleshooting, see the Codex guide.

Claude Code:

claude mcp add AbletonMCP -s user -- uvx mcp-server-ableton-live@1.8.1

Claude Desktop or Cursor, in the mcpServers block of the config file:

{
  "mcpServers": {
    "AbletonMCP": {
      "command": "uvx",
      "args": ["mcp-server-ableton-live@1.8.1"]
    }
  }
}

(To run an unreleased revision instead, use uvx --from git+https://github.com/wstierhout/ableton-live-mcp ableton-live-mcp.)

2. Install the Remote Script. This copies the Live-side script into your User Library:

uvx mcp-server-ableton-live@1.8.1 install

Then activate the bridge in Live:

Control Surface list.

  1. Fully restart Ableton Live.
  2. Open Settings > Tempo & MIDI, then find the MIDI section and its

hardware controller rows unchanged.

  1. In an unused Control Surface row, select AbletonMCP. Leave existing
  1. In that same row, set Input: None and Output: None.

Link is a separate Settings page in current Live versions. In older versions, look under Link, Tempo & MIDI (or Link/MIDI) in Settings/Preferences, then find the MIDI section.

This selection is required for every MCP client. Installation copies the Remote Script; selecting the Control Surface starts it inside Live. The bridge uses a local socket, so its row does not need hardware MIDI input/output ports.

Run the installer again after upgrading the package so the Live-side script stays version-matched. See Ableton's guide to third-party Remote Scripts if the entry does not appear.

3. Check the setup.

uvx mcp-server-ableton-live@1.8.1 doctor --json

Use the same --user-library "/path/to/User Library" for install and doctor if your library has moved. If an older/different script exists, installation stops: review it before adding --replace. A unique backup is retained. Restart Live before diagnosing; doctor checks both installed bytes and the running bridge version.

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Grade history

  • 2026-09-19restoreBAscore 92

Install directly

claude mcp add ableton-live-mcp -- uvx mcp-server-ableton-live
Add to Cursor

Ableton Live MCP Server: common questions

Is Ableton Live MCP Server safe?
Yes, by our scan: it is graded A (92/100). Read the Ableton Live MCP Server safety report
How do I install Ableton Live MCP Server?
It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
Does Ableton Live MCP Server need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Ableton Live MCP Server maintained?
The last commit was 3 days ago (2026-09-17). The latest release is v1.8.1.
What can I use instead of Ableton Live MCP Server?
Servers from other publishers that do the same job: Music Studio MCP server.

Alternatives to Ableton Live MCP Server

Same job from other publishers: the closest match first, then the best rated.

  • Music Studio
    ABC sheet music + Strudel live coding studio with ext-apps widgets, harmony tools, and share links.
    B

More from wstierhout