Skip to main content
Glama

AbletonMCP - Ableton Live Model Context Protocol Integration

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 AI-assisted music production, track creation, and Live session manipulation.

200+ tools for near-complete Ableton Live Object Model (LOM) coverage including AI-powered music generation.

Three Ways to Use AbletonMCP

Method

Best For

Requirements

MCP Server (Claude Desktop / Cursor)

Claude AI integration

Claude Desktop or Cursor

REST API (Ollama / OpenAI / Any LLM)

Any LLM, custom apps

Python, FastAPI

Max for Live Device

In-Ableton AI chat

Ableton Suite / M4L

Related MCP server: AbletonMCP

Features

Transport & Session

  • Play, stop, record, overdub, capture MIDI, tap tempo, continue playing

  • Tempo, time signature, metronome, count-in, swing, groove

  • Arrangement loop, locators, jump to time, scrub

Track Control

  • Create/delete/duplicate MIDI, audio, group, and return tracks

  • Volume, pan, mute, solo, arm, color, monitoring, delay

  • Freeze/flatten, fold/unfold groups, implicit arm

  • Input/output routing, crossfade assign

  • Multi-track operations: solo exclusive, unsolo all, unmute all, unarm all

Clip Operations

  • Create/delete/duplicate/fire/stop clips

  • Loop settings, start/end markers, gain, pitch, color

  • Warp modes, warp markers, RAM mode

  • Launch modes, launch quantization, follow actions

  • Clip fades (in/out), trigger quantization

  • Playing position, velocity amount

MIDI Editing

  • Add/remove/transpose notes, get notes in range

  • Move notes (time + pitch shift), replace all notes

  • Quantize, deselect all, duplicate loop

  • Select all notes, set clip notes

Devices & Effects

  • Load instruments/effects from browser, toggle on/off, delete

  • Get/set any device parameter, device presets

  • Move devices (left/right/to position), collapse/expand

  • Rack chains, rack macros, drum rack pads (mute/solo/name)

  • Simpler/Sampler sample info and parameters

Scene Management

  • Create/delete/duplicate/fire/stop scenes, color, name

Automation

  • Clip automation envelopes (get/set/clear)

  • Session automation record, arrangement overdub

  • Re-enable automation

Browser

  • Navigate browser tree, search, load items

  • Browse by path, get children, categories

View & Selection

  • Focus view (Session/Arrangement/Detail)

  • Select track/scene/clip/device

  • Detail clip, highlighted clip slot

  • Draw mode, follow mode, grid quantization, zoom

Recording

  • Arm, record, overdub, capture MIDI

  • Session/arrangement record modes

  • MIDI recording quantization

Mixing

  • Track/master output metering (L/R)

  • Send levels, pre/post send

  • Return track volume/pan

  • Master volume/pan, cue volume

  • Crossfader position

Song Properties

  • Root note, scale, signature

  • Groove amount, exclusive arm/solo

  • Punch in/out, back to arrangement

  • Record mode, can capture MIDI

AI Music Helpers

  • Scale reference (12+ scale types)

  • Drum pattern generation (8 styles: house, techno, hip-hop, trap, dnb, jazz, funk, basic)

  • Bassline generation (6 styles: basic, walking, synth, funk, octave, arpeggiated)

  • Quantize/humanize timing and velocity

Installation

Prerequisites

Install uv:

# macOS
brew install uv

# Other platforms
# See https://docs.astral.sh/uv/getting-started/installation/

Claude Desktop Configuration

Add to your claude_desktop_config.json:

Location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
    "mcpServers": {
        "AbletonMCP": {
            "command": "uvx",
            "args": ["ableton-mcp"]
        }
    }
}

Installing via Smithery

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

