Sideman

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.

922 reachable members
47 object types
Live 12, any edition
macOS
you 4-bar house loop at 124 — kick, hats, a Drift bass, and a pad that breathes
124.00 BPM · 4/4 · 1.1.1 Drift · LP Freq 0.35 → 0.95, one step a bar

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.

youGive me a 4-bar house loop. Chords, bass, drums — name the tracks and colour them.
in Live
  • 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
youOpen the filter over the loop — closed at the start, wide by bar 4.
in Live
  • 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
youI was dragging the tempo just now — where did I land?
in Live
  • 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 LiveLive 12, any editionIt's a Remote Script — Max for Live isn't required. Measured on 12.2.7.
ComputermacOSWindows untested.
AssistantClaude Code, or any MCP client
RuntimePython 3.11 — the installer brings its own; from source, uv makes one
Native devices & racksEvery parameter, every macro
VST / AU / VST3Parameters 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.
NetworkNone. 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

1

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
2

Link it into Live

Symlinks the Remote Script into Ableton's User Library, so later updates need no reinstall.

./scripts/install.sh
3

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.

4

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

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.