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-mind

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

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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

View all related MCP servers

Related MCP Connectors

  • MCP server for Producer/Riffusion AI music generation

  • Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.

  • MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ulm0/ableton-live-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server