Installing the Ableton Remote Script

  1. Download AbletonMCP_Remote_Script/__init__.py from this repo

  2. Copy to Ableton's MIDI Remote Scripts directory:

    macOS:

    • Right-click Ableton Live app > Show Package Contents > Contents/App-Resources/MIDI Remote Scripts/

    • Or: /Users/[Username]/Library/Preferences/Ableton/Live XX/User Remote Scripts

    Windows:

    • C:\Users\[Username]\AppData\Roaming\Ableton\Live x.x.x\Preferences\User Remote Scripts

    • Or: C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\

  3. Create a folder called AbletonMCP in the Remote Scripts directory

  4. Paste the __init__.py file into the AbletonMCP folder

  5. Launch Ableton Live

  6. Go to Settings > Link, Tempo & MIDI

  7. In Control Surface dropdown, select "AbletonMCP"

  8. Set Input and Output to "None"

Cursor Integration

Go to Cursor Settings > MCP and add:

uvx ableton-mcp

Usage Guide

Getting Started

  1. Ensure the Ableton Remote Script is loaded (look for "AbletonMCP" in Control Surface)

  2. Configure Claude Desktop or Cursor with the MCP server

  3. Start chatting with Claude about your music production needs

Example Workflows

Create a Beat

"Create a hip-hop drum pattern at 90 BPM with a 808 kit"

Build a Full Track

"Create a raw hypnotic techno track at 135 BPM with kick, hats, clap, bass, and acid lead"

Mix and Arrange

"Add reverb to the drums, set up a sidechain send, and create intro/verse/chorus/outro scenes"

Sound Design

"Load a Simpler on track 3, show me the sample parameters, and adjust the filter"

AI Music Generation

Generate Drum Patterns

Available styles: basic, house, techno, hip_hop, trap, dnb, jazz, funk

Generate Basslines

Available styles: basic, walking, synth, funk, octave, arpeggiated

Get Scale Notes

Available scales: major, minor, dorian, phrygian, lydian, mixolydian, aeolian, locrian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues

REST API (Ollama & Other LLMs)

AbletonMCP includes a REST API for use with any LLM provider.

Quick Start with Ollama

  1. Install Ollama: https://ollama.ai

  2. Pull a model: ollama pull llama3.2

  3. Install dependencies: pip install fastapi uvicorn pydantic

  4. Start the server: python MCP_Server/rest_api_server.py

  5. Run interactive chat: python examples/ollama_example.py

REST API Features

  • 200+ commands whitelisted and validated

  • API key authentication (optional, via REST_API_KEY env var)

  • Rate limiting (configurable per-IP)

  • CORS configured for localhost by default

  • Pagination on list endpoints (scenes, tracks, device parameters)

  • OpenAI-compatible tool definitions at /tools

Key Endpoints

Endpoint

Method

Description

/health

GET

Check Ableton connection

/tools

GET

Get LLM tool definitions

/api/session

GET

Session info

/api/tracks

GET

List all tracks (with pagination)

/api/scenes

GET

List all scenes (with pagination)

/api/command

POST

Execute any command

/docs

GET

Interactive Swagger docs

Supported LLM Providers

Provider

Cost

Setup

Ollama

Free (local)

ollama pull llama3.2

Groq

Free tier

API key from console.groq.com

OpenAI

Paid

API key from platform.openai.com

Claude API

Paid

API key from console.anthropic.com

Max for Live Device

For a fully integrated experience inside Ableton, use the Max for Live device.

Features

  • Multi-provider support (Ollama, OpenAI, Claude API, Groq)

  • Visual chat UI inside Ableton's device view

  • 200+ tool definitions for complete LOM control

  • No external server needed

Installation

  1. Copy AbletonMCP_M4L folder to:

    • macOS: ~/Music/Ableton/User Library/Presets/Audio Effects/Max Audio Effect/

    • Windows: Documents\Ableton\User Library\Presets\Audio Effects\Max Audio Effect\

  2. Build the .amxd binary (the repo includes a .maxpat source file):

    python3 scripts/build_amxd.py

    Or rename AbletonMCP.amxd.maxpat to AbletonMCP.amxd

  3. Drag onto any track in Ableton Live

  4. Select your AI provider and start chatting!

