AbletonMCP
# AbletonMCP - Advanced Ableton Live Model Context Protocol Integration




AbletonMCP connects Ableton Live to Claude AI through the Model Context Protocol (MCP), enabling comprehensive AI-assisted music production, track creation, and Live session manipulation with **37 powerful tools**.
## šµ Features
### **Session Management**
- **Session Information**: Get detailed session data including tempo, time signature, track counts
- **Playback Control**: Start/stop playback with precision
- **Tempo Control**: Adjust session tempo in real-time
### **Track Management**
- **Track Creation**: Create MIDI and audio tracks
- **Track Operations**: Delete, duplicate, and rename tracks
- **Track Control**: Arm/disarm for recording, mute/solo functionality
- **Track Information**: Get detailed track information and status
### **Mixing & Audio Controls**
- **Volume Control**: Adjust individual track volumes
- **Panning Control**: Set track panning positions
- **Send Levels**: Control send effects and returns
- **Audio Routing**: Manage track routing and sends
### **Clip Management**
- **Clip Creation**: Create MIDI clips with custom lengths
- **Note Programming**: Add MIDI notes with pitch, timing, velocity, and mute control
- **Clip Operations**: Copy, delete, and manipulate clips
### **Scene Management**
- **Scene Control**: Fire scenes for live performance
- **Scene Creation**: Create and delete scenes
- **Scene Organization**: Manage scene structure
### **Recording**
- **Recording Control**: Start and stop recording
- **Track Arm**: Arm tracks for recording
- **Recording Management**: Handle recording states
### **Device Management**
- **Device Loading**: Add instruments and effects
- **Parameter Control**: Adjust device parameters
- **Device Management**: Remove devices, activate/deactivate
- **Parameter Discovery**: Get device parameter information
## šļø Architecture
The system consists of two main components:
### 1. **Ableton Remote Script** (`AbletonMCP_Remote_Script/__init__.py`)
A MIDI Remote Script that runs inside Ableton Live, creating a socket server to receive and execute commands from the MCP server.
**Key Features:**
- Socket-based communication (localhost:9877)
- Thread-safe command processing
- Comprehensive error handling
- Real-time Ableton Live API integration
### 2. **MCP Server** (`MCP_Server/server.py`)
A Python server implementing the Model Context Protocol, connecting to the Ableton Remote Script and exposing 37 tools to Claude AI.
**Key Features:**
- FastMCP implementation
- Comprehensive tool set
- Robust error handling
- Real-time communication
## š Prerequisites
- **Ableton Live 10 or newer** (tested with Live 12.3b9)
- **Python 3.8 or newer**
- **Claude Desktop** with MCP support
- **Windows/macOS/Linux** support
## š Installation
### Step 1: Clone the Repository
```bash
git clone https://github.com/Milesy1/MCP-Ableton-API.git
cd MCP-Ableton-API
```
### Step 2: Install Dependencies
```bash
# Install using pip
pip install -e .
# Or install dependencies directly
pip install mcp[cli]>=1.3.0
```
### Step 3: Install the Ableton Remote Script
#### **Windows:**
1. Navigate to one of these locations:
- `C:\Users\[Username]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts`
- `C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\`
- `C:\Program Files\Ableton\Live XX\Resources\MIDI Remote Scripts\`
2. Create a folder called `AbletonMCP`
3. Copy `AbletonMCP_Remote_Script/__init__.py` into the `AbletonMCP` folder
#### **macOS:**
1. Navigate to one of these locations:
- `Applications > Right-click Ableton Live > Show Package Contents > Contents/App-Resources/MIDI Remote Scripts/`
- `/Users/[Username]/Library/Preferences/Ableton/Live XX/User Remote Scripts`
2. Create a folder called `AbletonMCP`
3. Copy `AbletonMCP_Remote_Script/__init__.py` into the `AbletonMCP` folder
### Step 4: Configure Ableton Live
1. Launch Ableton Live
2. Go to **Settings/Preferences ā Link, Tempo & MIDI**
3. In the **Control Surface** dropdown, select **"AbletonMCP"**
4. Set **Input** and **Output** to **"None"**
### Step 5: Configure Claude Desktop
1. Open Claude Desktop
2. Go to **Settings ā Developer ā Edit Config**
3. Edit `claude_desktop_config.json`:
```json
{
"mcpServers": {
"AbletonMCP": {
"command": "python",
"args": ["C:\\path\\to\\your\\MCP-Ableton-API\\MCP_Server\\server.py"]
}
}
}
```
**Note:** Replace the path with your actual installation path.
## šļø Available Tools
### **Session Tools**
- `get_session_info` - Get detailed session information
- `set_tempo` - Change session tempo
- `start_playback` - Start playback
- `stop_playback` - Stop playback
### **Track Tools**
- `create_midi_track` - Create MIDI tracks
- `create_audio_track` - Create audio tracks
- `delete_track` - Delete tracks
- `duplicate_track` - Duplicate tracks
- `set_track_name` - Rename tracks
- `get_track_info` - Get track details
- `set_track_arm` - Arm/disarm tracks
- `set_track_mute` - Mute/unmute tracks
- `set_track_solo` - Solo/unsolo tracks
### **Mixing Tools**
- `set_track_volume` - Adjust track volumes
- `set_track_panning` - Control track panning
- `set_track_send` - Adjust send levels
### **Clip Tools**
- `create_clip` - Create MIDI clips
- `add_notes_to_clip` - Add MIDI notes
- `copy_clip` - Copy clips
- `delete_clip` - Delete clips
### **Scene Tools**
- `fire_scene` - Trigger scenes
- `create_scene` - Create scenes
- `delete_scene` - Delete scenes
### **Recording Tools**
- `start_recording` - Start recording
- `stop_recording` - Stop recording
### **Device Tools**
- `add_device` - Add instruments/effects
- `remove_device` - Remove devices
- `set_device_parameter` - Adjust device parameters
- `set_device_active` - Enable/disable devices
- `get_device_parameters` - Get device parameter info
## šµ Usage Examples
### **Basic Track Creation**
```
"Create a new MIDI track with a synth bass instrument"
"Add an audio track for vocals"
"Set track 1 to arm for recording"
```
### **Mixing and Effects**
```
"Set the volume of track 2 to 80%"
"Pan track 3 to the left (-0.5)"
"Add reverb to track 1 with 30% wet signal"
"Set the master volume to 85%"
```
### **MIDI Programming**
```
"Create a 4-bar MIDI clip in track 1"
"Add a C major chord progression to the clip"
"Create a drum pattern with kick on 1 and 3, snare on 2 and 4"
```
### **Scene Management**
```
"Create a new scene called 'Verse'"
"Fire scene 2"
"Delete the last scene"
```
### **Advanced Composition**
```
"Create a Metro Boomin style hip-hop beat with 808s and hi-hats"
"Build an 80s synthwave track with arpeggiated bass"
"Create a jazz chord progression in track 1"
```
## š§ Troubleshooting
### **Connection Issues**
- Ensure Ableton Live is running with the AbletonMCP control surface selected
- Check that the MCP server path in Claude Desktop config is correct
- Verify Python dependencies are installed
### **Tool Not Available**
- Restart Claude Desktop after configuration changes
- Clear Claude Desktop cache if tools don't appear
- Check MCP server logs for errors
### **Timeout Errors**
- Break complex requests into smaller steps
- Ensure Ableton Live is responsive
- Check socket connection (localhost:9877)
### **Performance Issues**
- Close unnecessary Ableton Live tracks
- Avoid simultaneous complex operations
- Monitor system resources
## šļø Development
### **Project Structure**
```
MCP-Ableton-API/
āāā AbletonMCP_Remote_Script/ # Ableton Live Remote Script
ā āāā __init__.py
āāā MCP_Server/ # MCP Server Implementation
ā āāā server.py
āāā pyproject.toml # Project Configuration
āāā README.md # This File
āāā LICENSE # MIT License
āāā Dockerfile # Container Configuration
āāā smithery.yaml # Smithery Configuration
```
### **Adding New Tools**
1. Add command handler in `AbletonMCP_Remote_Script/__init__.py`
2. Add tool endpoint in `MCP_Server/server.py`
3. Update command routing in the Remote Script
4. Test and document the new functionality
### **Testing**
```bash
# Test MCP server
python -m MCP_Server.server
# Test socket communication
python create_midi.py
```
## š¤ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
### **Development Setup**
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
### **Code Style**
- Follow PEP 8 for Python code
- Add comprehensive docstrings
- Include error handling
- Update documentation
## š License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## š Acknowledgments
- **Ableton** for the amazing Live software and API
- **Anthropic** for Claude AI and MCP protocol
- **MCP Community** for the Model Context Protocol
- **Contributors** who help improve this project
## š Links
- [GitHub Repository](https://github.com/Milesy1/MCP-Ableton-API)
- [Ableton Live](https://www.ableton.com/en/live/)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Claude AI](https://claude.ai/)
## š Support
If you encounter any issues or have questions:
1. Check the [troubleshooting section](#troubleshooting)
2. Search existing [GitHub Issues](https://github.com/Milesy1/MCP-Ableton-API/issues)
3. Create a new issue with detailed information
4. Join the discussion in the community
---
**Made with ā¤ļø for the music production community**
*Transform your Ableton Live workflow with AI-powered assistance!*TDQS
Scored across 37 tools
Most tools have distinct purposes targeting specific Ableton Live operations like clip management, track control, device handling, and session playback. There's some potential overlap between 'fire_clip' and 'start_playback' in triggering audio, but descriptions would likely clarify that 'fire_clip' targets individual clips while 'start_playback' controls overall session playback.
Excellent consistency with a clear verb_noun pattern throughout all 37 tools. The naming follows predictable conventions like 'create_clip', 'delete_track', 'set_tempo', 'get_session_info', and 'start_playback' with no mixing of styles or irregular patterns.
37 tools is quite high and borders on heavy for an MCP server. While Ableton Live has extensive functionality, this many tools may overwhelm agents and suggests possible fragmentation. A more streamlined set with 15-25 tools could better balance coverage and usability.
The tool set provides comprehensive coverage of Ableton Live's core workflows including session management (create/delete tracks/scenes), clip manipulation, device control, browser navigation, parameter adjustment, and transport controls. There are no obvious gaps for basic DAW operations.