AbletonMCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AbletonMCP Generate a house drum pattern on track 1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Ableton Live 10 or newer
Python 3.8 or newer
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.jsonWindows:
%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 claudeInstalling the Ableton Remote Script
Download
AbletonMCP_Remote_Script/__init__.pyfrom this repoCopy 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 ScriptsOr:
C:\ProgramData\Ableton\Live XX\Resources\MIDI Remote Scripts\
Create a folder called
AbletonMCPin the Remote Scripts directoryPaste the
__init__.pyfile into theAbletonMCPfolderLaunch Ableton Live
Go to Settings > Link, Tempo & MIDI
In Control Surface dropdown, select "AbletonMCP"
Set Input and Output to "None"
Cursor Integration
Go to Cursor Settings > MCP and add:
uvx ableton-mcpUsage Guide
Getting Started
Ensure the Ableton Remote Script is loaded (look for "AbletonMCP" in Control Surface)
Configure Claude Desktop or Cursor with the MCP server
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
Install Ollama: https://ollama.ai
Pull a model:
ollama pull llama3.2Install dependencies:
pip install fastapi uvicorn pydanticStart the server:
python MCP_Server/rest_api_server.pyRun interactive chat:
python examples/ollama_example.py
REST API Features
200+ commands whitelisted and validated
API key authentication (optional, via
REST_API_KEYenv 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 |
| GET | Check Ableton connection |
| GET | Get LLM tool definitions |
| GET | Session info |
| GET | List all tracks (with pagination) |
| GET | List all scenes (with pagination) |
| POST | Execute any command |
| GET | Interactive Swagger docs |
Supported LLM Providers
Provider | Cost | Setup |
Ollama | Free (local) |
|
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
Copy
AbletonMCP_M4Lfolder to:macOS:
~/Music/Ableton/User Library/Presets/Audio Effects/Max Audio Effect/Windows:
Documents\Ableton\User Library\Presets\Audio Effects\Max Audio Effect\
Build the
.amxdbinary (the repo includes a.maxpatsource file):python3 scripts/build_amxd.pyOr rename
AbletonMCP.amxd.maxpattoAbletonMCP.amxdDrag onto any track in Ableton Live
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__.pyfile is in a folder named exactlyAbletonMCPCheck 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_effectnot 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_itemparam name mismatch — the REST API schema sendsuribut the remote script expecteditem_uri. Now accepts both.set_arrangement_loopparam name mismatch — REST API sendsloop_start/loop_length/loop_onbut remote script expectedstart/end/enabled. Now accepts both naming conventions._find_browser_item_by_urididn't searchplugins/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.Nonecategories caused search crash — optional browser categories (plugins, samples, packs) could beNone, 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_masterandload_device_preset_by_nametoALLOWED_COMMANDSandCOMMAND_PARAM_SCHEMAS.
New Commands
Command | Endpoint | Description |
|
| Load a browser item (plugin/effect) onto the Master track by URI |
|
| 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 toolsadd_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
Scored across 128 tools
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.
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.
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.
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
Related MCP Connectors
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Compose, mix, master and export in Logic Pro, REAPER or Ableton Live by talking to an AI engineer.
Related MCP Servers
- AlicenseBqualityCmaintenanceConnects 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.162,107 PyPI3,338MIT
- AlicenseCqualityDmaintenanceConnects 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.373MIT
- AlicenseBqualityDmaintenanceConnects 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.161MIT
- AlicenseBqualityDmaintenanceConnects Ableton Live to Claude AI through the Model Context Protocol, enabling AI-assisted music production and Live session manipulation via over 200 tools.10060MIT