See AbletonMCP_M4L/README.md for detailed setup.

Documentation

  • MANUAL.md - Complete command reference with examples and a step-by-step techno track tutorial

  • CONFIG.md - Configuration and environment variables

Troubleshooting

Connection Issues

  • Verify AbletonMCP is selected in Ableton's Control Surface settings

  • Check that no other application is using port 9877

  • Restart both Claude and Ableton Live

Timeout Errors

  • Break complex requests into smaller steps

  • Allow time for Ableton to process commands

Script Not Loading

  • Ensure the __init__.py file is in a folder named exactly AbletonMCP

  • Check Ableton's Log.txt for errors

Commands Not Working

  • Make sure you're requesting actions on valid track/clip indices

  • Check that clips exist before trying to edit notes

  • Verify devices are loaded before adjusting parameters

Technical Details

Communication Protocol

JSON-based protocol over TCP sockets (port 9877):

// Request
{"type": "command_name", "params": { ... }}

// Response
{"status": "success", "result": { ... }}

Architecture

Claude AI <-> MCP Server (Python/FastMCP) <-> Ableton Remote Script (Python)
                    |                              |
              Port 9877 TCP                   Ableton Live API (LOM)

REST API (FastAPI) <-> Ableton Remote Script
       |
  Port 8000 HTTP

Max for Live Device <-> LLM Provider API (Ollama/OpenAI/Claude/Groq)
       |
  Node for Max (JavaScript)

Contributing

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

Credits

  • Original AbletonMCP by Siddharth

  • Extended with 200+ tools, REST API, M4L device, and AI helpers

Bug Fixes

Remote Script (AbletonMCP_Remote_Script/__init__.py)

  • load_instrument_or_effect not routed to main thread — command was defined but missing from the gating condition that dispatches to the main-thread handler, causing "Unknown command" errors.

  • load_browser_item param name mismatch — the REST API schema sends uri but the remote script expected item_uri. Now accepts both.

  • set_arrangement_loop param name mismatch — REST API sends loop_start/loop_length/loop_on but remote script expected start/end/enabled. Now accepts both naming conventions.

  • _find_browser_item_by_uri didn't search plugins/samples/packs — the URI search only covered 5 standard categories (instruments, sounds, drums, audio_effects, midi_effects), so VST/AU plugin URIs were never found.

  • None categories caused search crash — optional browser categories (plugins, samples, packs) could be None, causing attribute errors during URI search.

REST API Server (MCP_Server/rest_api_server.py)

No functional bugs — only added new command definitions:

  • Added load_item_to_master and load_device_preset_by_name to ALLOWED_COMMANDS and COMMAND_PARAM_SCHEMAS.

New Commands

Command

Endpoint

Description

load_item_to_master

/api/command

Load a browser item (plugin/effect) onto the Master track by URI

load_device_preset_by_name

/api/command

Load a preset onto a device by preset name (searches via hotswap browser children)

Disclaimer

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

License

MIT License - See LICENSE file for details.

Available Tools

128 tools
add_notes_to_clipB

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: notes (required), clip_index (required), track_index (required).

add_warp_markerB

Add a warp marker to an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • beat_time: The beat time position for the marker

  • sample_time: Optional sample time (calculated automatically if not provided)

Inputs: beat_time (required), clip_index (required), track_index (required), sample_time.

apply_grooveB

Apply a groove to a clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • groove_index: The index of the groove from the groove pool

Inputs: clip_index (required), track_index (required), groove_index (required).

browse_pathB

Navigate browser by path list to get items at that location.

Parameters:

  • path: List of path components, e.g. ["Audio Effects", "EQ Eight"] or ["Sounds", "Bass"]

Inputs: path (required).

capture_midiA

