Ableton Live MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add ableton-live-mcp -- uvx ableton-live-mcp
README.md

MCP Server for Ableton Live, to let AI agents control or inspect Ableton.

Ableton Live MCP

MCP Server for Ableton Live, to let AI agents control or inspect Ableton.

Quick Start

1. Install the Remote Script

Download `ableton/__init__.py` and place it in a new folder called AbletonLiveMCP inside Ableton's MIDI Remote Scripts directory:

  • Windows: C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\AbletonLiveMCP\
  • macOS: Right-click Ableton Live → Show Package Contents → Contents/App-Resources/MIDI Remote Scripts/AbletonLiveMCP/

Then enable it in Ableton: Settings → Link, Tempo & MIDI → Control Surface → AbletonLiveMCP (Input/Output: None).

2. Connect Claude

First, install uv (which includes uvx) if you don't already have it:

Platform Command
macOS brew install uv
Windows winget install astral-sh.uv
Alternative install methods
# macOS/Linux — standalone installer
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows — PowerShell standalone installer
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Then connect Claude:

Claude Code:

claude mcp add --scope user AbletonLiveMCP -- uvx ableton-live-mcp

Claude Desktop — edit your config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
    "mcpServers": {
        "AbletonLiveMCP": {
            "command": "uvx",
            "args": ["ableton-live-mcp"]
        }
    }
}

3. Go

Make sure Ableton is running with the AbletonLiveMCP control surface active, then start (or restart) Claude and ask it to do something in Ableton.

How It Works

Claude  →  MCP Server  →  TCP :16619  →  Remote Script (inside Ableton)
                                              ↓
                                        exec(python_code)
                                              ↓
                                     Live Object Model
                                   (song, tracks, clips, devices, browser...)

The MCP server and Remote Script communicate over TCP port 16619. The Remote Script runs inside Ableton's embedded Python interpreter — Claude sends Python code as a string, the Remote Script exec()s it with the full Live API in scope, and returns the serialized result. There are no predefined commands — anything the Live API supports is available immediately.

What Claude Can Do

# Read session state
song.tempo                                        # → 120.0
[(i, t.name) for i, t in enumerate(song.tracks)]  # → [(0, "Bass"), (1, "Drums"), ...]

# Modify session
song.tempo = 140
song.tracks[0].name = "Lead Synth"

# Create tracks and clips
song.create_midi_track(-1)
song.tracks[-1].clip_slots[0].create_clip(4.0)

# Write MIDI notes (MidiNoteSpecification is in scope, no import needed)
clip = song.tracks[0].clip_slots[0].clip
clip.add_new_notes(tuple([
    MidiNoteSpecification(pitch=60, start_time=0.0, duration=0.5, velocity=100),
    MidiNoteSpecification(pitch=64, start_time=1.0, duration=0.5, velocity=90),
]))

# Find and load instruments (find_item, find_items, find_track, load_to are in scope)
load_to(song.tracks[0], browser.instruments, "Grand Piano")
load_to(find_track("Drums"), browser.drums, "808")

# Control transport
song.start_playing()
song.stop_playing()
song.tracks[0].clip_slots[0].fire()

# Mix
find_track("Bass").mixer_device.volume.value = 0.7
song.tracks[0].mixer_device.panning.value = -0.3

MCP Tools

The server exposes three tools:

Tool Purpose
execute(code) Send Python code to run inside Ableton. The main tool.
api(class_name?) Browse the Live API reference by class (Song, Track, Clip, Device, etc.).
search_api(query) Search the API reference by keyword across all classes.

api and search_api read from a structured API reference. Claude can execute anything the Live API supports, not just what's in the reference.

Execution Scope

Every execute call gets a fresh namespace with:

Variable What It Is
song The Live Set — tempo, tracks, scenes, transport
app The Live Application — browser, version info
tracks Shortcut for song.tracks (stale after create/delete — use song.tracks or find_track)
returns song.return_tracks
master song.master_track
browser `a

Tools (3)

executeSend Python code to run inside Ableton.
apiBrowse the Live API reference by class.
search_apiSearch the API reference by keyword across all classes.

Configuration

claude_desktop_config.json
{"mcpServers": {"AbletonLiveMCP": {"command": "uvx", "args": ["ableton-live-mcp"]}}}

Try it

Set the Ableton project tempo to 128 BPM.
Create a new MIDI track and add a Grand Piano instrument to it.
List all tracks currently in the session and their names.
Add a MIDI note at pitch 60 with a duration of 0.5 seconds to the first clip slot of the first track.
Stop the transport playback.

Frequently Asked Questions

What are the key features of Ableton Live MCP?

Direct execution of Python code against the Live Object Model. Real-time session manipulation including tempo, tracks, and clips. Automated MIDI note creation and instrument loading. Built-in API reference browsing and searching for Live objects.

What can I use Ableton Live MCP for?

Automating repetitive music production tasks like track setup and instrument loading. Programmatically generating MIDI patterns and sequences via natural language. Building AI-driven performance tools that react to session state changes. Rapidly inspecting and modifying complex Live sets through an AI interface.

How do I install Ableton Live MCP?

Install Ableton Live MCP by running: uvx ableton-live-mcp

What MCP clients work with Ableton Live MCP?

Ableton Live MCP works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Ableton Live MCP docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare