Skip to main content
Glama
ulm0
by ulm0

Ableton Live MCP

Un servidor MCP para Ableton Live 12, construido sobre el Ableton Extensions SDK oficial. El servidor MCP se ejecuta dentro de Live como una extensión: sin proceso puente, sin scripts MIDI de control remoto. Cualquier cliente MCP (Claude Code, Claude Desktop, Cursor, ...) se conecta a través de streamable HTTP y tiene el control programático total del Live Set: pistas, clips, notas MIDI, dispositivos, parámetros, mezclador, escenas, warp, renderizado y más.

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

Requisitos

  • Ableton Live 12.4.5 o superior (compatible con Extensiones)

  • Node.js >= 24.14 (solo de compilación)

Related MCP server: ableton-mind

Instalación

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

Después arrastra el archivo .ablx hasta Configuración → Extensiones en Live. El endpoint MCP se inicia con Live en http://127.0.0.1:8722/mcp (GET /health para una comprobación rápida).

Modo desarrollador

Activa Configuración → Extensiones → Modo de desarrollador en Live y a continuación:

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

El .env debe apuntar a tu instalación de Live, por ejemplo: EXTENSION_HOST_PATH=/Applications/Ableton Live 12 Beta.app.

Conectar un cliente

Claude Code:

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

Claude Desktop (o cualquier cliente que solo sea stdio) mediante mcp-remote:

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

Configuración

El puerto se guarda en config.json dentro del directorio de almacenamiento de la extensión (se crea en la primera ejecución; song_get notifica la ruta en environment.storage_directory). Por defecto:

{ "port": 8722 }

Cómo funciona

  • Cada objeto de Live (pista, clip, groove, paramere, ...) se direcciona por un id de objeto estable descubierto mediante las herramientas de listado (song_get, track_id, device_get, ...).

  • Los ids siguen siendo válidos hasta que el objeto se elimina o se mueve, o hasta que se carga otro conjunto, no Live Set. Los ids obsoletos devuelven un error que indica al cliente que vuelva a listar.

  • Todos los tiempos/posiciones están en beats; versiones de colores son #RRGGBB; el diagrama MIDI es 0-127.

  • Los escrituras con múltiples valores (parameter_set) se agrupan en un único paso de Deshacer en Live.

Herramientas

Canción

Herramienta

Descripción

song_get

Estado de ejecución Set: tempo, escala, cuadrícula, pistas, pistas de retorno y máster, escenas, localizadores, información del entorno. El punto de entrada: retorna los ids de objeto de objetos que se usan en el resto de lugares. include trae solo las secciones seleccionadas.

song_set

Define propiedades de la canción (tempo).

Pistas

Herramienta

Descripción

track_get

Detalle de la pista: ranuras y clips, carriles de tomas, compases del arreglo, dispositivos, encuadre con valores. Se hace referencia a la pista por track_id, track_index o track_name; include selecciona secciones.

track_set

Nombre / silencio / solo / armado.

track_create

Crea una pista de audio o MIDI nueva.

track_delete

Eliminar una pista.

track_duplicate

Duplicate tool.

track_clear_clips_entering_range

Eliminar o recortar clips del arreglo en un rango de beats.

take_lane_create

Añadir un carril de tomas a una pista.

take_lane_set

Renombrar un carril de tomas.

Escenas y localizadores

Herramienta

Descripción

scene_create / scene_set / scene_delete / scene_duplicate

Gestion de escenas.

cue_point_create / cue_point_set / cue_Point_delete

Gestion identificadores.

Clips

Herramienta

Descripción

clip_create

Cocre clips MIDI o de audio un hueco,..., en un slot de sesión (por id o pista + scene_index), en el creador de arreglos o en un carril de tomas. Los clips MIDI admiten notes in line; name/color se completan alcierre. Los archivos de audio se importan solos al proyecto.

clip_get

Detalles completos del clip(frameo: / warp + marcadores; MIDI: nº de notas).

clip_set

Nombre, color, silencio, loop, warp y modo de warp.

clip_delete

Elimina clips o removals from the arrangement set.

midi_clip_get_notes

Lee todas las notas MIDI.

midi_clip_set_notes

Escribe notas: replace para reemplazar todasrás o merge para fusionarlas (superponiendo).

midid_clip_edit_notes

Transformaciones de notas del lado del servidor: transponer, desplazar en el tiempo, escala/offset de la velocidad, cuantizar, eliminar..., con seleccion por pitch/vondtop. Simultáneamente no se puede hacer todo (read-modify-write).

Dispositivos y racks

Herramienta

Descripción

device_get

Detalles del dispositivo: parámetros con rangos/valores (parameter_filter substring, include_values, include_value_items), recortar cadenas (include_chain_devices incorpora los pad devices), "Simpler". sample.

device_insert

Inserta de un dispositivo integrado de Live en una pista o una negra no.

device_delete/ star_duplicate

Eliminación o duplicación.

chain_get

Detalle de la cadena de rango: dispositivos + mensajero de cadena.