Capture MIDI that was played recently (like Ableton's Capture feature).

Inputs: no named parameters.

clear_clip_automationC

Clear automation for a clip parameter.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • parameter_name: Name of the parameter to clear automation for

Inputs: clip_index (required), track_index (required), parameter_name (required).

commit_grooveC

Commit groove quantization to clip notes (make it permanent).

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

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

create_audio_trackA

Create a new audio track in the Ableton session.

Parameters:

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

Inputs: index.

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: clip_index (required), track_index (required), length.

create_group_trackB

Create a group track containing the specified tracks.

Parameters:

  • track_indices: List of track indices to group

  • name: Name for the group track

Inputs: track_indices (required), name.

create_locatorA

Create a new locator/cue point.

Parameters:

  • time: Position in beats for the locator

  • name: Name for the locator

Inputs: time (required), name.

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.

create_sceneB

Create a new scene.

Parameters:

  • index: The index to insert the scene at (-1 = end of list)

Inputs: index.

delete_clipA

Delete a clip from a clip slot.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

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

delete_deviceA

Delete a device from a track.

Parameters:

  • track_index: The index of the track containing the device

  • device_index: The index of the device to delete

Inputs: track_index (required), device_index (required).

delete_locatorC

Delete a locator.

Parameters:

  • locator_index: Index of the locator to delete

Inputs: locator_index (required).

delete_sceneC

Delete a scene.

Parameters:

  • scene_index: The index of the scene to delete

Inputs: scene_index (required).

delete_trackC

Delete a track.

Parameters:

  • track_index: The index of the track to delete

Inputs: track_index (required).

delete_warp_markerC

Delete a warp marker from an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • beat_time: The beat time position of the marker to delete

Inputs: beat_time (required), clip_index (required), track_index (required).

duplicate_clipA

Duplicate a clip to the next empty slot.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

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

duplicate_sceneC

Duplicate a scene.

Parameters:

  • scene_index: The index of the scene to duplicate

Inputs: scene_index (required).

duplicate_trackB

Duplicate a track with all its clips and devices.

Parameters:

  • track_index: The index of the track to duplicate

Inputs: track_index (required).

fire_clipA

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: clip_index (required), track_index (required).

fire_sceneA

Fire (trigger) a scene to play all clips in that row.

Parameters:

  • scene_index: The index of the scene to fire

Inputs: scene_index (required).

flatten_trackA

Flatten a frozen track (convert freeze to permanent audio). The track must be frozen first.

Parameters:

  • track_index: The index of the track to flatten

Inputs: track_index (required).

focus_viewB

Focus a specific view in Ableton.

Parameters:

  • view_name: The name of the view (Session, Arranger, Detail, etc.)

Inputs: view_name (required).

fold_trackA

Fold (collapse) a group track.

Parameters:

  • track_index: The index of the group track

Inputs: track_index (required).

freeze_trackB

Freeze a track (render all devices to audio for CPU optimization).

Parameters:

  • track_index: The index of the track to freeze

Inputs: track_index (required).

generate_basslineA

Generate a bassline pattern and add it to a clip.

Parameters:

  • track_index: The index of the track (should be a bass track)

  • clip_index: The index of the clip slot

  • root: Root note MIDI number (36 = C1, common bass range)

  • scale_type: Scale to use (minor, major, dorian, pentatonic_minor, blues)

  • length: Pattern length in beats

Inputs: clip_index (required), track_index (required), root, length, +1 more.

generate_drum_patternA

Generate a drum pattern and add it to a clip.

Parameters:

  • track_index: The index of the track (should be a drum track)

  • clip_index: The index of the clip slot

  • style: Pattern style (basic, house, hiphop, dnb, random)

  • length: Pattern length in beats

Inputs: clip_index (required), track_index (required), style, length.

get_all_scenesB

Get information about all scenes in the session.

Inputs: no named parameters.

get_arrangement_lengthA

Get the length and loop settings of the arrangement.

Inputs: no named parameters.

get_available_inputsC

Get available input routing options for a track.

Parameters:

  • track_index: The index of the track

Inputs: track_index (required).

get_available_outputsC

Get available output routing options for a track.

Parameters:

  • track_index: The index of the track

Inputs: track_index (required).

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).

get_browser_treeA

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.

