Ableton Live MCP

Ableton Live MCP

Enables AI agents to control and inspect Ableton Live by executing Python code directly against the Live Object Model. It allows for automated track management, MIDI note creation, and real-time session manipulation through a natural language interface.

Category
Visit Server

README

Ableton Live MCP

PyPI Python Tests License: MIT

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

<details><summary>Alternative install methods</summary>

# 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"

</details>

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 app.browser — instruments, effects, drums, sounds
Live The Live module — Live.Clip, Live.Device, etc.
MidiNoteSpecification Live.Clip.MidiNoteSpecification — no import needed
find_item(parent, query) Search browser tree for best match. Returns BrowserItem or None
find_items(parent, query) Search browser tree, return ranked list of matches
find_track(name) Look up a track by name. Returns Track or None
load_to(track, parent, query) Find a browser item and load it onto a track
log Write to Ableton's Log.txt
json The json module
time The time module

Development

Requires uv (see install instructions above).

Clone and symlink the Remote Script for live development (changes take effect on Ableton restart):

git clone https://github.com/opendining/ableton-mcp-server.git
# Windows (PowerShell, run once)
New-Item -ItemType Junction `
  -Path "C:\ProgramData\Ableton\Live 12 Intro\Resources\MIDI Remote Scripts\AbletonLiveMCP" `
  -Target "C:\path\to\ableton-mcp-server\ableton"

Run from source instead of PyPI:

# Claude Code
claude mcp add --scope user AbletonLiveMCP -- uv run --directory /path/to/ableton-mcp-server ableton-live-mcp
// Claude Desktop
{
    "mcpServers": {
        "AbletonLiveMCP": {
            "command": "uv",
            "args": ["run", "--directory", "/path/to/ableton-mcp-server", "ableton-live-mcp"]
        }
    }
}

Claude Code plugin — auto-starts the MCP server and loads the agent guide skill:

claude --plugin-dir /path/to/ableton-mcp-server

See DEVELOPMENT.md for the full architecture guide.

Troubleshooting

If the MCP server can't reach Ableton, check:

  1. Ableton is running with AbletonLiveMCP control surface enabled
  2. No other MCP server instance is already connected (only one client at a time)

Check Ableton's Log.txt for Remote Script errors:

  • Windows: %APPDATA%\Ableton\Live x.x.x\Preferences\Log.txt
  • macOS: ~/Library/Preferences/Ableton/Live x.x.x/Log.txt

Acknowledgments

This project was inspired by ahujasid/ableton-mcp, which pioneered the idea of connecting Ableton Live to AI agents via MCP. That project uses a fixed set of tool-per-action commands (create track, add notes, set tempo, etc.).

This fork takes a different approach inspired by Cloudflare's Code Mode: instead of predefined commands, the agent writes and executes Python directly against Ableton's runtime. A streamlined execution scope with built-in helpers (find_item, find_track, load_to, etc.) and a searchable API reference give the model everything it needs to use the full Live API without being limited to a curated command set.

Disclaimer

This project is unofficial and not affiliated with or supported by Ableton. For issues, please use the issue tracker — not Ableton's support channels.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured