Skip to main content
Glama

Ableton MCP Extended

Control Ableton Live using natural language via AI assistants like Claude or Cursor. This project provides a robust Model Context Protocol (MCP) server that translates natural language commands into precise actions within your Ableton Live session.

License: MIT Python 3.10+ Ableton Live 11+


Video demonstration: https://www.youtube.com/watch?v=7ZKPIrJuuKk

This tool is designed for producers, developers, and AI enthusiasts who want to streamline their music production workflow, experiment with generative music, and build custom integrations with Ableton Live.

You can transform this conversation:

👤 "Create a brief minimalist/neo-classical composition in a style similar to Ólafur Arnalds'. (Ableton MCP) / I've loaded four MIDI tracks called "Noire" and "Noire (2) ["Emotional Felt" presets], "Noire (2) ["Reversed Felt" preset, for ambient background], and "Noire (3) ["Ethereal Felt" preset, also for ambient background]. All loaded with nice piano instruments. You have also a MIDI track called "Strings" with a nice string ensemble instrument loaded. Feel free to add new instruments and effects, if pertinent."
🤖 "Creating MIDI clips... Adding effects... Done!"
👤 "Then, use ElevenLabs MCP to create a spoken-word audio clip (default voice and settings) with a relevant poem in the style of “Jim Morrison” to accompany the composition."  
🤖 "Generating poem... Transforming it into speech... Importing it into your session... Done!"

Into this music production session:

https://github.com/user-attachments/assets/d6ef2de5-bdeb-4097-acc0-67d70f7f85b3


Key Features

