MCP ExplorerExplorer

AbletonMCP

@ahujasidon 2 months ago
1659 MIT
FreeCommunity
Media Creation
#ableton#music production#AI#Claude#MCP#Model Context Protocol#MIDI#audio#music
AbletonMCP connects Ableton Live to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Ableton Live. This integration enables prompt-assisted music production, track creation, and Live session manipulation.

Overview

What is AbletonMCP

AbletonMCP is an integration that connects Ableton Live to Claude AI utilizing the Model Context Protocol (MCP). This allows users to leverage AI capabilities for music production, enabling real-time interaction and control over Ableton’s features for enhanced creativity and workflow.

Use cases

Users can employ AbletonMCP for diverse purposes, including creating genres like synthwave or hip-hop, developing MIDI tracks with specific instruments, adding effects to existing tracks, editing MIDI clips, and manipulating session parameters. The integration streamlines the music-making process by providing AI-assisted commands.

How to use

To use AbletonMCP, first install the Ableton Remote Script in the appropriate MIDI Remote Scripts directory for your OS and set up the MCP server in Claude Desktop or Cursor. After ensuring both are active, interact with Claude via specific commands to manipulate tracks, create music, or adjust settings within Ableton Live.

Key features

Key features of AbletonMCP include two-way communication between Claude AI and Ableton Live, MIDI and audio track manipulation, instrument and effect selection, clip creation and editing, and session control. It also allows for real-time playback control and access to Ableton’s library of sounds and effects.

Where to use

AbletonMCP is used primarily within music production environments that utilize Ableton Live 10 or newer. It is ideal for music producers, sound designers, and artists looking to enhance their workflow through AI assistance while creating music or performing live.

Content

AbletonMCP - Ableton Live Model Context Protocol Integration

smithery badge

AbletonMCP connects Ableton Live to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Ableton Live. This integration enables prompt-assisted music production, track creation, and Live session manipulation.

Join the Community

Give feedback, get inspired, and build on top of the MCP: Discord. Made by Siddharth

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
  • 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
  • Session control: Start and stop playback, fire clips, and control transport

Components

The system consists of two main components:

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

Installation

Installing via Smithery

To install Ableton Live Integration for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @ahujasid/ableton-mcp --client claude

Prerequisites

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

  1. Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
{
  "mcpServers": {
    "AbletonMCP": {
      "command": "uvx",
      "args": [
        "ableton-mcp"
      ]
    }
  }
}

Cursor Integration

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

uvx ableton-mcp

⚠️ 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

  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)
  3. Create a folder called ‘AbletonMCP’ in the Remote Scripts directory and paste the downloaded ‘__init__.py’ file

  4. Launch Ableton Live

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

  6. In the Control Surface dropdown, select “AbletonMCP”

  7. 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
  • Create, edit, and trigger clips
  • Control playback
  • Load instruments and effects from Ableton’s browser
  • 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
  • “Create a Metro Boomin style hip-hop beat”
  • “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.

Disclaimer

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

Tools

get_session_info
Get detailed information about the current Ableton session
get_track_info
Get detailed information about a specific track in Ableton. Parameters: - track_index: The index of the track to get information about
create_midi_track
Create a new MIDI track in the Ableton session. Parameters: - index: The index to insert the track at (-1 = end of list)
set_track_name
Set the name of a track. Parameters: - track_index: The index of the track to rename - name: The new name for the track
create_clip
Create a new MIDI clip in the specified track and clip slot. First check if there are less than 7 clips, if not, ask the user to delete a clip first. Parameters: - track_index: The index of the track to create the clip in - clip_index: The index of the clip slot to create the clip in - length: The length of the clip in beats (default: 4.0)
add_notes_to_clip
Add MIDI notes to a clip. Parameters: - track_index: The index of the track containing the clip - clip_index: The index of the clip slot containing the clip - notes: List of note dictionaries, each with pitch, start_time, duration, velocity, and mute
set_clip_name
Set the name of a clip. Parameters: - track_index: The index of the track containing the clip - clip_index: The index of the clip slot containing the clip - name: The new name for the clip
set_tempo
Set the tempo of the Ableton session. Parameters: - tempo: The new tempo in BPM
load_instrument_or_effect
Load an instrument or effect onto a track using its URI. Parameters: - track_index: The index of the track to load the instrument on - uri: The URI of the instrument or effect to load (e.g., 'query:Synths#Instrument%20Rack:Bass:FileId_5116')
fire_clip
Start playing a clip. Parameters: - track_index: The index of the track containing the clip - clip_index: The index of the clip slot containing the clip
stop_clip
Stop playing a clip. Parameters: - track_index: The index of the track containing the clip - clip_index: The index of the clip slot containing the clip
start_playback
Start playing the Ableton session.
stop_playback
Stop playing the Ableton session.
get_browser_tree
Get a hierarchical tree of browser categories from Ableton. Parameters: - category_type: Type of categories to get ('all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects')
get_browser_items_at_path
Get browser items at a specific path in Ableton's browser. Parameters: - path: Path in the format "category/folder/subfolder" where category is one of the available browser categories in Ableton
load_drum_kit
Load a drum rack and then load a specific drum kit into it. Parameters: - track_index: The index of the track to load on - rack_uri: The URI of the drum rack to load (e.g., 'Drums/Drum Rack') - kit_path: Path to the drum kit inside the browser (e.g., 'drums/acoustic/kit1')

Comments

Recommend MCP Servers

View All MCP Servers