Skip to main content
Glama
ulm0
by ulm0

Ableton Live MCP

Ein MCP-Server für Ableton Live 12, basiert auf dem offiziellen Ableton Extensions SDK. Der MCP-Server läuft innerhalb von Live als Erweiterung — kein Bridge-Prozess, keine MIDI-Remote-Skripte. Jeder MCP-Client (Claude Code, Claude Desktop, Cursor, ...) verbindet sich über streamable HTTP und erhält volle programmatische Kontrolle über das Live-Set: Spuren, Clips, MIDI-Noten, Geräte, Parameter, Mixer, Szenen, Warping, Rendering und mehr.

MCP client (Claude, ...) ──streamable HTTP──▶ http://127.0.0.1:8722/mcp
                                                      │
                                     Live Extension Host (Node.js)
                                                      │
                                              Ableton Live 12

Voraussetzungen

  • Ableton Live 12.4.5 oder neuer (Extensions-Unterstützung)

  • Node.js >= 24.14 (nur Build)

Related MCP server: ableton-agent-mcp

Installation

npm install
npm run package        # builds and produces Ableton-Live-MCP-<version>.ablx

Ziehen Sie in Live die .ablx-Datei auf Einstellungen → Erweiterungen. Der MCP-Endpunkt startet zusammen mit Live unter http://127.0.0.1:8722/mcp (GET /health für einen schnellen Check).

Entwicklermodus

Aktivieren Sie in Live Einstellungen → Erweiterungen → Entwicklermodus und führen Sie dann Folgendes aus:

npm start              # builds and runs the extension against the running Live

Die .env-Datei muss auf Ihre Live-Installation verweisen, z. B.:

EXTENSION_HOST_PATH=/Applications/Ableton Live 12 Beta.app.

Client verbinden

Claude Code:

claude mcp add --transport http ableton-live http://127.0.0.1:8722/mcp

Claude Desktop (oder ein Client, der nur stdio unterstützt) über mcp-remote:

{
  "mcpServers": {
    "ableton-live": {
      "command": "npx",
      "args": ["mcp-remote", "http://127.0.0.1:8722/mcp"]
    }
  }
}

Konfiguration

Der Port wird in config.json im Speicherverzeichnis der Erweiterung gespeichert (wird beim ersten Start erstellt; der Pfad wird von song_get unter environment.storage_directory gemeldet). Standard:

{ "port": 8722 }

Funktionsweise

  • Jedes Live-Objekt (Spur, Clip, Gerät, Parameter, ...) wird über eine stabile Objekt-ID angesprochen, die über die Auflistungs-Werkzeuge (song_get, track_get, device_get, ...) ermittelt wird.

  • IDs bleiben gültig, bis das Objekt gelöscht oder verschoben wird, oder bis ein anderes Live-Set geladen wird. Veraltete IDs führen zu einem Fehler, der den Client zum erneuten Auflisten auffordert.

  • Alle Zeit- und Positionsangaben erfolgen in Beats; Farben werden als #RRGGBB angegeben; MIDI-Tonhöhen liegen zwischen 0 und 127.

  • Schreibvorgänge mit mehreren Werten (parameter_set) werden in Live zu einem einzigen Undo-Schritt zusammengefasst.

Werkzeuge

Song

Werkzeug

Beschreibung

song_get

Zustand des Live-Sets: Tempo, Tonleiter, Grid, Spuren, Return-/Master-Spuren, Szenen, Cue-Punkte, Umgebungsinformationen. Der Einstiegspunkt — liefert die überall sonst verwendeten Objekt-IDs. Mit include werden nur ausgewählte Abschnitte abgerufen.

song_set

Song-Eigenschaften setzen (Tempo).

Spuren

Werkzeug

Beschreibung

track_get

Track-Details: Clip-Slots + Clips, Take-Lanes, Arrangement-Clips, Geräte, Mixer mit Werten. Ansprache über track_id, track_index oder track_name; include wählt Abschnitte aus.

track_set

Name / Mute / Solo / Arm.

track_create

Neue Audio- oder MIDI-Spur erstellen.

track_delete

Spur löschen.

track_duplicate

Spur duplizieren.

track_clear_events_in_range

Arrangement-Clips in einem Beat-Bereich löschen bzw. kürzen.