press_insert_chain

ADD o cadena a un rack.

drum_chain_set

Define la nota MIDI del pad de un Drum Rack.

sampler_replace_sample

Intercambia el sample de un Simpler.

Parámetros y mezclas

Herramienta

Descripción

parameter_get

Lee valores de parámetros de dispositivo/mixer, en lote.

parameter_set

Escribe valores de parámetros (por lotes, one single undo step).

mixer_get

Volumen / paneo / envíos de una pista o cadena, con ids de parametro y pistas.

mixer_set

ABA el volumen / paneo / envíos de una pista en una sola llamada (un solo paso de deshacer).

Archivos y renderizado

Herramienta

Descripción

import_file

Copiar un archivo para el interior del proyecto.

render_track_audio

Renderiza el audio PRE-FX de un track al arreglo, en WAV.

Interfaz y comandos

Herramienta

Descripción

show_dialog

Muestra una caja de diálogo HTML modal dentro de Live (para tirar al usuario, mostrar infos).

execute_command

Ejecuta Comandos de Extensión Host, p. ej. ableton-live-mcp.status.

Habilidades

skills/ableton-live/SKILL.md es un skill de agente instalable que enseña a un cliente MCP a usar bien estas herramientas (flujo de descubrimiento de ids, beats frente a segundos, patrones de edición de notas, workflows de dispositivos). Instálalo en Claude Code con:

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

Cosas típicas que le puedes pedir a un asistente conectado, por ejemplo:

  • "Crea un patrón house de 4 compases en una nueva pista MIDI con un Drum Rack."

  • "Aplica warp a todos los clips de la pista Drums en modo Complex Pro."

  • "Baja 3 dB a todas las pistas que no sean un bus vocal."

  • "Construye un esqueleto de canción: intro, estrofas y estribillos, un localizador."

  • "Reemplaza la muestra del Simpler por /path to kick.wav y mañanalo a C1."

Limitaciones

  • La extensión (y por tanto el endpoint MCP) solo se ejecuta mientras Live está abierto.

  • Solo se pueden insertar dispositivos integrados de Live; el SDK no puede cargar plugins de terceros.

  • No hay control de transporte (play/stop/record) ni lanzamiento de clips — la Extensions API v1.0.0 no los expone. Tampoco expone el acceso al navegador ni las curvas de automatización de parámetros.

  • show_dialog bloquea la ejecución hasta que el usuario cierra el diálogo en Live.

Pruebas

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

La prueba de humo en vivo crea sus propias pistas/clips/dispositivos, verifica todas las familias de herramientas (notas MIDI, warping, drum racks, renderizado, ...) y elimina todo lo que ha creado.

Particularidades del Extension Host (conviene saberlas)

Dos comportamientos de la versión beta del Extension Host que este proyecto sortea:

  1. Contexto de VM mínimo. Las extensiones se evalúan en un contexto V8 sin global ni con las globales web (Request, Response, ReadableStream, fetch, EventTarget, ...), que el SDK de MCP necesita en el momento de la carga. build.ts inyecta un banner que los introduce desde el contexto principal de Node (las funciones de módulos core son compartidas, así que su constructor Function se evalúa allí). Consulta build.ts para más detalles.

  2. Valores bigint. El host devuelve bigint para algunos valores que el SDK tipifica como number (colores de clips, alturas de las notas, ...). src/serialize.ts normaliza con num() antes de hacer aritmética o pasar a JSON.

  3. Escrituras asíncronas. Los setters de propiedades del SDK (notas, nombres, valores) devuelven el control antes de que Live haya aplicado el cambio; una lectura en unas pocas decenas de milisegundos puede devolver el estado anterior. Los agentes apenas lo notan, pero las pruebas de lectura tras una escritura deben reintentar brevemente (ver eventually() en test/live-smoke.mjs).

También: si el Extension Host de desarrollo se cae, Live puede rechazar el siguiente handshake del canal de control ("bring-up timed out") — reinicia Live y ejecuta npm start de nuevo.

Solución de problemas

  • El endpoint no responde: ejecuta curl http://127.0.0.1:8722/health. Haz clic derecho en cualquier pista de Live — la acción de menú contextual "Ableton Live MCP: Status" muestra el endpoint al que realmente se vinculó la extensión.

  • El puerto ya está en uso: si otro proceso ocupa el puerto configurado, el servidor registra el fallo en ExtensionHost.txt y no se inicia. Cambia port en el config.json de la extensión (la ruta la muestra song_get en environment.storage_directory) — el archivo se lee una sola vez al inicio, así que reinicia Live después.

  • Cambiaste config.json y no ha pasado nada: la configuración solo se lee al arrancar la extensión. Reinicia Live (o el Extension Host de desarrollo).

Licencia

MIT para el código de este repositorio. Los tarballs de vendor/ (Ableton Plugins SDK & CLI) pertenecen a Ableton y están cubiertos por su propia licencia (ver sdk/LICENSE.md en la distribución del SDK).

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