MCP server for controlling Ableton Live via Claude Code
Project description
Ableton MCP Server
Control Ableton Live with AI through natural conversation.
An MCP (Model Context Protocol) server that exposes 260+ tools for controlling Ableton Live from Claude Code. Create tracks, manipulate MIDI, load instruments, and produce music—all through natural language.
Quick Start
# 1. Clone and install
git clone https://github.com/ldraney/ableton-mcp.git
cd ableton-mcp
poetry install
# 2. Start Ableton Live 12 with AbletonOSC enabled
# 3. Start Claude Code in this directory
claude
# 4. Just ask for what you want!
That's it. Claude reads the project documentation and knows how to guide you through creating music. Try:
- "Create a lo-fi beat"
- "Make a simple drum pattern"
- "Help me set up audio export"
Why This Exists
Traditional DAW workflows require clicking through menus and dialogs. This project lets you describe what you want in plain English:
"Create a MIDI track, load a drum kit, and add a four-on-the-floor kick pattern at 120 BPM"
Claude Code executes the sequence of operations in Ableton while you watch it happen in real-time.
Features
Comprehensive Control
- 80+ Song Tools - Transport, tempo, time signature, loop regions, cue points, recording
- 70+ Track Tools - Volume, pan, mute/solo, routing, sends, device management
- 50+ Clip Tools - MIDI note manipulation, audio warping, launch modes, loop settings
- 40+ Device Tools - Parameter control, enable/disable, MIDI mapping
- 20+ Browser Tools - Search instruments, load presets, explore packs
Key Capabilities
- Full transport control (play, stop, record, loop)
- Create and delete MIDI/audio tracks
- Add, edit, and remove MIDI notes programmatically
- Load any Ableton instrument, effect, or preset by name
- Control device parameters in real-time
- Navigate session view (select tracks, scenes, clips)
- Query song state (tempo, time signature, track counts)
Architecture
┌─────────────────────────────────────────────────────────┐
│ Claude Code │
│ (or any MCP-compatible client) │
└───────────────────────┬─────────────────────────────────┘
│ MCP Protocol (stdio)
▼
┌─────────────────────────────────────────────────────────┐
│ ableton-mcp (this project) │
│ FastMCP + Python │
└───────────────────────┬─────────────────────────────────┘
│ Python imports
▼
┌─────────────────────────────────────────────────────────┐
│ abletonosc-client │
│ github.com/ldraney/abletonosc-client │
└───────────────────────┬─────────────────────────────────┘
│ UDP (ports 11000/11001)
▼
┌─────────────────────────────────────────────────────────┐
│ AbletonOSC │
│ MIDI Remote Script in Ableton Live │
└───────────────────────┬─────────────────────────────────┘
│ Live Object Model
▼
┌─────────────────────────────────────────────────────────┐
│ Ableton Live 12 │
└─────────────────────────────────────────────────────────┘
Quick Example
Once configured, you can have conversations like:
You: Create a simple beat Claude: Creates MIDI track → Loads 808 Core Kit → Adds kick on 1 and 3, snare on 2 and 4 → Sets tempo to 90 BPM → Hits play
Behind the scenes, Claude calls tools like:
song_set_tempo(bpm=90)
song_create_midi_track(index=0)
track_set_name(track_index=0, name="Drums")
track_insert_device(track_index=0, device_name="808 Core Kit")
clip_slot_create_clip(track_index=0, scene_index=0, length=4)
clip_add_notes(track_index=0, clip_index=0, notes=[
{"pitch": 36, "start_time": 0, "duration": 0.5, "velocity": 100}, # Kick
{"pitch": 38, "start_time": 1, "duration": 0.5, "velocity": 100}, # Snare
{"pitch": 36, "start_time": 2, "duration": 0.5, "velocity": 100}, # Kick
{"pitch": 38, "start_time": 3, "duration": 0.5, "velocity": 100}, # Snare
])
clip_fire(track_index=0, clip_index=0)
Prerequisites
- Python 3.11+
- Ableton Live 12 with AbletonOSC installed and enabled
- Claude Code (or any MCP-compatible client)
Installation
# Clone the repository
git clone https://github.com/ldraney/ableton-mcp.git
cd ableton-mcp
# Install with Poetry
poetry install
Configuration
Add to your Claude Code MCP settings (~/.claude/settings.json or project .mcp.json):
{
"mcpServers": {
"ableton": {
"command": "poetry",
"args": ["run", "ableton-mcp"],
"cwd": "/path/to/ableton-mcp"
}
}
}
WSL2 Support
The server auto-detects WSL2 environments and configures the correct Windows host IP. No manual configuration needed.
Documentation
- CLAUDE.md - Full tool reference, device discovery, and implementation details
- docs/TROUBLESHOOTING.md - Common issues and solutions
Related Projects
| Project | Description |
|---|---|
| song-schema | Define songs as JSON, execute them in Ableton (included as dependency) |
| abletonosc-client | Python OSC client wrapper for Ableton |
| AbletonOSC | The MIDI Remote Script that makes this possible |
Development
# Run tests
poetry run pytest
# Run the server directly (for debugging)
poetry run ableton-mcp
# Check Python syntax
poetry run python -m py_compile src/ableton_mcp/server.py
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ableton_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: ableton_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 34.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.7 Darwin/25.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3a0c7dd14fed7038e63611e620eb50d5e38925f2f60084ef3d217579741858a
|
|
| MD5 |
201830c3df2cd579cc74298f4668c396
|
|
| BLAKE2b-256 |
b26939a8f4229e54864d4b7a3f8efd8e562f9965e1d3eff1ca55b286c0471e2e
|
File details
Details for the file ableton_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ableton_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 39.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.7 Darwin/25.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96394aaff3fe781ce006ed7a644e7df66f8cf104e4a34fbef09797193a1fd345
|
|
| MD5 |
285d872e392ca6fe0ed775786143cb63
|
|
| BLAKE2b-256 |
c7e5688e5e73d8d59f8a42c8fb290ea11b2dcd41565a108a7663c7e487099055
|