- A third MIDI track created; all three named Chords, Bass, Drums and coloured — six writes,
one ⌘Z - Drift loaded from the browser
- Four-bar clips written — 40 notes, kick on every quarter, hats offbeat with alternating velocity so it breathes
- Scene 1 fired
An MCP server for Ableton Live 12
Say it.
It lands in your Set.
Claude gets the whole of Live — every track, clip, device and knob — not a menu of twenty commands. Ask for a loop, a sound, a filter sweep. Watch it appear. Press ⌘Z if you hate it.
What it feels like
Three things you'd actually say
Everything on the right is something the tutorial does against a real Set — the numbers are its numbers. Only the asks are paraphrased.
- Searches Drift's 73 parameters by name. Cutoff finds nothing — Drift calls it LP Freq — so it looks instead of guessing
- Reads the range first (0.0–1.0), then writes a rising sweep: 0.35, 0.5, 0.72, 0.95 — one step a bar
- Reads the envelope back so you can check it before it plays
- Observers were already watching: tempo 123.5 → 122.5 → 123.5 …, and a fader on track 1 moved to 0.72
- Those exact events are in the tutorial — a human dragging Live's tempo while it was being written
- Nothing else in the field sees this.
Why this one
Built on the object model, not a list of commands
Every other Ableton MCP server hand-writes one command per feature, so what Claude can reach is whatever someone found time to type. This one exposes Live's own object model — the same contract Max for Live uses — so the whole instrument is in reach.
Everything, not a menu
47 object types and 922 reachable members on Live 12.2.7 — every parameter on every native device, every clip property, every mixer control, measured against a running Live rather than counted from a README. The largest command-list server stops at 128.
It sees what you do
Nudge a fader, rename a track, drop a clip — in Live, with your hands — and Claude knows. Nothing else in the field reports changes you make by hand — the rest only know what they changed themselves.
⌘Z still works
Edits land as real undo steps. A batch of renames, colours and time signatures collapses into one. Live insists that tempo, volume and device parameters keep their own step — so occasionally it's ⌘Z twice. The tutorial tells you which is which.
It asks before it deletes
Anything that removes, clears or crops refuses to run until it's confirmed. Your Set isn't in version control; the server behaves like it knows that.
New Live, nothing to update
Live 12.3 added insert_device; 12.4 added replace_sample. Here they're reachable the day you upgrade, with no new code — the object model is read from Live at runtime, not typed in by hand and left to go stale.
Works with
What you need
| Ableton Live | Live 12, any editionIt's a Remote Script — Max for Live isn't required. Measured on 12.2.7. |
|---|---|
| Computer | macOSWindows untested. |
| Assistant | Claude Code, or any MCP client |
| Runtime | Python 3.11 — the installer brings its own; from source, uv makes one |
| Native devices & racks | Every parameter, every macro |
| VST / AU / VST3 | Parameters you've exposed with Live's Configure buttonLive only shows a plugin's controls to scripts once you've configured them. Claude can still read the plugin's full parameter list and tell you what to expose. |
| Network | None. Talks to Live on 127.0.0.1:9878Local only, and a different port from other Ableton MCP servers, so they coexist. |
Install
Two ways in
Musicians: one download. Developers: five steps. Either way you'll restart Live once and your Claude session once.
Musicians: download the installer
Get Sideman-0.1.0.pkg from the releases page. It installs into your home folder, needs no password, and brings its own Python. It isn't notarized yet, so the first time macOS will refuse a double-click: right-click the .pkg → Open → Open. On macOS 15 and later that menu may not appear — open it once, then System Settings → Privacy & Security → Open Anyway. Then follow the last screen — it ends with the one step no installer can do for you: Preferences → Link, Tempo & MIDI → Control Surface → AbletonLOM.
Developers: from source
Get the code and set up Python
git clone https://github.com/slegroux/sideman && cd sideman
uv venv --python 3.11 .venv
VIRTUAL_ENV=.venv uv pip install -e . # explicit, or uv may target a conda env
Link it into Live
Symlinks the Remote Script into Ableton's User Library, so later updates need no reinstall.
./scripts/install.sh
Turn it on in Live
Preferences → Link, Tempo & MIDI → Control Surface, then pick AbletonLOM in any free slot. If Live was already open when you ran step 2, restart it first — Live only scans for scripts at startup.
Introduce it to Claude
--scope user matters — without it the server only exists inside this folder. The second line is optional and teaches Claude how Live's paths work; it's worth it.
claude mcp add --scope user sideman -- "$PWD/.venv/bin/python" -m mcp_server.server
./scripts/install.sh --skills # links the skill into ~/.claude/skills (and ~/.codex/skills)
Restart your Claude session and say something
MCP servers load when a session starts. Then try: “What's in my Set?” — or go straight to the tutorial and build a loop from nothing.
Go deeper