@jterrats/ableton-live-mcp
v0.2.1
Published
Local MCP stdio server for controlling Ableton Live through a local bridge.
Maintainers
Readme
Ableton Live MCP
Local MCP stdio server for inspecting and controlling Ableton Live through a local bridge.
Current package version: 0.2.1.
Product site: ableton-mcp.jterrats.dev
This repo does not assume a specific Ableton integration layer. The MCP server speaks JSON-RPC over stdio to an MCP client, then forwards tool calls to a local HTTP bridge that you can implement with Max for Live, Ableton's Extensions SDK, a Python Remote Script helper, or another Live automation layer.
Product Workflows
Start with docs/product-workflows.md for end-to-end setup, MIDI import, instrument assignment, arrangement, mixing, mastering, validation, and export workflows. The guide also documents safe operating rules for open user sets, destructive commands, explicit export approval, and unsupported bridge operations.
Tools
The exact tools/list response is capability-aware. It reads the active
bridge's read-only GET /capabilities contract, hides hard-unsupported bridge
actions, keeps MCP-local analysis/risk/workflow tools, and labels
target-dependent tools Conditional. Clients should re-list tools after
reconnecting or changing bridges. An unavailable or malformed handshake fails
closed and does not advertise unverified Live writes.
Read and inspect:
ableton_get_statusableton_get_projectableton_get_arrangementableton_get_scene_tempo_signature_capabilitiesableton_list_pluginsableton_search_browserableton_diagnose_pluginsableton_get_production_reportableton_diagnose_playbackableton_get_metersableton_list_returnsableton_list_busesableton_get_clip_notesableton_launch_clipableton_launch_sceneableton_get_device_parametersableton_analyze_audioableton_analyze_mixableton_get_bridge_observabilityableton_evaluate_action_riskableton_list_risk_policyableton_match_preset_intentableton_list_workflow_plansableton_get_workflow_plan
Project, transport, track, and clip editing:
ableton_create_snapshotableton_rollback_snapshotableton_set_tempoableton_set_signatureableton_set_scene_tempo_signature_overridesableton_start_transportableton_stop_transportableton_create_midi_trackableton_duplicate_trackableton_freeze_trackableton_flatten_trackableton_modify_trackableton_create_midi_clipableton_consolidate_clipableton_delete_clipableton_humanize_clipableton_quantize_clipableton_apply_grooveableton_import_midi
Devices, routing, returns, arrangement, mastering, and export:
ableton_load_deviceableton_load_master_deviceableton_select_vst_for_midiableton_set_device_parameterableton_reorder_deviceableton_delete_deviceableton_set_automationableton_create_return_trackableton_modify_returnableton_delete_return_trackableton_modify_masterableton_apply_mastering_chainableton_analyze_and_apply_masteringableton_export_renderableton_bounce_tracksableton_insert_arrangement_clipableton_add_locator
Production Workflow
For meaningful LLM control, the recommended sequence is:
ableton_get_status,ableton_get_project,ableton_get_arrangement, andableton_get_production_reportto inspect transport, tracks, devices, clips, locators, routing, meters, returns, and mixer state.ableton_create_snapshotbefore broad edits. For real user sets, also save or duplicate the.alsfile before destructive, export, or mastering work.ableton_list_pluginsandableton_search_browserso the LLM can choose available instruments, effects, presets, samples, racks, grooves, plugins, and Max devices. Useableton_match_preset_intentfirst when the request is musical, such as realistic violin, concert piano, classical guitar, flute, or concert hall mastering.ableton_import_midi,ableton_create_midi_clip, or both.ableton_humanize_clip,ableton_quantize_clip, orableton_apply_groovefor controlled MIDI timing edits.ableton_select_vst_for_midi,ableton_load_device, orableton_load_master_deviceto assign sounds and processing.ableton_duplicate_track,ableton_consolidate_clip,ableton_insert_arrangement_clip,ableton_add_locator,ableton_modify_track,ableton_modify_return,ableton_modify_master,ableton_set_device_parameter, andableton_set_automationfor arrangement and mix moves.ableton_freeze_trackandableton_flatten_trackwhen committing tracks to audio is supported by the active bridge.ableton_apply_mastering_chainfor master bus preparation.ableton_export_render,ableton_bounce_tracks, andableton_analyze_audio, andableton_analyze_mixfor approved export, stem, and audio-validation workflows. File analysis runs locally in the MCP process and does not depend on Ableton's Remote Script meters.
Risk tiers and default blocking recommendations are documented in
docs/risk-policy.md and exposed through
ableton_evaluate_action_risk and ableton_list_risk_policy. High-level
plan-only workflows are exposed through ableton_list_workflow_plans and
ableton_get_workflow_plan. Render/export support is documented in
docs/render-export-plan.md; the current Python
Remote Script bridge returns explicit 501 unsupported responses for
render-backed routes instead of simulating Live renders.
Quick Start
From npm:
npx -y @jterrats/ableton-live-mcp --helpInstall the bundled Ableton Remote Script:
npx -y @jterrats/ableton-live-mcp install-remote-script --app-path "/Applications/Ableton Live 12 Lite.app"Then restart Ableton Live, select AbletonMcpBridge in Preferences -> Link,
Tempo & MIDI, and verify the installation:
npx -y @jterrats/ableton-live-mcp doctor --app-path "/Applications/Ableton Live 12 Lite.app"Run the MCP stdio server:
npx -y @jterrats/ableton-live-mcpLocal development from this repo:
npm run smokeRun the server:
npm startRun the deterministic local development bridge:
npm run bridgeFor dry-run development without Ableton:
ABLETON_MCP_DRY_RUN=1 npm startMCP Client Config
Use this shape in an MCP client that supports stdio servers:
{
"mcpServers": {
"ableton-live": {
"command": "npx",
"args": ["-y", "@jterrats/ableton-live-mcp"],
"env": {
"ABLETON_BRIDGE_URL": "http://127.0.0.1:9789"
}
}
}
}Set ABLETON_MCP_DRY_RUN=1 in env when you want the tools to return the
intended bridge calls without touching Ableton.
Bridge
The local bridge must listen on ABLETON_BRIDGE_URL and implement the HTTP
contract in docs/ableton-bridge-contract.md.
This repo includes a deterministic development bridge for local MCP integration
tests. It listens on 127.0.0.1:9789 by default, or on ABLETON_BRIDGE_PORT
when configured, and implements the product workflow surface without requiring
Ableton Live.
For the real Ableton Live adapter, install the Python Remote Script documented
in docs/ableton-python-remote-script.md.
That script runs inside Ableton and exposes the same bridge endpoints on
127.0.0.1:9789.
On this machine Ableton Live Lite and Suite were detected. Install the bundled Remote Script into the edition you actually launch, for example Suite:
npx -y @jterrats/ableton-live-mcp install-remote-script --app-path "/Applications/Ableton Live 12 Suite.app"If macOS rejects writes to /Applications with Operation not permitted, close
Ableton and retry with sudo -E npx -y @jterrats/ableton-live-mcp
install-remote-script --app-path "/Applications/Ableton Live 12 Suite.app".
If sudo is still blocked, grant App Management or Full Disk Access to your
terminal app in System Settings -> Privacy & Security, then rerun the installer.
Finder manual copy with authentication is also valid.
Release readiness checks are documented in docs/release-checklist.md.
Edition detection, Lite/Intro capacity guards, and Standard/Suite behavior are documented in docs/ableton-editions.md.
Keep the bridge local-only. Do not bind it to a public network interface unless you add authentication and understand the risk of remote DAW control.
