Skip to content

Releases

v1.1.0

Choose a tag to compare

@zdhoward zdhoward released this 13 Nov 03:00
  • Published on PyPI as zx-ableton-live-mcp (abletonlivemcp is refused there as too similar to
    an existing project). The import name, commands and Remote Script keep the abletonlivemcp names.
    Releases are uploaded by a tag-triggered GitHub workflow using PyPI trusted publishing.
  • Track selectors describe their string forms ("return:N", "master") in every tool's
    input schema. The default-listing byte budget rises to 84 KB to fit them.
  • live_get_clips concise rows keep end and arrangement_length for arrangement clips;
    length stays the loop/source length.
  • Warp-marker reads flag Live's trailing sentinel marker (1/32 beat after the last real
    one) with "sentinel": true instead of hiding it. Remote Script change: reinstall it.
  • live_get_device_parameters on a device adds a device header (name, class_name,
    type; needs the updated Remote Script) and tidies display: surrounding whitespace is
    stripped and a doubled unit collapses ("4.00dB dB" -> "4.00dB").
  • live_get_device_parameters takes names (up to 64): it reads every page and returns
    only those parameters (case-insensitive) plus missing. Refused with a nonzero offset.
  • live_get_scenes takes only_clips (with include_slots): slot rows without a clip
    are dropped. Without include_slots it is refused.
  • live_get_notes accepts response_format: "summary": per page, note_count,
    distinct_pitches, pitch_counts, time_range and velocity_range replace the note
    rows; total, cursor and the other paging fields are unchanged.
  • Fix: an unexpected exception in a tool (for example a KeyError) now reaches the client
    as <Type>: tool_failed (outcome unknown; ...) instead of a bare internal error. Its
    text is withheld and only the type is logged; MCP protocol errors pass through.

