Skip to main content
Glama

ableton-mcp

An MCP server that lets Claude observe and compose in Ableton Live 12 via AbletonOSC.

Designed for musicians who want a pair-programming-style collaborator: Claude can read your Live set, explain what's there, and write musical ideas directly into clips — then narrate the choices so you learn as you go.

Status

v0.8 — high-level composition tools and a simpler write API. create_chord_progression (roman numerals or chord names + key) and create_drum_pattern (step strings like x...x...x...x...) let Claude express harmonic and rhythmic ideas in a few tokens instead of emitting raw note lists. The duplicate/delete/rename trio per object collapses into one edit_track / edit_clip / edit_scene tool each, cutting the surface area Claude has to reason about. Browser listing in the forked AbletonOSC now caches per-folder results, so the first hit pays the disk walk and subsequent list_browser calls return instantly (previously they tripped the 2.0s OSC timeout on large libraries). v0.7 added analyze tools (detect_clip_key, detect_track_key, detect_session_key) using Krumhansl-Schmuckler key profiles. Builds on v0.6 scenes + color, v0.5 revise-and-respond (undo, capture MIDI), v0.4 automation, and v0.3 browser/loading.

Related MCP server: Ableton MCP

How it works

Claude  ←→  MCP (this repo, stdio)  ←→  python-osc  ←→  AbletonOSC remote script  ←→  Ableton Live 12

Tool surface (v0.8)

Read — get_session_overview, get_track_detail, get_clip_notes, get_transport_state, get_selected, get_device_parameters, list_browser, sample_clip_automation

Analyze — detect_clip_key, detect_track_key, detect_session_key

Revise — undo

Write — create_midi_clip, modify_clip_notes, create_chord_progression, create_drum_pattern, set_tempo, set_time_signature, create_track, load_device, set_device_parameter, set_clip_automation / clear_clip_automation, set_track_volume / set_track_panning / set_track_mute / set_track_solo / set_track_arm, edit_track / edit_clip / edit_scene (duplicate, delete, rename), create_scene, set_clip_color / set_scene_color, capture_midi, fire_clip / fire_scene / stop_clip (gated — Claude must ask the user)

Setup

1. Install AbletonOSC in Live

This repo bundles a forked AbletonOSC as a submodule with a BrowserHandler added for list_browser / load_device. Clone with submodules and symlink into Live's MIDI Remote Scripts folder:

git clone --recurse-submodules https://github.com/mrinalghosh/ableton-mcp.git
cd ableton-mcp
# macOS
ln -s "$PWD/AbletonOSC" "$HOME/Music/Ableton/User Library/Remote Scripts/AbletonOSC"
  • macOS: ~/Music/Ableton/User Library/Remote Scripts/

  • Windows: Documents\Ableton\User Library\Remote Scripts\

Then in Live → Settings → Link, Tempo & MIDI, add AbletonOSC as a Control Surface.

2. Install this MCP server

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

3. Register with Claude

Add to your Claude Code / Claude Desktop MCP config:

{
  "mcpServers": {
    "ableton": {
      "command": "ableton-mcp"
    }
  }
}

Pedagogy

The system prompt asks Claude to write first, then explain: when you ask for a musical idea, Claude generates the MIDI directly into Live, then narrates the choices (key, rhythm, voice leading). When you ask "what is this?", Claude grounds itself with get_selected before answering.

Known quirks

  • Track/clip names come back with hyphens instead of spaces. AbletonOSC normalizes whitespace in string responses, so a track displayed in Live as 1 MIDI is reported as 1-MIDI. We pass this through unchanged — reversing it would corrupt names the user actually wrote with hyphens.

  • undo is per-Live-action, not per-MCP-tool. A single MCP write may correspond to several Live undo steps (e.g. create_track + load_device + create_midi_clip is three undos), or to one (a modify_clip_notes with 16 notes is one). To fully reverse a multi-step change, call undo repeatedly — the reply's can_undo_more flag indicates whether more history remains. AbletonOSC doesn't expose undo grouping, so we can't fix this in the wrapper.