This project provides comprehensive, programmatic control over the Ableton Live environment.

  • Session and Transport Control:

    • Start and stop playback.

    • Get session info, including tempo, time signature, and track count.

    • Manage scenes: create, delete, rename, and fire.

  • Track Management:

    • Create, rename, and get detailed information for MIDI and audio tracks.

    • Control track properties: volume, panning, mute, solo, and arm.

    • Manage track grouping and folding states.

  • MIDI Clip and Note Manipulation:

    • Create and name MIDI clips with specified lengths.

    • Add, delete, transpose, and quantize notes within clips.

    • Perform batch edits on multiple notes in a single operation.

    • Adjust clip loop parameters and follow actions.

  • Device and Parameter Control:

    • Load instruments and effects from Ableton's browser by URI.

    • Get a full list of parameters for any device on a track.

    • Set and batch-set device parameters using normalized values (0.0 to 1.0).

  • Automation and Envelopes:

    • Add and clear automation points for any device parameter within a clip. [This feature isn't working perfectly yet.]

    • Get information about existing clip envelopes.

  • Browser Integration:

    • Navigate and list items from Ableton's browser.

    • Load instruments, effects, and samples directly from a browser path or URI.

    • Import audio files directly into audio tracks or clip slots.

  • Voice & Audio Generation

    • Text-to-Speech Integration: Generate narration, vocal samples, or spoken elements through ElevenLabs MCP [included].

    • Custom Voice Creation: Clone voices for unique character in your tracks

    • Sound Effects: Create custom SFX with AI

    • Direct Import: Generated audio appears instantly in your Ableton session

  • Extensible Framework for Custom Tools

    • Example: XY Mouse Controller: Demonstrates creating custom Ableton controllers with the MCP framework

    • Ultra-Low Latency: High-performance UDP protocol enables responsive real-time control

    • Unlimited Possibilities: Build your own custom tools and controllers for Ableton Live


Related MCP server: ableton-live-mcp

Quick Start (5 Minutes)

Prerequisites

  • Ableton Live 11+ (any edition)

  • Python 3.10 or higher

  • Claude Desktop or Cursor IDE

1. Get the Code

git clone https://github.com/uisato/ableton-mcp-extended.git
cd ableton-mcp-extended
pip install -e .

2. Install Ableton Script

  1. Find your Ableton Remote Scripts folder:

    • Windows: C:\Users\[You]\Documents\Ableton\User Library\Remote Scripts\

    • Mac: ~/Library/Preferences/Ableton/Live [Version]/User Remote Scripts/

  2. Create folder: AbletonMCP

  3. Copy AbletonMCP_Remote_Script/__init__.py into this folder

3. Configure Ableton

  1. Open Ableton Live

  2. Go to Preferences → Link, Tempo & MIDI

  3. Set Control Surface to "AbletonMCP"

  4. Set Input/Output to "None"

4. Connect AI Assistant

For Claude Desktop:

{
  "mcpServers": {
    "AbletonMCP": {
      "command": "python",
      "args": ["C:/path/to/ableton-mcp-extended/MCP_Server/server.py"]
    }
  }
}

For Cursor: Add MCP server in Settings → MCP with the same path.

5. Start Creating!

Open your AI assistant and try:

  • "Create a new MIDI track with a piano"

  • "Add a simple drum beat"

  • "What tracks do I currently have?"


How It Works

graph TB
    A[You: Natural Language] --> B[AI Assistant]
    B --> C[MCP Server]
    C --> D[Ableton Remote Script]
    D --> E[Ableton Live API]
    E --> F[🎵 Your Music]
    
    G[ElevenLabs AI] --> H[Generated Audio]
    H --> C
  1. You issue a command in plain English to your AI assistant (e.g., "Create a new MIDI track and name it 'Bass'").

  2. The AI Assistant understands the intent and calls the appropriate tool from the MCP server.

  3. The MCP Server (server.py) receives the tool call and constructs a specific JSON command.

  4. The Ableton Remote Script (init.py), running inside Live, receives the JSON command via a socket connection.

  5. The Remote Script executes the command using the official Ableton Live API, making the change in your session instantly.


Advanced Features

For real-time parameter control with ultra-low latency:

# Install the hybrid server
cp -r Ableton-MCP_hybrid-server/AbletonMCP_UDP/ ~/Remote\ Scripts/AbletonMCP_UDP/

# Try the XY Mouse Controller example
cd experimental_tools/xy_mouse_controller
python mouse_parameter_controller_udp.py

This demonstrates how to build:

  • Custom real-time controllers for Ableton

  • Expressive performance tools

  • Interactive music applications

This repository can be integrated with other MCP servers, such as one for ElevenLabs, to generate and import audio directly into your project.

Set up the ElevenLabs MCP server according to its instructions.

Update your AI assistant's config to include both servers.

Example mcp-config.json:

{
  "mcpServers": {
    "AbletonMCP": {
      "command": "python",
      "args": ["/path/to/ableton-mcp-extended/server.py"]
    },
    "ElevenLabs": {
      "command": "python",
      "args": ["/path/to/elevenlabs_mcp/server.py"],
      "env": {
        "ELEVENLABS_API_KEY": "your-api-key-here"
      }
    }
  }
}

Components Overview

This project includes several specialized components:

Core MCP Server

  • Standard TCP communication for reliable AI control

  • Extensive Ableton Live API integration

  • Compatible with Claude Desktop, Cursor, and Gemini CLI.

Hybrid TCP/UDP Server

  • High-performance real-time parameter control

  • Ultra-low latency for live performance

  • Perfect for controllers and interactive tools

ElevenLabs Integration

  • Professional text-to-speech generation

  • Custom voice creation and cloning

  • Direct import into Ableton sessions

  • Real-time SFX generation

Experimental Tools & Examples

  • XY Mouse Controller: Example demonstrating how to build custom Ableton controllers

  • Extensible Framework: Foundation for creating your own control interfaces

  • Proof of Concept: Shows the power and flexibility of the MCP approach


Documentation


Community & Support

  • GitHub Issues: Bug reports and feature requests

  • Discussions: Share your creations and get help

Share Your Creations

Tag me with your AI-generated experiments! I love seeing what the community creates:

YouTube | Instagram | Patreon | Website


What's Next

  • Fixing Automation Point Placement Bugs

  • VST Plugin Support - Control third-party plugins [Though it can be achieved throught the "Configure" parameter function]

  • Arrangement View - Full timeline control

  • Hardware Integration - Bridge MIDI controllers through AI

  • Advanced AI - Smarter and better music understanding and generation


License & Credits

This project is licensed under the MIT License - see LICENSE for details.

Built with:

Inspired by: The original ableton-mcp project


Made with ❤️ for the music production community

If this project helps your creativity, consider giving it a ⭐ star!

Available Tools

16 tools
add_notes_to_clipC
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

Inputs: track_index (required), clip_index (required), notes (required). Returns: result

create_clipA
Create a new MIDI clip in the specified track and clip slot.

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)