Install: pip install zx-ableton-live-mcp (PyPI: https://pypi.org/project/zx-ableton-live-mcp/). Close Live and rerun abletonlivemcp-install after upgrading.

AbletonLiveMCP 1.0.0

Choose a tag to compare

@zdhoward zdhoward released this 12 Nov 17:14

AbletonLiveMCP 1.0.0

AbletonLiveMCP is a Model Context Protocol server for Ableton Live. AI assistants like
Claude can read your Live Set and make edits through the bundled Remote Script.

This release adds setup instructions for Claude Desktop, Claude Code, Cursor and
VS Code, along with upgrade guidance and troubleshooting. The package includes the
host server and Remote Script. Python 3.10 or later is required.

Install

Once the tag is published, install from GitHub:

python -m pip install "git+https://github.com/zdhoward/abletonlivemcp@v1.0.0"
abletonlivemcp-install "<path to your User Library>"

Close Live before running the installer. Restart Live and select AbletonLiveMCP under
Settings > Link, Tempo & MIDI > Control Surface. Follow the
README setup guide for an isolated
installation and MCP client configuration. These instructions do not require PyPI.

Upgrade

Upgrade the host package, close Live and reinstall the Remote Script in the same User
Library. Restart Live and your MCP client, then call live_hello to check that both
copies match. Preserve the private bridge config. If the installer refuses an unknown
or modified script folder, move it outside Remote Scripts as a backup before installing.

Scope and limits

Live 12.2 on Windows is qualified for the cases in the
validation record.
macOS and other Live versions are untested. I have kept the Beta package classifier
because the qualification is limited. No new Live run was performed for this packaging
and documentation release; the record preserves the original build IDs.

Writes start disabled. Once enabled, ordinary edits can run without another prompt.
Deletion needs a separate permission and a confirmation form. MIDI file tools require
explicit allowed roots. See
local permissions.

The server cannot save or open a Set through Live's API. Set-label persistence across
save/reopen remains experimental. Some failure paths have offline test coverage only.
Read state after an unknown outcome before writing again.

See the 1.0.0 changelog
for fixes included since 0.11.0.

v0.11.0

Choose a tag to compare

@zdhoward zdhoward released this 11 Nov 20:58

Beta for hands-on use in real projects. Built for Ableton Live 12.2 on Windows. Read-only by default.

Install

python -m pip install "git+https://github.com/zdhoward/abletonlivemcp@v0.11.0"
# or: python -m pip install abletonlivemcp-0.11.0-py3-none-any.whl (attached below)
abletonlivemcp-install "<path to your User Library>"
claude mcp add abletonlive --scope user -- python -m abletonlivemcp.server

Then start Live and pick AbletonLiveMCP as a Control Surface.

Upgrade notes

  • Reinstall the Remote Script and restart Live: server and script must be the same version.
  • Toolsets are read once when the server starts; start a new client session after changing them.

Highlights

  • Timeline work by default: automation and arrangement toolsets are on (36 tools).
    live_create_arrangement_clips copies Session clips (with their automation) onto the Arrangement.
  • Session automation takes 2-3 points per clip and steps at beat 0; parameters by name or index.
  • live_create_clips if_exists: skip|replace makes scripts repeatable.
  • Display targets on several continuous parameters in one call ("100 Hz", "25 %") work.
  • live_hello reports read_only, dev_probes and how to enable toolsets.
  • A UTF-8 BOM in bridge.json is accepted.
  • New examples/filter_sweep_buildup.py.

Full list: CHANGELOG.md.

v0.10.0

Choose a tag to compare

@zdhoward zdhoward released this 11 Nov 16:32

Upgrade notes

  • Reinstall the Remote Script (abletonlivemcp-install) and restart Live; server and script
    must be the same version.
  • MIDI import/export now need ABLETONLIVEMCP_FILE_ROOTS; home and temp are no longer allowed.

Changed

  • Advertise typed outputs for all tools and bounded chain, browser, and note inputs.
  • Core tool descriptions name the neighbouring tool to use instead.
  • Developer probe modules and proof metadata are no longer shipped in wheels or source
    archives; the Remote Script loads probes all-or-none from a source checkout only.
  • ABLETONLIVEMCP_AUDIT=1 logs every allowed write (tool and permissions, no arguments).
  • README documents Claude Code config scopes (user scope recommended) and first use on a real project.
  • Add local transport/edit/files/delete permissions and optional read-only discovery.
  • Require explicit MIDI file roots instead of granting home/temp access by default.
  • Keep personal knowledge and development material local; check runtime-only archives
    and clean stdio wheel installation in CI. Preserve tests and their support files in Git.
  • Existing private configs without a permission list retain their previous behavior;
    new configurations start read-only with transport/edit permissions only.

Install

pip install "abletonlivemcp @ git+https://github.com/zdhoward/abletonlivemcp@v0.10.0"
abletonlivemcp-install

Then restart Live and select AbletonLiveMCP as a Control Surface. See the README for Claude Code scope setup.

v0.9.0 beta

v0.9.0 beta Pre-release
Pre-release

Choose a tag to compare

@zdhoward zdhoward released this 11 Nov 15:39

AbletonLiveMCP v0.9.0 beta is ready for hands-on testing with Ableton Live 12.2 on Windows and Python 3.10+.

  • 57 tools across session, mixer, clips, MIDI, devices, stock drums, nested Simpler, arrangement and local organization; 30 tools enabled by default.
  • Authenticated local bridge, read-only defaults, confirmed destructive operations and verified writes.
  • 388 offline tests pass; Ruff passes. Real Live validation: 34 scenarios passed and 3 explicitly unsupported, with no failed or blocked scenarios.

Install the attached wheel with python -m pip install abletonlivemcp-0.9.0-py3-none-any.whl, then follow the README to install the Remote Script and configure your MCP client.

See validation and beta limits. Automatic rack grouping/macro mapping, custom drum-pad loading and some plugin preset operations are unsupported; Set-label persistence after reopening remains unproved.