get_clip_automationC

Get automation data for a clip parameter.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • parameter_name: Name of the parameter to get automation for

Inputs: clip_index (required), track_index (required), parameter_name (required).

get_clip_colorA

Get the color of a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot

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

get_clip_gainB

Get the gain of an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

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

get_clip_loopC

Get the loop settings of a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot

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

get_clip_notesB

Get all MIDI notes from 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: clip_index (required), track_index (required).

get_clip_pitchB

Get the pitch shift of an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

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

get_clip_warp_infoC

Get warp information for an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

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

get_cpu_loadA

Get the current CPU load of Ableton.

Inputs: no named parameters.

get_current_viewB

Get information about the current view state (selected track, scene, etc.).

Inputs: no named parameters.

get_device_by_nameC

Find a device by name and get its parameters.

Parameters:

  • track_index: The index of the track

  • device_name: The name of the device to find

Inputs: device_name (required), track_index (required).

get_device_parametersA

Get all parameters from a device on a track.

Parameters:

  • track_index: The index of the track containing the device

  • device_index: The index of the device on the track

Inputs: track_index (required), device_index (required).

get_groove_poolA

Get available grooves from the groove pool.

Inputs: no named parameters.

get_locatorsA

Get all locators/cue points in the arrangement.

Inputs: no named parameters.

get_master_infoA

Get information about the master track including volume, pan, and devices.

Inputs: no named parameters.

get_metronome_stateA

Get the current metronome state.

Inputs: no named parameters.

get_playback_positionA

Get the current playback position and transport state.

Inputs: no named parameters.

get_rack_chainsC

Get chains from an instrument or effect rack.

Parameters:

  • track_index: The index of the track

  • device_index: The index of the rack device

Inputs: track_index (required), device_index (required).

get_return_track_infoC

Get detailed information about a return track.

Parameters:

  • return_index: The index of the return track

Inputs: return_index (required).

get_return_tracksA

Get information about all return (aux) tracks.

Inputs: no named parameters.

get_scale_notesA

Get the notes in a musical scale.

Parameters:

  • root: MIDI note number for the root (0-127, where 60 = middle C)

  • scale_type: Type of scale (major, minor, dorian, phrygian, lydian, mixolydian, locrian, harmonic_minor, melodic_minor, pentatonic_major, pentatonic_minor, blues, chromatic)

Inputs: root (required), scale_type.

get_scene_colorC

Get the color of a scene.

Parameters:

  • scene_index: The index of the scene

Inputs: scene_index (required).

get_send_levelA

Get the send level from a track to a return track.

Parameters:

  • track_index: The index of the source track

  • send_index: The index of the send (0=A, 1=B, etc.)

Inputs: send_index (required), track_index (required).

get_session_infoB

Get detailed information about the current Ableton session

Inputs: no named parameters.

get_session_pathA

Get the file path of the current session.

Inputs: no named parameters.

get_track_colorC

Get the color of a track.

Parameters:

  • track_index: The index of the track

Inputs: track_index (required).

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).

get_track_input_routingB

Get the input routing of a track.

Parameters:

  • track_index: The index of the track

Inputs: track_index (required).

get_track_monitoringB

Get the monitoring mode of a track.

Parameters:

  • track_index: The index of the track

Inputs: track_index (required).

get_track_output_routingC

Get the output routing of a track.

Parameters:

  • track_index: The index of the track

Inputs: track_index (required).

get_warp_markersA

Get all warp markers from an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

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

health_checkA

Check if Ableton Live is connected and responsive.

Inputs: no named parameters.

humanize_clip_timingA

Add random timing variation to notes in a clip for a more human feel.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • amount: Amount of timing variation in beats (0.05 = subtle, 0.1 = moderate, 0.2 = heavy)

Inputs: clip_index (required), track_index (required), amount.

humanize_clip_velocityA

Add random velocity variation to notes in a clip for a more human feel.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • amount: Amount of velocity variation (0.1 = +/-10%, 0.2 = +/-20%)