Roadmap

  • v0.1: end-to-end smoke test against real Live instance; name tracks after creation

  • v0.2: device parameter control (get_device_parameters, set_device_parameter); per-track mixer (volume, pan, mute, solo)

  • v0.3: browse Live's Library and load instruments/effects onto tracks (forked AbletonOSC adds BrowserHandler)

  • v0.4: clip automation lanes — read/write parameter envelopes inside a clip (forked AbletonOSC adds AutomationHandler)

  • v0.5: revise-and-respond — undo; duplicate_clip / delete_clip / delete_track / rename_track / rename_clip; capture MIDI (record-arm + Capture) so Claude can riff on what you just played

  • v0.6: scene management (create_scene, fire_scene, delete_scene, rename_scene); clip color so Claude can visually group variants

  • v0.7: scale/key inference — detect_clip_key / detect_track_key / detect_session_key using Krumhansl-Schmuckler key profiles, plus pitch utility helpers

  • v0.8: high-level composition tools (create_chord_progression, create_drum_pattern) so Claude can express musical ideas in a few tokens; collapse per-object dup/delete/rename into single edit_track / edit_clip / edit_scene tools; cache browser folder listings in AbletonOSC fork to fix list_browser timeouts on large libraries

  • v0.9: quantize captured MIDI — close the capture loop with quantize_clip

License

MIT — see LICENSE.

Available Tools

13 tools
create_midi_clipC

Create a MIDI clip and fill with notes. Use this when the user wants a musical idea written into the set.

Inputs: track (required), clip_slot (required), length_beats (required), notes (required).

create_trackC

Create a new MIDI or audio track at end of set.

Inputs: track_type, name.

explain_shortcutB

Look up an Ableton Live keyboard shortcut by action name.

Inputs: action (required).

fire_clipA

Start playing a clip. ASK THE USER FIRST before calling — surprise playback is disruptive.

Inputs: track (required), clip (required).

get_clip_notesB

MIDI notes in a clip: pitch, start (beats), duration, velocity.

Inputs: track (required), clip (required). Returns: result

get_selectedA

What the user currently has selected in Live. Call this first when the user asks 'what is this?'.

Inputs: no named parameters. Returns: object

get_session_overviewB

Tempo, time signature, and summary of every track.

Inputs: no named parameters. Returns: object

get_track_detailB

Devices, clip slots, and routing for one track.

Inputs: track (required). Returns: object

get_transport_stateB

Transport state: playing, current beat, loop.

Inputs: no named parameters. Returns: object

modify_clip_notesC

Replace all notes in an existing MIDI clip.

Inputs: track (required), clip (required), notes (required).

set_tempoC

Set song tempo (BPM).

Inputs: bpm (required).

set_time_signatureC

Set song time signature.

Inputs: numerator (required), denominator (required).

stop_clipC

Stop a clip.

Inputs: track (required), clip (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 13 tools

    Disambiguation5/5

    Each tool targets a distinct action or resource: clip creation/modification, transport controls, track management, session overview, and shortcut lookup. No two tools have overlapping purposes.

    Naming Consistency5/5

    All tools follow a consistent snake_case verb_noun pattern (e.g., create_midi_clip, get_clip_notes, set_tempo), making them predictable and easy to distinguish.

    Tool Count5/5

    13 tools cover the essential operations for an Ableton Live assistant without being overwhelming. The scope is well-balanced for core music production tasks.

    Completeness4/5

    Covers clip, track, transport, and session management. Missing operations like delete_track or record_arm are minor gaps that agents can work around, but core workflows are solid.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • 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
      Not graded
      quality
      D
      maintenance
      Enables natural language control over Ableton Live for generating musical patterns, melodies, and full song arrangements. It also provides tools for sample searching and mixing assistance through an OSC-based connection with Claude Desktop.
      1
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Connects Claude AI to Ableton Live via the Model Context Protocol, enabling prompt-assisted music production, track and clip manipulation, and session control.
      16
      MIT