An MCP (Model Context Protocol) server for Ableton Live that provides programmatic control over your DAW. Perfect for AI-assisted music production, automation scripting, and building custom workflows.
curl -fsSL https://raw.githubusercontent.com/wolfiesch/ableton-mcp/master/install.sh | bashThis automatically:
- Installs the
ableton-mcpPython package - Copies the Remote Script to Ableton's User Library
- Configures Claude Desktop
Click to expand manual installation steps
- Ableton Live 11 or 12 (with Python Remote Script support)
- Python 3.10+
- Claude Desktop (or any MCP-compatible client)
- uv (recommended) or pip
# Using uv (recommended)
uv pip install ableton-mcp
# Or using pip
pip install ableton-mcp
# Or from source
git clone https://github.com/wolfiesch/ableton-mcp.git
cd ableton-mcp
pip install -e .Run the installer command:
ableton-mcp-installOr manually copy:
macOS:
cp -r remote_script/ElectronicMCP ~/Music/Ableton/User\ Library/Remote\ Scripts/Windows:
Copy remote_script\ElectronicMCP to:
C:\Users\[username]\Documents\Ableton\User Library\Remote Scripts\
- Open Ableton Live
- Go to Preferences > Link/Tempo/MIDI
- Under Control Surface, select ElectronicMCP
The installer configures this automatically, or add manually to:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"ableton-mcp": {
"command": "uvx",
"args": ["ableton-mcp"]
}
}
}ableton-mcp-install --verify- Session Control: Tempo, time signature, key, groove, swing, playback
- Track Management: Create/delete MIDI and audio tracks, set properties
- MIDI Clip Operations:
- Create clips with specified length
- Read existing MIDI notes (key differentiator from other MCPs!)
- Add/remove notes with full control over velocity, probability, etc.
- Quantize clips to grid
- Fire/stop clips
- Load Devices: Load instruments and effects by name (Operator, Auto Filter, etc.)
- Parameter Control: Get/set any device parameter
- Parameter Discovery: Search parameters by name (e.g., find "cutoff" on any device)
- Automation Steps: Add single automation points
- Automation Ramps: Create sweeps with linear/exponential/logarithmic curves
- Automation LFO: Generate sine, triangle, square, sawtooth patterns
- Step Sequences: Create gated/rhythmic automation patterns
- Filter Sweeps: Auto-detecting filter sweep preset
Note: Automation only works for Session View clips (Live API limitation)
- Groove Pool: Apply groove templates to clips
- Humanization: Add timing/velocity variation to MIDI
- Swing: Apply swing to patterns
- Return Tracks: Create and manage return tracks
- Send Levels: Control send amounts per track
- Output Routing: Set track output routing
- Duplicate to Arrangement: Copy Session clips to timeline
- Locators: Create cue points/markers
- Loop Regions: Set arrangement loop
Once installed, you can use Claude to control Ableton Live with natural language:
Create a basic house beat:
Create a MIDI track called "Kick", add a 4-bar clip, and add a 4-on-the-floor kick pattern
Read existing patterns:
What notes are in the clip on track 0, slot 0?
Set up the session:
Set the tempo to 124 BPM, key to A minor, and add some swing (about 60%)
Load devices and automate:
Load an Auto Filter on the synth track and add a 4-bar filter sweep going up
Add automation:
Add an LFO to the filter cutoff - sine wave, 2 cycles per bar
Create gated effects:
Add a step sequence to the volume: on, off, on, off pattern at 1/8 notes
┌─────────────────────────────────────────────┐
│ Claude Desktop │
│ (MCP Client) │
└──────────────────┬──────────────────────────┘
│ MCP Protocol (stdio)
▼
┌─────────────────────────────────────────────┐
│ Ableton MCP Server │
│ (Python - src/ableton_mcp/) │
└──────────────────┬──────────────────────────┘
│ TCP Socket (port 9877)
▼
┌─────────────────────────────────────────────┐
│ Ableton Live Remote Script │
│ (remote_script/ElectronicMCP/) │
└──────────────────┬──────────────────────────┘
│ Live Object Model (LOM)
▼
┌─────────────────────────────────────────────┐
│ Ableton Live │
│ (Tracks, Clips, Devices, Notes) │
└─────────────────────────────────────────────┘
ableton-mcp/
├── src/ableton_mcp/
│ ├── server.py # MCP server entry point
│ ├── install.py # Installation utilities
│ ├── tools/ # MCP tool implementations
│ ├── communication/ # Socket client for Ableton
│ └── utils/ # Music theory, timing, validation
├── remote_script/
│ └── ElectronicMCP/ # Ableton Remote Script
├── install.sh # One-line installer
└── tests/ # Test suite
pytest tests/- Fork the repository
- Create a feature branch
- Submit a PR with tests
Contributions welcome! Check the issues for ideas or propose new features.
Make sure:
- Ableton Live is running
- ElectronicMCP is selected as Control Surface in Preferences
- No other application is using port 9877
Make sure:
- The ElectronicMCP folder is in the correct Remote Scripts location
- Restart Ableton Live after copying the script
- Check Ableton's Log.txt for errors
Make sure:
- You're targeting a MIDI track (not audio)
- The clip exists before adding notes
- Note pitches are in valid range (0-127)
ableton-mcp-install --verifyThis checks:
- Remote Script is installed correctly
- Claude Desktop is configured
- Ableton is running and connected
MIT
- Inspired by ahujasid/ableton-mcp
- Built on the Model Context Protocol
- Uses the Ableton Live Object Model (LOM)