take_lane_create

Take-Lane zu einer Spur hinzufügen.

take_lane_set

Take-Lane umbenennen.

Szenen & Cue-Punkte

Werkzeug

Beschreibung

scene_create / scene_set / scene_delete / scene_duplicate

Szenen verwalten.

cue_point_create / cue_point_set / cue_point_delete

Arrangement-Locators verwalten.

Clips

Werkzeug

Beschreibung

clip_create

MIDI- oder Audio-Clips in einen Session-Slot (per ID oder Spur + scene_index), in einer Arrangement-Spur oder in einer Take-Lane erstellen. MIDI-Clips akzeptieren Inline-notes; name/color werden beim Erstellen angewendet. Audiodateien werden automatisch in das Projekt importiert.

clip_get

Vollständige Clip-Details (Audio: Warp-Einstellungen + Marker; MIDI: Notenanzahl).

clip_set

Name, Farbe, Stummschalten, Looping, Warping, Warp-Modus.

clip_delete

Einen Session- oder Arrangement-Clip löschen.

midi_clip_get_notes

Alle MIDI-Noten auslesen.

midi_clip_set_notes

Noten schreiben: replace (alle ersetzen) oder merge (überlagern).

midi_clip_edit_notes

Serverseitige Noten-Transformationen — Transponieren, Zeitverschieben, Velocity-Skalierung/-Offset, Quantisieren, Löschen — mit Pitch-/Zeitauswahl. Kein Read-Modify-Write-Roundtrip.

Geräte & Racks

Werkzeug

Beschreibung

device_get

Gerätedetails: Parameter mit Werten/Grenzen (parameter_filter-Teilzeichen, include_values, include_value_items), Rack-Ketten (include_chain_devices blиндet Pad-Geräte ein), Simpler-Sample.

device_insert

Ein integriertes Live-Gerät in eine Spur oder Rack-Kette einfügen.

device_delete / device_duplicate

Geräte entfernen oder duplizieren.

chain_get

Rack-Ketten-Details: Geräte + Ketten-Mixer.

rack_insert_chain

Einem Rack eine Kette hinzufügen.

drum_chain_set

MIDI-Notx eines Drum-Rack-Pads setzen.

simpler_replace_sample

Sample in einem Simpler tauschen.

Parameter & Mixing

Werkzeug

Beschreibung

parameter_get

Parameterwerte vom Gerät/Mixer lesen (Batch).

parameter_set

Parameterwerte schreiben (Batch, ein Undo-Schritt).

mixer_get

Lautstärke / Pan / Sends einer Spur oder Kette, mitsamt Parameter-IDs und Einheiten-Hinweisen.

mixer_set

Lautstärke / Pan / Sends einer Spur oder Kette in einem einzigen Aufruf setzen (ein Undo-Schritt).

Dateien & Rendering

Werkzeug

Beschreibung

import_file

Kopiert eine Datei in das Live-Projekt.

render_track_audio

Pre-FX-Audio einer Audio-Spur als WAV rendern.

UI & Befehle

Werkzeug

Beschreibung

show_dialog

Ein modales HTML-Dialogfenster in Live anzeigen (den Benutzer fragen, Berichte zeigen).

execute_command

Befehle des Extension Hosts ausführen, z. B. ableton-live-mcp.status.

Skills

skills/ableton-live/SKILL.md ist ein installierbarer Agent-Skill, der einem MCP-Client beibringt, diese Werkzeuge gut zu nutzen (ID-Ermittlungsablauf, Beats vs. Sekunden, Notenbearbeitungs-Muster, Geräte-Workflows). So installieren Sie den Skill für Claude Code:

mkdir -p ~/.claude/skills && cp -r skills/ableton-live ~/.claude/skills/

Typische Dinge, die Sie einen verbundenen Assistenten bitten können:

  • Ein 4-Bar-House-Drum-Pattern auf einer neuen MIDI-Spur mit einem Drum Rack erstellen

  • Alle Clips auf der Drum-Spur im Modus „Complex Pro" warpen

  • Jede Spur außer dem Vocal-Bus um 3 dB absenken

  • Ein Song-Gerüst aus Intro-, Strophe- und Chorus-Szenen mit Locators bauen

  • Das Sample im Simpler mit /path/to/kick.wav ersetzen und es auf C1 mappen

