Ableton MCP
AbletonMCP Extended
PyPI:
ableton-mcp-suite· install withuvx ableton-mcp-suite
A heavily extended fork of @ahujasid/ableton-mcp — 45 tools total (22 new + 10 enhanced) for full music production workflows from Claude.
The upstream ableton-mcp exposes 16 mostly-additive tools (create track, create clip, add notes, fire/stop, set tempo). This fork adds device parameter control, track state management, audio import, return/master track support, full Arrangement view operations, device routing (sidechain!), and locator/cue point management — everything you need to take Claude from "writes MIDI notes" to "actually mixes and arranges a song."
Every tool in this fork was added during a real production session (a 12+ hour Afro-deep-house track build), in response to a real blocker. Nothing is speculative.
Why this fork exists
Upstream ableton-mcp is a brilliant bridge — it solves the hard problem of connecting Claude to Ableton via a Remote Script + socket server. But its surface is narrow:
No device parameter control → Claude can drop a Reverb on a track but can't set its decay
No deletion → Mistakes accumulate; can't say "scratch that, remove the device"
No track state → Can't mute, solo, set volume, set pan, set sends
No Arrangement view → Clips only land in Session view; you drag every one onto the timeline yourself
No return / master tracks → Can't put reverb on a return, can't load a limiter on master
No device routing → Can't set sidechain inputs (so no deep-house pumping)
No locators / loop region → Can't mark section boundaries or loop a section
Audio import is fragile → File path loading isn't direct in Live's Python API
This fork addresses all of the above with 22 new tools plus enhancements to 10 existing tools.
Related MCP server: ableton-mcp
Quickstart
Prerequisites
Ableton Live 11 or 12 (tested on Live 12.4 Beta)
Python 3.10+
uvpackage managerEither Claude Desktop or Claude Code (CLI)
Install
Easiest (PyPI, recommended): no clone needed — Claude / Cursor / Cline will install on demand via uvx.
# Verify it runs (optional sanity check)
uvx ableton-mcp-suite --helpFrom source (for development / contributing):
git clone https://github.com/farmhutsoftwareteam/ableton-mcp-extended.git
cd ableton-mcp-extended
uv syncInstall the Remote Script (the side that runs INSIDE Ableton)
⚠️ On Ableton Live 12, install the Remote Script at:
~/Music/Ableton/User Library/Remote Scripts/AbletonMCP/__init__.pyNOT the path the upstream README suggests (User Remote Scripts under Preferences — that's for Instant Mappings, not full Remote Scripts). This is a Live 12 change that the upstream README hasn't been updated for.
mkdir -p "$HOME/Music/Ableton/User Library/Remote Scripts/AbletonMCP"
cp AbletonMCP_Remote_Script/__init__.py "$HOME/Music/Ableton/User Library/Remote Scripts/AbletonMCP/__init__.py"On Windows, the path is %USERPROFILE%\Documents\Ableton\User Library\Remote Scripts\AbletonMCP\__init__.py.
Wire it up in Ableton
Launch Ableton Live
Settings → Tempo & MIDI
Under Control Surface, pick
AbletonMCPSet Input = None, Output = None
If "AbletonMCP" doesn't appear in the dropdown, fully quit Live (⌘Q / Alt-F4) and reopen — Remote Scripts are only scanned on startup.
Connect Claude to this fork
For Claude Desktop (easiest — uses PyPI package), edit ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"ableton-mcp": {
"command": "uvx",
"args": ["ableton-mcp-suite"]
}
}
}For Claude Code (CLI):
claude mcp add ableton-mcp -s user -- uvx ableton-mcp-suiteFor Cursor / Cline / other MCP clients, use the same uvx ableton-mcp-suite command in your client's MCP config.
From a local clone (for development):
# Claude Desktop config:
"command": "uv", "args": ["run", "--directory", "/absolute/path/to/ableton-mcp-extended", "python", "-m", "MCP_Server.server"]
# Claude Code:
claude mcp add ableton-mcp -s user -- uv run --directory /absolute/path/to/ableton-mcp-extended python -m MCP_Server.serverRestart your Claude client. You should see ableton-mcp connected with 38 tools available.
Tool reference
Legend: 🆕 = new in this fork · ⊕ = enhanced (extra parameters) · ✅ = unchanged from upstream
Session & track inspection
Tool | Notes |
| ✅ Tempo, signature, track count, master |
| ⊕ |
| Convenience — no index needed |
| ✅ Hierarchical browser tree |
| ✅ List items at a specific browser path |
Track creation & management
Tool | Notes |
| ✅ Create new MIDI track |
| Create new audio track |
| ⊕ Now supports returns + master |
| 0.0–1.0 (0.85 ≈ unity) |
| -1.0 (L) to 1.0 (R) |
| 0.0–1.0; sends to return tracks |
| Bool — works on regulars + returns |
| Bool |
| Bool — regulars only |
| Destructive, no undo on trial license |
Clip operations (Session view)
Tool | Notes |
| ✅ Create empty MIDI clip |
| ✅ Rename clip |
| ✅ Write MIDI notes |
| Remove clip from Session slot |
| Load audio file. Multiple fallback strategies — direct API, browser refresh, walk all browser attributes. Documents API limitations honestly. |
| ✅ Fire (play) a Session clip |
| ✅ Stop a Session clip |
Device operations
Tool | Notes |
| ⊕ Load device on regular / return / master |
| ✅ Load drum rack + kit |
| List every parameter with name, current value, min, max, quantized values |
| The big one — dial any knob |
| Remove device from chain |
| Inspect available input routings (sidechain sources, etc.) |
| Set sidechain input / device routing |
Arrangement view (entirely new in this fork)
Tool | Notes |
| Duplicate a Session MIDI clip onto the timeline at a beat position |
| Delete all arrangement clips on a track |
| List arrangement clips with positions/lengths/names |
| Add or update a named locator (cue point) |
| Delete all locators |
| Set Arrangement view loop region |
Transport & global
Tool | Notes |
| ✅ Start playback |
| ✅ Stop playback |
| ✅ Set song tempo |
Total: 38 tools.
The story — how this fork came to be
This fork was built in a single ~12-hour production session, alongside the actual music it was being used to make ("Mbira Tension Stems" — an Afro-deep-house track combining Suno-generated stems with original Ableton MIDI). Every tool was added in direct response to a real production blocker. The fork evolved across five versions:
v1 — Device parameter control + track state (9 tools)
Blocker: Claude could load a Reverb but couldn't set its decay. Could create tracks but couldn't mute or solo them.
Added: get_device_parameters, set_device_parameter, set_track_volume, set_track_mute, set_track_solo, set_track_arm, delete_track, delete_clip, delete_device.
The single biggest unlock was set_device_parameter — turning Claude from "load default devices" into "dial in actual settings." Suddenly we could specify "set Compressor attack to 0.5ms, ratio to 4:1" and have it happen.
v2 — Audio tracks + pan/send + audio import (4 tools)
Blocker: Couldn't create audio tracks. Couldn't set pan or sends. Couldn't import audio files.
Added: create_audio_track, set_track_pan, set_track_send, import_audio_file.
import_audio_file is the gnarly one. Live's Python API doesn't accept arbitrary file paths directly — files have to be reachable through Live's browser. The implementation walks the browser tree looking for a match, with multiple fallback strategies and honest error messages when it can't find the file. This is documented as a known limitation.
v3 — Return + master track support (1 tool + 10 enhanced)
Blocker: Couldn't put reverb on a return track. Couldn't load a limiter on master.
Realized Live distinguishes _song.tracks, _song.return_tracks, and _song.master_track — three separate collections. Added an optional track_kind parameter ("regular", "return", "master") to 10 existing tools (get_track_info, set_track_name, set_track_volume, set_track_pan, set_track_mute, set_track_solo, load_instrument_or_effect, get_device_parameters, set_device_parameter, delete_device). Plus added get_master_track_info() as a convenience.
v4 — Arrangement view operations (5 tools)
Blocker: All clips landed in Session view. Building a song timeline meant dragging every clip manually onto Arrangement.
Added: place_clip_in_arrangement, clear_arrangement_clips, get_arrangement_clips, set_locator, set_loop.
place_clip_in_arrangement reads notes from a Session MIDI clip (via clip.get_notes_extended()), creates a new clip on the Arrangement timeline via track.create_midi_clip(start, end), then writes the notes into it. This let us programmatically construct a 120-bar song timeline with 186 clip placements in two batches of MCP calls.
v4.1 — Bug fixes + clear_locators (1 tool)
Bugs found in v4:
get_notes_extended()returns tuples, not objects. My first implementation assumed it returnedMidiNoteobjects with.pitchattributes — it actually returns tuples(pitch, time, duration, velocity, mute). Fixed to handle all three shapes (tuples, objects, dicts).current_song_timecan't be set past song length. Live refused to position the playhead at beat 192 when the song was only 0 bars long. The locator API requires moving the playhead first. Fixed with a song-length pre-check + clearer error message. Workaround: place arrangement clips first to extend the song, then add locators.
Added: clear_locators() for redo workflows.
v5 — Device routing (sidechain input) (2 tools)
Blocker: Couldn't set sidechain inputs on Compressors. This is THE deep-house signature — kick triggers bass + pads ducking. Without it, the mix doesn't breathe.
Realized Live distinguishes "parameters" (continuous knob values) from "routings" (channel source selections). set_device_parameter only handles parameters. Sidechain INPUT is a routing.
Added: get_device_routings, set_device_routing. They probe multiple Live API surfaces (available_input_routing_types, input_routing_types, input_routings, audio_inputs) because the property names vary across Live versions, and return diagnostic info on failure.
Implementation notes (the gnarly parts)
Live API gotchas this fork handles
get_notes_extended()returns tuples on Live 12.4 Beta, not objects. The implementation handles tuples, objects with.pitch, and dicts.current_song_timecan't be set past song length. Locator placement validates against song length first; gives a clear error message pointing to the fix (place clips first).Browser scanning is lazy. Files added to User Library during a Live session aren't indexed until rescanned.
import_audio_filetries multiple fallbacks: directclip_slot.create_audio_clip(path),app.browser.refresh(), walks all browser attributes viadir().Routing vs parameters are different APIs. Sidechain input is a routing, not a parameter. Required a separate tool (
set_device_routing) with its own discovery flow (get_device_routings).Track kinds.
_song.tracks,_song.return_tracks,_song.master_trackare three different collections. Thetrack_kindparameter dispatches correctly.
Threading
All commands that modify Live state are scheduled on Live's main thread via self.schedule_message(0, main_thread_task). Read-only commands (get_session_info, browser inspection) run directly. This matches the upstream pattern.
Error handling philosophy
Every tool returns rich diagnostic info on failure — what was tried, what was available, what the Live API surfaced. Production sessions hit unfamiliar API surfaces constantly; clear errors save hours.
Limitations & known issues
Automation envelopes are not yet supported. Filter sweeps over time, volume rides per section, reverb send automation — these all require
clip.envelopesAPI which isn't exposed in this fork. Coming in a future version.Audio import requires browser-reachable files. Files must be in
~/Music/Ableton/User Library/or a folder added as a Place in Live's browser sidebar. The browser-walk implementation can find them only after Live has indexed them.Sidechain input routing depends on Live version. The implementation probes multiple attribute names but Live 12.4 Beta exposes a different API surface than Live 11. Manual routing dropdown click may still be needed in some setups.
Trial Ableton licenses block save and export. Production work is in-session only on the trial.
No vocal sample generation / no audio synthesis. This is a Live control bridge, not an audio generator. Bring your own samples or use Live's stock instruments.
Keywords / discoverability
ableton, ableton live, ableton 12, ableton 11, ableton mcp, ableton remote script, ableton python api, live object model, model context protocol, mcp, claude, claude code, claude desktop, anthropic, anthropic mcp, ai music, ai music production, ai daw, ai assisted music, generative music, prompt music production, deep house, afro house, deep house production, midi, midi automation, ableton automation, ableton sidechain, ableton arrangement, ableton routing, daw automation, mbira, zimbabwean music, kalimba, claude ableton, ableton plugin, ableton extension, music ai tools, mixing, mastering, ableton scripting, live api python, max for live alternative, ableton remote control, ableton tooling, ableton developer
Credits
Built on top of @ahujasid/ableton-mcp by Siddharth Ahuja. All credit for the original Remote Script framework + socket bridge + initial tool set goes there.
Extensions in this fork by farmhutsoftwareteam (Munya Makosa), built during production of the Mbira Tension Stems project. Pull requests welcome.
License
MIT (same as upstream).
Contributing
Found a Live API quirk this fork doesn't handle? Want to add automation envelopes, vocal-chop importing, M4L device control, or any of the other missing pieces? PRs welcome. Open an issue first if it's a big change.
The codebase is small and well-documented — AbletonMCP_Remote_Script/__init__.py is the Remote Script (lives inside Live), MCP_Server/server.py is the MCP server (talks to Claude). Each tool follows a simple pattern: add the command_type to the dispatch list, add an elif handler, add an implementation method, add a matching @mcp.tool() in the server.
Disclaimer
This is an unofficial third-party integration. Not affiliated with or endorsed by Ableton.
Available Tools
38 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).
clear_arrangement_clipsA
Delete ALL arrangement clips from a track. Destructive — for redoing arrangement.
Parameters:
track_index: Track whose arrangement clips should be cleared
Inputs: track_index (required).
clear_locatorsA
Delete ALL locators (cue points) from the song. Destructive — for redoing locator placement.
Inputs: no named parameters.
create_audio_trackA
Create a new audio track in the session.
Parameters:
index: Position to insert the track. -1 = append at end (default).
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_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.
delete_clipA
Delete a clip from a Session-view clip slot. No-op if the slot is empty.
Inputs: clip_index (required), track_index (required).
delete_deviceA
Delete a device from a track's device chain.
Parameters:
track_index: Track containing the device (ignored for master)
device_index: Position in the chain
track_kind: 'regular' (default), 'return', or 'master'
Inputs: track_index (required), device_index (required), track_kind.
delete_trackA
Delete a track from the session. DESTRUCTIVE — cannot be undone via MCP. On a trial license with save disabled, the track cannot be recovered.
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).
get_arrangement_clipsA
List all clips currently on a track's Arrangement timeline, with positions, lengths, and names.
Use this to verify arrangement work, find gaps, or confirm placements.
Parameters:
track_index: Track to inspect
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_device_parametersA
List every tunable parameter on a device.
Returns each parameter's index, name, current value, min, max, and (for quantized parameters like enums) the available value items. Use this BEFORE set_device_parameter so you know which index to address and what range is valid.
Parameters:
track_index: Track containing the device (ignored for master)
device_index: Position of the device in the track's device chain (0 = first)
track_kind: 'regular' (default), 'return', or 'master'
Inputs: track_index (required), device_index (required), track_kind.
get_device_routingsA
Inspect available input routings for a device (used to discover sidechain sources).
Returns the available routing types and channels for the device, plus current selections. Use this BEFORE set_device_routing so you know what type/channel names are valid.
Parameters:
track_index: Track containing the device
device_index: Position in the chain
track_kind: 'regular' (default), 'return', or 'master'
Inputs: track_index (required), device_index (required), track_kind.
get_master_track_infoA
Convenience: get the master track's info (devices, volume, panning).
Inputs: no named parameters.
get_session_infoB
Get detailed information about the current Ableton session
Inputs: no named parameters.
get_track_infoB
Get detailed information about a track.
Parameters:
track_index: Index of the track. For master, ignored (use track_kind='master').
track_kind: 'regular' (default), 'return' (return tracks A/B/...), or 'master'.
Inputs: track_index (required), track_kind.
import_audio_fileA
Load an audio file from disk into a Session-view clip slot on an audio track.
LIMITATION: Live's Python API cannot load arbitrary file paths directly. The file must be reachable through Live's browser — i.e., either under ~/Music/Ableton/User Library/ (always reachable) or inside a folder that's been added as a Place in Live's browser sidebar (the '+ Add Folder' button).
If the file isn't in a browser-reachable location, this returns a clear error explaining what to do. The fallback is always to drag the file into the slot manually from Finder.
Parameters:
track_index: Audio track to load into (must be an audio track)
clip_index: Empty Session-view clip slot index
file_path: Absolute path to the audio file (.wav, .aif, .mp3, etc.)
Inputs: file_path (required), clip_index (required), track_index (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_effectA
Load an instrument or effect onto a track using its URI.
Parameters:
track_index: Index of the destination track (ignored for master)
uri: Browser URI of the device/instrument (from get_browser_tree / get_browser_items_at_path)
track_kind: 'regular' (default), 'return' (for return effects), or 'master' (for master chain)
Inputs: uri (required), track_index (required), track_kind.
place_clip_in_arrangementA
Drop a Session-view MIDI clip onto the Arrangement timeline at a specific beat position.
The source Session clip is copied (not moved) — it remains in its slot and the new arrangement clip is an independent copy. Beat positions: position=0 is bar 1 beat 1, position=16 is bar 5 beat 1 (16 beats = 4 bars in 4/4), etc.
Currently MIDI tracks only. Audio tracks will raise an error.
Parameters:
track_index: Track to place the clip on (MIDI track only)
source_slot: Source Session clip slot index on the SAME track
position: Beat position on the Arrangement timeline (0 = start)
Inputs: position (required), source_slot (required), track_index (required).
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_device_parameterA
Set a parameter on a device to a specific value.
Value is clipped to the parameter's min..max if out of range. Call get_device_parameters first to discover the parameter index and valid range.
Parameters:
track_index: Track containing the device (ignored for master)
device_index: Position of the device in the track's device chain
parameter_index: Index of the parameter (from get_device_parameters)
value: New value (will be clipped to min..max)
track_kind: 'regular' (default), 'return', or 'master'
Inputs: value (required), track_index (required), device_index (required), parameter_index (required), +1 more.
set_device_routingA
Set a device's input routing (e.g., select a sidechain audio source).
For sidechain on Compressor/Gate: typical usage is to set the routing channel to another track's name (e.g., "5-Kick"). Names are matched case-insensitively via substring.
Call get_device_routings first to discover the exact type/channel names available.
Parameters:
track_index: Track containing the device
device_index: Position in the chain
routing_type_name: Routing TYPE name to match (e.g., "External Input"). Empty to skip.
routing_channel_name: Routing CHANNEL name to match (e.g., "5-Kick"). Empty to skip.
track_kind: 'regular' (default), 'return', or 'master'
Inputs: track_index (required), device_index (required), track_kind, routing_type_name, +1 more.
set_locatorA
Add or update a named locator (section marker) at a specific beat position on the Arrangement timeline.
Use for section labels: "Intro", "Build 1", "Drop 1", "Break", "Drop 2", "Outro". If a locator already exists at this position, its name is updated.
Parameters:
position: Beat position (0 = start of song)
name: Label for the locator (e.g. "Drop 1")
Inputs: name (required), position (required).
set_loopA
Set the Arrangement view loop region and toggle whether it's active.
Useful for previewing specific sections of the arrangement (e.g. just the drop, just the build).
Parameters:
start: Loop start position in beats
length: Loop length in beats
enabled: True to enable looping, False to disable
Inputs: start (required), length (required), enabled.
set_tempoA
Set the tempo of the Ableton session.
Parameters:
tempo: The new tempo in BPM
Inputs: tempo (required).
set_track_armA
Arm or un-arm a track for recording. Fails on tracks that cannot be armed (e.g. group tracks).
Inputs: arm (required), track_index (required).
set_track_muteA
Mute or un-mute a track. track_kind: 'regular' (default) or 'return'. Master cannot be muted.
Inputs: mute (required), track_index (required), track_kind.
set_track_nameA
Set the name of a track.
Parameters:
track_index: Index of the track to rename (ignored for master)
name: New name
track_kind: 'regular' (default), 'return', or 'master'
Inputs: name (required), track_index (required), track_kind.
set_track_panA
Set a track's stereo pan position.
Parameters:
track_index: Track to adjust (ignored for master)
pan: -1.0 = hard left, 0.0 = center, 1.0 = hard right. Clipped to range.
track_kind: 'regular' (default), 'return', or 'master'
Inputs: pan (required), track_index (required), track_kind.
set_track_sendA
Set how much of a track's signal is sent to a return track.
Send indices match the order of return tracks in the session (A=0, B=1, ...). Use get_session_info to see how many return tracks exist.
Parameters:
track_index: Source track
send_index: Which return to send to (A=0, B=1, etc.)
value: 0.0 (no send) to 1.0 (full send). Clipped to range.
Inputs: value (required), send_index (required), track_index (required).
set_track_soloA
Solo or un-solo a track. track_kind: 'regular' (default) or 'return'. Master cannot be soloed.
Inputs: solo (required), track_index (required), track_kind.
set_track_volumeA
Set a track's volume. Live uses a 0.0-1.0 normalized scale (0.85 ≈ 0 dB / unity).
Parameters:
track_index: Track to adjust (ignored for master)
volume: 0.0 (silence) to 1.0 (max). 0.85 is unity gain. Clipped to range.
track_kind: 'regular' (default), 'return', or 'master'
Inputs: volume (required), track_index (required), track_kind.
start_playbackA
Start playing the Ableton session.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 38 tools
Most tools clearly target distinct resources and actions (tracks, clips, devices, transport, arrangement). A few overlaps exist, such as get_master_track_info duplicating get_track_info with track_kind='master', and load_drum_kit being a specialized version of load_instrument_or_effect, but descriptions help clarify the intended usage.
The naming is largely consistent with a verb_noun pattern (get_*, set_*, create_*, delete_*). Minor deviations include 'fire_clip' instead of 'play_clip' or 'start_clip', and 'add_notes_to_clip' uses 'add' instead of 'create'. These are readable but not perfectly uniform.
With 38 tools, the server exceeds the typical MCP scope and falls into the 'too many' category (>25). While the domain of DAW control is broad, many tools could be consolidated or omitted (e.g., get_master_track_info is redundant). This number may overwhelm agents and increase selection difficulty.
The tool surface covers core Ableton workflows well: session transport, track management, clip creation and editing, device control, browser navigation, and arrangement placement. Minor gaps exist, such as no way to delete a single arrangement clip (only clear all), no scene management, and no undo/redo, but agents can work around these.
Maintenance
Related MCP Connectors
OSC ↔ MIDI bridge for synthesizers and DAWs, with the SynthHub catalogue. A MIDI MCP and OSC MCP.
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
MCP server for Producer/Riffusion AI music generation
An MCP connector for Adobe After Effects. Real, editable layers and keyframes, not scripts.
Related MCP Servers
- AlicenseBqualityCmaintenanceTurns Ableton Live into an MCP-accessible control surface, providing tools for controlling transport, tracks, clips, and devices, as well as resources for reading live state.510041 PyPI3MIT
- FlicenseBqualityDmaintenanceMCP server for controlling Ableton Live, enabling AI assistants to interact with Live sessions through tools for track/clip/scene management, playback control, and device parameter adjustments.48-
- AlicenseNot gradedqualityDmaintenanceMCP bridge for Ableton Live with Lyra digital avatar companion, enabling live control, arrangement coaching, MIDI manipulation, and project memory via Producer Pal integration.MIT
- AlicenseNot gradedqualityDmaintenanceA custom Ableton Live MCP focused on keeping sets tidy and creating MIDI that fits material already in the set.MIT