🎛️ Local-first Ableton Live control for MCP clients: Remote Script bridge, stdio MCP server, and CLI with guarded, confirm-to-execute mutations.
Overview
Local-first Ableton Live control for MCP clients. It has three parts: a Remote Script bridge that runs inside Live, a stdio MCP server, and an ableton-mcp CLI. Every change to the Live Set is planned first and runs only with a single-use confirmation. Requirements: macOS, Ableton Live 12 (tested with 12.4.5), Node.js 22.13 or newer, and ffmpeg for the audio analysis tools. In Live's preferences, select as a Control Surface. Then check the connection: Register the stdio server with your MCP client, using the absolute path of your checkout: To try client wiring without Live, run ABLETON_MCP_FIXTURE=1 npm start. For a smaller initial tool catalog, set ABLETON_MCP_TOOL_PROFILE=core in the MCP server's environment. It advertises 63 common tools instead of the full catalog. Use the default all profile when an agent needs the complete MIDI, audio, rack, or snapshot toolset; restart the server after changing profiles.
README
ableton-mcp
Local-first Ableton Live control for MCP clients. It has three parts: a Remote Script bridge that runs inside Live, a stdio MCP server, and an ableton-mcp CLI. Every change to the Live Set is planned first and runs only with a single-use confirmation.
Install
Requirements: macOS, Ableton Live 12 (tested with 12.4.5), Node.js 22.13 or newer, and ffmpeg for the audio analysis tools.
git clone https://github.com/cavi-ai/ableton-mcp.git
cd ableton-mcp
npm ci
npm run cli -- install
In Live’s preferences, select CaviMcpBridge as a Control Surface. Then check the connection:
npm run cli -- doctor --json
Quickstart
Register the stdio server with your MCP client, using the absolute path of your checkout:
{
"mcpServers": {
"ableton": {
"command": "node",
"args": ["/path/to/ableton-mcp/apps/ableton-mcp/src/cli.mjs", "serve"]
}
}
}
Or call tools from the shell:
npm run cli -- status --json
npm run cli -- call list_devices --args '{"trackId":"track-0"}' --json
To try client wiring without Live, run ABLETON_MCP_FIXTURE=1 npm start.
For a smaller initial tool catalog, set ABLETON_MCP_TOOL_PROFILE=core in the MCP server’s environment. It advertises 63 common tools instead of the full catalog. Use the default all profile when an agent needs the complete MIDI, audio, rack, or snapshot toolset; restart the server after changing profiles. The CLI’s direct call command remains independent of the discovery profile.
What it does
- Reads: transport, tempo, key and scale, quantization, grooves, cue points, tracks, scenes, clips, notes, clip envelopes, devices and parameters, mixer and routing, rack hierarchies, and the Live browser.
- Guarded mutations: track, scene and clip lifecycle, device loading and parameters, MIDI note editing, mixing and routing, undo and redo, and panic.
- Music helpers: scale-aware chords, basslines, melodies, voicings, arpeggios, strums, drum patterns, humanization and velocity curves.
- Audio analysis: loudness, true peak, spectrum, pitch, transients and tuning of local audio files.
- Optional NKS preset catalog: search, tags and favorites for presets discovered from your plug-in libraries.
It publishes 228 tools, 9 concrete resources, 13 resource templates and 8 prompt templates. When Live’s Remote Script API doesn’t expose something, such as Arrangement automation, Group Track creation, or freezing, the tool reports that boundary and fails closed.
Documentation
- Overview, Installation, Quickstart
- Guarded mutations and MIDI clip variations
- Cancel agent work
- Understand a Set and explore instruments
- Understand how MIDI parts relate
- Compare instruments while keeping the original
- Preset catalog and NKS artwork
- Shared instrument buses and Native saving and recall
- CLI, Configuration, Tools
- Troubleshooting
Configuration
| Variable | Default | Purpose |
|---|---|---|
ABLETON_MCP_BRIDGE_SOCKET |
/tmp/cavi-ableton-mcp.sock |
Bridge socket. Read by both the bridge inside Live and the server. |
ABLETON_MCP_CATALOG_PATH |
unset | NKS catalog database for preset search. |
ABLETON_MCP_BROWSER_METADATA_PATH |
~/.cavi/ableton-mcp/browser-metadata.sqlite |
Tags and favorites for Live browser items. |
ABLETON_MCP_SPLICE_ROOTS |
Existing macOS ~/Splice/Sounds and ~/Library/Splice/Plug-in/samples directories; otherwise [] |
Override with a JSON array of absolute local Splice folders. Set [] to disable discovery. Local cache files are not proof of a download license; cloud search and sync are not supported. |
ABLETON_MCP_CONFIRMATION_DIR |
~/.cavi/ableton-mcp/confirmations |
Confirmation tokens for CLI call. |
ABLETON_MCP_SNAPSHOT_DIR |
~/.cavi/ableton-mcp/snapshots |
Saved track, device-chain, group-system, and MIDI-feel snapshots in separate subdirectories. |
ABLETON_MCP_FIXTURE |
unset | 1 makes npm start serve fixture data without Live. |
ABLETON_MCP_TOOL_PROFILE |
all |
core advertises 63 common tools to reduce MCP discovery context; all advertises every tool. |
Security
The bridge listens on a Unix domain socket and opens no TCP port. Live Set mutations require an observed state version, return a dry-run plan by default, and execute only with a 60-second, single-use token bound to the plan’s hash. See the security model and SECURITY.md.
Tests
npm test
npm run eval:core
npm run verify:package
npm test runs the pipeline and server suites, the bridge’s Python tests, and the docs tests. eval:core checks the compact MCP catalog and read-only tool behavior with MCP Eval. ImageMagick 7 (magick) and ffmpeg must be installed. verify:package packs the npm tarball, installs it into a temporary project, and drives the installed CLI and server.
Project status
See GitHub Releases and the changelog for released versions and changes. The tool surface can still change before 1.0.
Contributing
See CONTRIBUTING.md.
License
The code and the generic example artwork are MIT licensed. Third-party product names belong to their owners. No vendor artwork, logos or presets are included, and no endorsement is implied.
Install
This server does not publish a one-line install command.
Open the repository installation guideConfiguration
{
"mcpServers": {
"ableton": {
"command": "node",
"args": ["/path/to/ableton-mcp/apps/ableton-mcp/src/cli.mjs", "serve"]
}
}
}