Einschränkungen

  • Die Erweiterung (und damit der MCP-Endpunkt) läuft nur, solange Live geöffnet ist.

  • Es können nur eingebaute Live-Devices eingefügt werden; Drittanbieter-Plug-ins können vom SDK nicht geladen werden.

  • Keine Transportsteuerung (Wiedergabe/Stopp/Aufnahme) und kein Clip-Launching — die Extensions API v1.0.0 stellt sie nicht bereit. Gleiches gilt für den Browser-Zugriff und Parameter-Automationskurven.

  • show_dialog blockiert, bis der Benutzer den Dialog in Live schließt.

Tests

npm test                  # E2E against a mock Extension Host: MCP client ↔ HTTP ↔ all tools
node test/live-smoke.mjs  # against a real running Live with the extension loaded

Der Live-Smoke-Test erstellt eigene Spuren/Clips/Devices, prüft jede Tool-Familie (MIDI-Noten, Warping, Drum-Racks, Rendering, ...) und löscht alles, was er erstellt hat.

Extension-Host-Eigenheiten (wissenswert)

Zwei Verhaltensweisen des Beta-Extension-Hosts, die dieses Projekt umgeht:

  1. Leerer VM-Kontext. Erweiterungen werden in einem V8-Kontext ohne global oder Web-Globals (Request, Response, ReadableStream, fetch, EventTarget, ...) ausgeführt, die das MCP-SDK beim Laden benötigt. build.ts injiziert einen Banner, der sie aus dem Node-Hauptkontext nachzieht (Core-Modul-Funktionen werden geteilt, daher läuft ihr Function-Konstruktor dort). Siehe build.ts für Details.

  2. bigint-Werte. Der Host gibt für einige Werte, die das SDK als number typisiert, bigint zurück (Clip-Farben, Noten-Pitches, ...). src/serialize.ts normalisiert das mit num(), bevor Arithmetik bzw. JSON verarbeitet wird.

  3. Asynchrone Schreibvorgänge. Die Property-Setter des SDK (Noten, Namen, Werte) kehren zurück, bevor Live die Änderung übernommen hat; ein Lesevorgang innerhalb weniger zehn Millisekunden kann den vorherigen Zustand zurückgeben. Agenten merken das selten, aber Read-after-Write-Tests müssen es kurz erneut versuchen (siehe eventually() in test/live-smoke.mjs).

Außerdem: Wenn der Dev-Extension-Host abstürzt, verweigert Live möglicherweise den nächsten Control-Channel-Handshake („bring-up timed out“) — starte Live neu und führe npm start erneut aus.

Fehlerbehebung

  • Endpunkt antwortet nicht: prüfe curl http://127.0.0.1:8722/health. Rechtsklick auf eine beliebige Spur in Live — die Kontextmenü-Aktion „Ableton Live MCP: Status“ zeigt den Endpunkt, an den die Erweiterung tatsächlich gebunden ist.

  • Port bereits belegt: Wenn ein anderer Prozess den konfigurierten Port belegt, protokolliert der Server den Fehler in der ExtensionHost.txt und startet nicht. Ändere port in der config.json der Erweiterung (Pfad wird durch song_get unter environment.storage_directory angezeigt) — die Datei wird nur einmal beim Start gelesen, starte Live also danach neu.

  • config.json geändert, aber nichts passiert: Die Konfiguration wird nur gelesen, wenn die Extension startet. Starte Live (oder den Dev-Extension-Host) erneut.

Lizenz

MIT für den Code in diesem Repository. Die Tarballs in vendor/ (Ableton Extensions SDK & CLI) sind Eigentum von Ableton und fallen unter eine eigenen Lizenz (siehe sdk/LICENSE.md in der SDK-Distribution).

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    MCP 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
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that exposes Ableton Live control (session state, transport, tracks, devices, clips, MIDI note editing) as tools for LLM agents, enabling natural language manipulation of a Live session.
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Local MCP server for inspecting and controlling Ableton Live through a local HTTP bridge. Enables LLMs to perform production workflows like MIDI import, track editing, mixing, mastering, and export.
    59
    10 npm
    MIT