Inputs: clip_index (required), track_index (required), amount.

is_session_modifiedA

Check if the session has unsaved changes.

Inputs: no named parameters.

jump_to_timeA

Jump to a specific time in the arrangement.

Parameters:

  • time: Position in beats to jump to

Inputs: time (required).

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: kit_path (required), rack_uri (required), track_index (required).

load_instrument_or_effectC

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: uri (required), track_index (required).

load_item_to_returnA

Load a browser item (effect) onto a return track by URI.

Parameters:

  • return_index: The index of the return track to load the item onto

  • uri: The URI of the browser item (obtained from browse_path or search_browser)

Inputs: uri (required), return_index (required).

load_item_to_trackA

Load a browser item (instrument or effect) onto a track by URI.

Parameters:

  • track_index: The index of the track to load the item onto

  • uri: The URI of the browser item (obtained from browse_path or search_browser)

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

move_device_leftA

Move a device one position to the left in the device chain.

Parameters:

  • track_index: The index of the track containing the device

  • device_index: The index of the device to move

Inputs: track_index (required), device_index (required).

move_device_rightA

Move a device one position to the right in the device chain.

Parameters:

  • track_index: The index of the track containing the device

  • device_index: The index of the device to move

Inputs: track_index (required), device_index (required).

quantize_clip_notesA

Quantize notes in a clip to a grid.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • grid: Grid size in beats (0.25 = 16th notes, 0.5 = 8th notes, 1.0 = quarter notes)

Inputs: clip_index (required), track_index (required), grid.

redoA

Redo the last undone operation in Ableton.

Inputs: no named parameters.

remove_all_notesB

Remove all notes from 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: clip_index (required), track_index (required).

remove_notesA

Remove notes from a clip within a specified range.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • from_time: Start time in beats

  • time_span: Duration in beats

  • from_pitch: Starting MIDI pitch (0-127)

  • pitch_span: Number of pitches to include

Inputs: clip_index (required), track_index (required), from_time, time_span, +2 more.

search_browserA

Search the browser for items matching a query.

Parameters:

  • query: Search term to find in item names

  • category: Category to search in (all, instruments, sounds, drums, audio_effects, midi_effects)

Inputs: query (required), category.

select_clipC

Select a clip slot.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot

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

select_rack_chainA

Select a chain in a rack device.

Parameters:

  • track_index: The index of the track

  • device_index: The index of the rack device

  • chain_index: The index of the chain to select

Inputs: chain_index (required), track_index (required), device_index (required).

select_sceneC

Select a scene.

Parameters:

  • scene_index: The index of the scene to select

Inputs: scene_index (required).

select_trackC

Select a track.

Parameters:

  • track_index: The index of the track to select

Inputs: track_index (required).

set_arrangement_loopA

Set the arrangement loop region.

Parameters:

  • start: Loop start position in beats

  • end: Loop end position in beats

  • enabled: Whether to enable looping

Inputs: end (required), start (required), enabled.

set_clip_automationB

Set automation for a clip parameter.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • parameter_name: Name of the parameter to automate

  • envelope_data: List of points [{"time": 0.0, "value": 0.5}, ...]

Inputs: clip_index (required), track_index (required), envelope_data (required), parameter_name (required).

set_clip_colorB

