Skip to main content
Glama
F-Fischer
by F-Fischer
README.md
# Ableton Copilot - an AI music-production copilot for Ableton Live

Ableton Copilot connects Ableton Live to Claude AI through the Model Context Protocol (MCP), giving Claude a music-theory-aware toolset to compose, arrange, mix, and sound-design inside a real Live session — not just a remote control, but a copilot that understands key, genre, and song structure.

Built on top of the open-source Ableton Live Remote Script and socket protocol originally created by [Siddharth Ahuja](https://x.com/sidahuj) ([ahujasid/ableton-mcp](https://github.com/ahujasid/ableton-mcp)) — that project handles the low-level Live Object Model plumbing; everything above it (music theory, generators, mixing, telemetry, session state) is this project's own layer.

## Features

- **Two-way communication**: Connect Claude AI to Ableton Live through a socket-based server
- **Track manipulation**: Create, modify, and manipulate MIDI and audio tracks
- **Mixing control**: Set track volume, pan, mute, solo, and send levels
- **Instrument and effect selection**: Claude can access and load the right instruments, effects and sounds from Ableton's library
- **Clip creation**: Create and edit MIDI clips with notes
- **Music-theory-aware generation**: Key- and genre-aware chord, bassline, and drum pattern generators, plus one-call section scaffolding
- **Arrangement view composition**: Build full songs autonomously in Arrangement View, including sections like intro, buildup, drop, breakdown, and outro
- **Session control**: Start and stop playback, fire clips, and control transport across Session View and Arrangement View
- **Anonymous telemetry**: Usage tracking to help improve the tool (can be disabled)

## Components

The system consists of two main components:

1. **Ableton Remote Script** (`AbletonMCP_Remote_Script/__init__.py`): A MIDI Remote Script for Ableton Live that creates a socket server to receive and execute commands
2. **MCP Server** (`MCP_Server/server.py`): A Python server that implements the Model Context Protocol and connects to the Ableton Remote Script

## Installation

### Prerequisites

- Ableton Live 10 or newer
- Python 3.8 or newer
- [uv package manager](https://astral.sh/uv)

If you're on Mac, please install uv as:
```
brew install uv
```

Otherwise, install from [uv's official website][https://docs.astral.sh/uv/getting-started/installation/]

⚠️ Do not proceed before installing UV

### Claude for Desktop Integration

[Follow along with the setup instructions video](https://youtu.be/iJWJqyVuPS8)

1. Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:

```json
{
    "mcpServers": {
        "AbletonCopilot": {
            "command": "uvx",
            "args": [
                "ableton-copilot"
            ]
        }
    }
}
```

### Cursor Integration

Run ableton-copilot without installing it permanently through uvx. Go to Cursor Settings > MCP and paste this as a command:

```
uvx ableton-copilot
```

⚠️ Only run one instance of the MCP server (either on Cursor or Claude Desktop), not both

### Installing the Ableton Remote Script

[Follow along with the setup instructions video](https://youtu.be/iJWJqyVuPS8)

1. Download the `AbletonMCP_Remote_Script/__init__.py` file from this repo

2. Copy the folder to Ableton's MIDI Remote Scripts directory. Different OS and versions have different locations. **One of these should work, you might have to look**:

   **For macOS:**
   - Method 1: Go to Applications > Right-click on Ableton Live app → Show Package Contents → Navigate to:
     `Contents/App-Resources/MIDI Remote Scripts/`
   - Method 2: If it's not there in the first method, use the direct path (replace XX with your version number):
     `/Users/[Username]/Library/Preferences/Ableton/Live XX/User Remote Scripts`
   
   **For Windows:**
   - Method 1:
     C:\Users\[Username]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts 
   - Method 2:
     `C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\`
   - Method 3:
     `C:\Program Files\Ableton\Live XX\Resources\MIDI Remote Scripts\`
   *Note: Replace XX with your Ableton version number (e.g., 10, 11, 12)*

4. Create a folder called 'AbletonMCP' in the Remote Scripts directory and paste the downloaded '\_\_init\_\_.py' file

3. Launch Ableton Live

4. Go to Settings/Preferences → Link, Tempo & MIDI

5. In the Control Surface dropdown, select "AbletonMCP"

6. Set Input and Output to "None"

## Usage

### Starting the Connection

1. Ensure the Ableton Remote Script is loaded in Ableton Live
2. Make sure the MCP server is configured in Claude Desktop or Cursor
3. The connection should be established automatically when you interact with Claude

### Using with Claude

Once the config file has been set on Claude, and the remote script is running in Ableton, you will see a hammer icon with tools for the Ableton MCP.

## Capabilities

- Get session and track information
- Create and modify MIDI and audio tracks
- Set track volume, pan, mute, solo, and send levels
- Generate key- and genre-aware chord progressions, basslines, and drum patterns
- Scaffold an entire section (key, chords, bass, drums) in one call
- Create full song arrangements from start to finish in Arrangement View
- Set and enable/disable the arrangement loop region
- Create, edit, and trigger clips
- Control playback
- Load instruments and effects from Ableton's browser
- Search the browser by name across all categories
- Add notes to MIDI clips
- Change tempo and other session parameters

## Example Commands

Here are some examples of what you can ask Claude to do:

- "Create an 80s synthwave track" [Demo](https://youtu.be/VH9g66e42XA)
- "Create a Metro Boomin style hip-hop beat"
- "Create a full arrangement with an intro, buildup, drop, breakdown, and outro"
- "Create a new MIDI track with a synth bass instrument"
- "Add reverb to my drums"
- "Create a 4-bar MIDI clip with a simple melody"
- "Get information about the current Ableton session"
- "Load a 808 drum rack into the selected track"
- "Add a jazz chord progression to the clip in track 1"
- "Set the tempo to 120 BPM"
- "Play the clip in track 2"


## Troubleshooting

- **Connection issues**: Make sure the Ableton Remote Script is loaded, and the MCP server is configured on Claude
- **Timeout errors**: Try simplifying your requests or breaking them into smaller steps
- **Have you tried turning it off and on again?**: If you're still having connection errors, try restarting both Claude and Ableton Live

## Technical Details

### Communication Protocol

The system uses a simple JSON-based protocol over TCP sockets:

- Commands are sent as JSON objects with a `type` and optional `params`
- Responses are JSON objects with a `status` and `result` or `message`

### Limitations & Security Considerations

- Creating complex musical arrangements might need to be broken down into smaller steps
- The tool is designed to work with Ableton's default devices and browser items
- Always save your work before extensive experimentation

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## Telemetry

Ableton Copilot collects anonymous usage data to help improve the tool. This includes:
- Tool usage statistics (which features are used)
- Session information (for daily/monthly active user counts)
- Error rates and performance metrics

No personal information, project names, or audio content is collected.

### Opting Out

To disable telemetry, set one of these environment variables before starting the MCP server:

```bash
export ABLETON_MCP_DISABLE_TELEMETRY=true
```

Or use any of these alternatives:
- `DISABLE_TELEMETRY=true`
- `MCP_DISABLE_TELEMETRY=true`

For Claude Desktop, add the environment variable to your config:

```json
{
    "mcpServers": {
        "AbletonCopilot": {
            "command": "uvx",
            "args": ["ableton-copilot"],
            "env": {
                "ABLETON_MCP_DISABLE_TELEMETRY": "true"
            }
        }
    }
}
```

## Disclaimer

This is a third-party integration and not made by Ableton.

TDQS

B3.2/5.0

Scored across 52 tools

Disambiguation4/5

Most tools target distinct resources and actions, with clear separation between tracks, clips, devices, browser, and arrangement. Minor ambiguity exists between create_clip (MIDI) and create_audio_clip, as well as between get_clip_notes and get_arrangement_clip_notes, but descriptions and parameter scopes help.

Naming Consistency4/5

Tool names consistently use lowercase snake_case with a verb-first pattern (get_, set_, create_, delete_, etc.). Deviations include some phrasal names like switch_to_arrangement_view and duplicate_to_arrangement, and create_clip is not as specific as create_midi_clip, which breaks symmetry with create_audio_clip.

Tool Count2/5

At 52 tools, this server is heavily over-scoped compared to typical MCP servers, even for a broad DAW control domain. Many granular mixer tools (set_track_volume, set_track_pan, set_track_mute, etc.) could be combined, and the sheer volume increases cognitive load.

Completeness3/5

The tool surface covers core workflows: track/clip lifecycle, device manipulation, browser access, arrangement navigation, and music generation. However, there are notable gaps such as no direct editing of arrangement MIDI clips, no track duplication, no get_current_time, and no set_selected, which agents may need to work around.

Maintenance

ActivitySlowing
ResponsivenessNo issues