Inputs: track_index (required), clip_index (required), length. Returns: result

create_midi_trackB
Create a new MIDI track in the Ableton session.

Parameters:
- index: The index to insert the track at (-1 = end of list)

Inputs: index. Returns: result

fire_clipC
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

Inputs: track_index (required), clip_index (required). Returns: result

get_browser_items_at_pathA
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

Inputs: path (required). Returns: result

get_browser_treeB
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')

Inputs: category_type. Returns: result

get_session_infoA

Get detailed information about the current Ableton session

Inputs: no named parameters. Returns: result

get_track_infoC
Get detailed information about a specific track in Ableton.

Parameters:
- track_index: The index of the track to get information about

Inputs: track_index (required). Returns: result

load_drum_kitB
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')

Inputs: track_index (required), rack_uri (required), kit_path (required). Returns: result

load_instrument_or_effectB
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')

Inputs: track_index (required), uri (required). Returns: result

set_clip_nameB
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

Inputs: track_index (required), clip_index (required), name (required). Returns: result

set_tempoC
Set the tempo of the Ableton session.

Parameters:
- tempo: The new tempo in BPM

Inputs: tempo (required). Returns: result

set_track_nameB
Set the name of a track.

Parameters:
- track_index: The index of the track to rename
- name: The new name for the track

Inputs: track_index (required), name (required). Returns: result

start_playbackB

Start playing the Ableton session.

Inputs: no named parameters. Returns: result

stop_clipB
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

Inputs: track_index (required), clip_index (required). Returns: result

stop_playbackB

Stop playing the Ableton session.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 16 tools

    Disambiguation4/5

    Most tools have distinct purposes, such as create_clip vs. add_notes_to_clip, but there is some potential overlap between fire_clip and start_playback, as both initiate playback in different contexts. The descriptions clarify that fire_clip targets specific clips while start_playback controls the entire session, but an agent might occasionally confuse them without careful reading.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern, such as create_clip, get_session_info, and set_tempo. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions across the 16 tools.

    Tool Count4/5

    With 16 tools, the server is slightly on the heavier side but remains reasonable for controlling an Ableton session, covering essential operations like clip management, track creation, and playback control. It avoids being overwhelming while providing comprehensive functionality, though it could be streamlined by merging closely related tools like start_playback and stop_playback into a single toggle.

    Completeness4/5

    The tool set covers key aspects of Ableton control, including clip and track manipulation, browser navigation, and session playback, but has minor gaps such as missing update or delete operations for clips or tracks. Agents can work around these omissions by combining existing tools, but the lack of direct modification tools may limit efficiency in some workflows.

    Maintenance

    ActivityInactive
    ResponsivenessSyncing

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables programmatic control over Ableton Live sessions through natural language commands for managing tracks, MIDI clips, and device parameters. It also integrates with ElevenLabs to generate and import AI-based audio and voice elements directly into the DAW.
      280
      MIT
    • A
      license
      C
      quality
      C
      maintenance
      Enables AI agents to control Ableton Live by evaluating arbitrary Python code and using predefined tools for common tasks, supporting voice and text commands for music production.
      27
      236
      MIT