Set the color 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

  • color: The color index (0-69 in Ableton's color palette)

Inputs: color (required), clip_index (required), track_index (required).

set_clip_gainB

Set the gain of an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • gain: Gain in dB (e.g., -6.0 for -6dB, 3.0 for +3dB)

Inputs: gain (required), clip_index (required), track_index (required).

set_clip_loopA

Set the loop settings 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

  • loop_start: The start point of the loop in beats

  • loop_end: The end point of the loop in beats

  • looping: Whether looping is enabled

Inputs: clip_index (required), track_index (required), looping, loop_end, +1 more.

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: name (required), clip_index (required), track_index (required).

set_clip_pitchA

Set the pitch shift of an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • pitch: Pitch shift in semitones (-48 to +48)

Inputs: pitch (required), clip_index (required), track_index (required).

set_clip_warp_modeB

Set the warp mode of an audio clip.

Parameters:

  • track_index: The index of the track

  • clip_index: The index of the clip slot

  • warp_mode: Warp mode (beats, tones, texture, repitch, complex, complex_pro)

Inputs: warp_mode (required), clip_index (required), track_index (required).

set_device_parameterA

Set a device parameter value.

Parameters:

  • track_index: The index of the track containing the device

  • device_index: The index of the device on the track

  • parameter_index: The index of the parameter to set

  • value: The new value for the parameter (will be clamped to valid range)

Inputs: value (required), track_index (required), device_index (required), parameter_index (required).

set_master_panA

Set the master track panning.

Parameters:

  • pan: Pan position from -1.0 (full left) to 1.0 (full right). 0.0 is center.

Inputs: pan (required).

set_master_volumeA

Set the master track volume.

Parameters:

  • volume: Volume level from 0.0 (silent) to 1.0 (unity gain). 0.85 is Ableton's default.

Inputs: volume (required).

set_metronomeA

Turn the metronome on or off.

Parameters:

  • enabled: True to enable, False to disable

Inputs: enabled (required).

set_overdubB

Set overdub mode.

Parameters:

  • enabled: True to enable overdub, False to disable

Inputs: enabled (required).

set_return_panB

Set the panning of a return track.

Parameters:

  • return_index: The index of the return track

  • pan: The pan position (-1.0 = left, 0.0 = center, 1.0 = right)

Inputs: pan (required), return_index (required).

set_return_volumeA

Set the volume of a return track.

Parameters:

  • return_index: The index of the return track

  • volume: The volume level (0.0 to 1.0)

Inputs: volume (required), return_index (required).

set_scene_colorA

Set the color of a scene.

Parameters:

  • scene_index: The index of the scene

  • color: The color index (0-69 in Ableton's color palette)

Inputs: color (required), scene_index (required).

set_scene_nameB

Set the name of a scene.

Parameters:

  • scene_index: The index of the scene to rename

  • name: The new name for the scene

Inputs: name (required), scene_index (required).

set_send_levelA

Set the send level from a track to a return track.

Parameters:

  • track_index: The index of the source track

  • send_index: The index of the send (corresponds to return track index)

  • level: The send level (0.0 to 1.0)

Inputs: level (required), send_index (required), track_index (required).

set_tempoA

Set the tempo of the Ableton session.

Parameters:

  • tempo: The new tempo in BPM

Inputs: tempo (required).

set_track_armA

Set the arm (record enable) state of a track.

Parameters:

  • track_index: The index of the track

  • arm: True to arm for recording, False to disarm

Inputs: arm (required), track_index (required).

set_track_colorA

Set the color of a track.

Parameters:

  • track_index: The index of the track

  • color: The color index (0-69 in Ableton's color palette)

Inputs: color (required), track_index (required).

set_track_input_routingA

Set the input routing of a track.

Parameters:

  • track_index: The index of the track

  • routing_type: The input routing type (use get_available_inputs to see options)

  • routing_channel: The input channel (optional)

Inputs: track_index (required), routing_type (required), routing_channel.

set_track_monitoringA

Set the monitoring mode of a track.

Parameters:

  • track_index: The index of the track

  • monitoring: Monitoring mode (in, auto, off)

Inputs: monitoring (required), track_index (required).

set_track_muteA

Set the mute state of a track.

Parameters:

  • track_index: The index of the track

  • mute: True to mute, False to unmute

Inputs: mute (required), track_index (required).

set_track_nameC

Set the name of a track.

Parameters:

  • track_index: The index of the track to rename

  • name: The new name for the track

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

set_track_output_routingA

Set the output routing of a track.

Parameters:

  • track_index: The index of the track

  • routing_type: The output routing type (use get_available_outputs to see options)

  • routing_channel: The output channel (optional)

Inputs: track_index (required), routing_type (required), routing_channel.

set_track_panA

Set the panning of a track.

Parameters:

  • track_index: The index of the track

  • pan: Pan position from -1.0 (full left) to 1.0 (full right). 0.0 is center.

Inputs: pan (required), track_index (required).

set_track_soloA

Set the solo state of a track.

Parameters:

  • track_index: The index of the track

  • solo: True to solo, False to unsolo

Inputs: solo (required), track_index (required).

set_track_volumeA

Set the volume of a track.

Parameters:

  • track_index: The index of the track

  • volume: Volume level from 0.0 (silent) to 1.0 (unity gain). 0.85 is Ableton's default.

Inputs: volume (required), track_index (required).

start_playbackA

Start playing the Ableton session.

Inputs: no named parameters.

start_recordingB

Start recording in Ableton.

Inputs: no named parameters.

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: clip_index (required), track_index (required).

stop_playbackA

Stop playing the Ableton session.

Inputs: no named parameters.

stop_recordingB

Stop recording in Ableton.

Inputs: no named parameters.

stop_sceneA

Stop all clips in a scene.

Parameters:

  • scene_index: The index of the scene to stop

Inputs: scene_index (required).

toggle_arrangement_recordA

Toggle arrangement record mode.

Inputs: no named parameters.

toggle_deviceA

Toggle a device on or off.

Parameters:

  • track_index: The index of the track containing the device

  • device_index: The index of the device on the track

Inputs: track_index (required), device_index (required).

toggle_session_recordC

Toggle session record mode.

Inputs: no named parameters.

transpose_notesA

Transpose all notes in a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • semitones: Number of semitones to transpose (positive = up, negative = down)

Inputs: semitones (required), clip_index (required), track_index (required).

unarm_allA

Unarm all tracks in the session. Useful before recording to ensure only specific tracks will record.

Inputs: no named parameters.

undoB

Undo the last operation in Ableton.

Inputs: no named parameters.

unfold_trackB

Unfold (expand) a group track.

Parameters:

  • track_index: The index of the group track

Inputs: track_index (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 128 tools

    Disambiguation5/5

    Each tool targets a specific resource and action, with clear verb_noun naming that distinguishes between related operations (e.g., get_clip_notes vs. add_notes_to_clip vs. remove_notes). Even with 128 tools, there is no ambiguity—every tool has a distinctly defined purpose.

    Naming Consistency5/5

    All tools follow a consistent lowercase snake_case convention, typically verb_noun or verb_noun_noun (e.g., create_audio_track, set_track_volume, get_clip_notes). There are no mixed conventions or cryptic abbreviations.

    Tool Count2/5

    128 tools is far beyond the typical 3-15 range and exceeds the 50+ threshold for extreme mismatch. While the complexity of Ableton Live justifies many tools, this count feels overwhelming and could be streamlined by combining some parameterized getters/setters.

    Completeness4/5

    The tool surface covers nearly all core Ableton workflows: track/clip/scene management, device control, transport, browser, and performance tools. Minor gaps include lack of save/export functionality and arrangement-level automation, but the set is largely comprehensive.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Connects Ableton Live to Claude AI through the Model Context Protocol, enabling AI-assisted music production by allowing Claude to directly interact with and control Ableton Live sessions.
      16
      2,107 PyPI
      3,338
      MIT
    • A
      license
      C
      quality
      D
      maintenance
      Connects Claude AI to Ableton Live through the Model Context Protocol, enabling prompt-assisted music production with track creation, instrument loading, clip editing, and session control. Allows users to create complete musical arrangements by describing what they want in natural language.
      37
      3
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Connects Ableton Live to Claude AI via the Model Context Protocol for prompt-assisted music production and session manipulation. It enables users to create tracks, load instruments, and manage MIDI clips using natural language commands.
      16
      1
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Connects Ableton Live to Claude AI through the Model Context Protocol, enabling AI-assisted music production and Live session manipulation via over 200 tools.
      100
      60
      MIT