Skip to main content
Glama
ulm0
by ulm0

Ableton Live MCP

MCP-сервер для Ableton Live 12, построенный на официальном Ableton Extensions SDK. MCP-сервер запускается внутри Live как расширение — без процесса-моста и без MIDI Remote Scripts. Любой MCP-клиент (Claude Code, Claude Desktop, Cursor, ...) подключается по streamable HTTP и получает полный программный контроль над Live Set: треки, клипы, MIDI-ноты, устройства, параметры, микшер, сцены, варпинг, рендеринг и не только.

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

Требования

  • Ableton Live 12.4.5 или новее (поддержка расширений)

  • Node.js >= 24.14 (только для сборки)

Related MCP server: ableton-agent-mcp

Установка

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

Затем перетащите .ablx-файл на пункт Settings → Extensions в Live. MCP-эндпоинт запускается вместе с Live по адресу http://127.0.0.1:8722/mcp (GET /health — быстрая проверка).

Режим разработчика

Включите в Live Settings → Extensions → Developer Mode, затем:

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

.env должен указывать на вашу установку Live, например:
EXTENSION_HOST_PATH=/Applications/Ableton Live 12 Beta.app.

Подключение клиента

Claude Code:

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

Claude Desktop (или любой клиент, поддерживающий только stdio) через mcp-remote:

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

Конфигурация

Порт хранится в config.json в каталоге хранилища расширения (папка создаётся при первом запуске; путь сообщается методом song_get в поле environment.storage_directory). По умолчанию:

{ "port": 8722 }

Как это работает

  • Каждый объект Live (трек, клип, устройство, параметр, ...) адресуется стабильным object id, который получается из инструментов листинга (song_get, track_get, device_get, ...).

  • Идентификаторы остаются валидными, пока объект не удалён или перемещён, либо пока не загружен другой Live Set. Устаревшие id возвращают ошибку, предлагающую клиенту повторить листинг.

  • Все временные позиции задаются в долях; цвета — #RRGGBB; MIDI notes — 0–127.

  • Записи нескольких значений (parameter_set) группируются в один шаг отмены внутри Live.

Инструменты

Композиция

Инструмент

Описание

song_get

Состояние Live Set: темп, тональность (scale), сетка, треки, return/main каналы, сцены, cue точки, информация об окружении. Это точка входа — возвращает id объектов, используемых во всех остальных инструментах. Параметр include запрашивает только выбранные разделы.

song_set

Устанавливает свойства композиции (темп).

Треки

Инструмент

Описание

track_get

Детали трека: клип-слоты и клипы, take lanes, клипы аранжировки, устройства, микшер со значениями. Адрес через track_id, track_index или track_name; include выбирает разделы.

track_set

Имя / mute / solo / arm.

track_create

Создаёт новый аудио- или MIDI-трек.

track_delete

Удалить трек.

track_duplicate

Дублировать трек.

track_clear_clips_in_range

Удаляет/обрезает клипы аранжировки в диапазоне долей.

take_lane_create

Добавляет take lane в трек.

take_lane_set

Переименовывает take lane.

Сцены и cue-точки

Инструмент

Описание

scene_create / scene_set / scene_delete / scene_duplicate

Управление сценами.

cue_point_create / cue_point_set / cue_point_delete

Управление локаторами аранжировки.

Клипы

Инструмент

Описание

clip_create

Создаёт MIDI- или аудио-клипы в слоте сессии (по id или track + scene_index), в треке аранжировки или take lane. MIDI-клипы принимают ноты напрямую в notes; name/color применяются при создании. Аудиофайлы импортируются в проект автоматически.

clip_get

Полная детализация клипа (аудио: настройки варпа и маркеры; MIDI: количество нот).

clip_set

Имя, цвет, mute, looping, warping, режим warp.

clip_delete

Удаляет клип сессии или аранжировки.

midi_clip_get_notes

Читает все MIDI-ноты.

midi_clip_set_notes

Записывает ноты: replace всё или fixed merge (поверх текущих).

midi_clip_edit_notes

Основные преобразования нот на сервере: транспозиция, сдвиг во времени, масштабирование/сдвиг velocity, квантование, удаление — с выбором по позиции высоты/нахождения. Без цикла «чтение-изменение-запись».

Устройства и рэки

Инструмент

Описание

device_get

Данные об устройстве: параметры с диапазонами/вариантами значений (parameter_filter, include_values, include_value_items), цепи раков (include_chain_devices — включает устройства цепей), семпл Simpler.

device_insert

Вставляет встроенное устройство Live в трек или цепь рэка.

device_delete / device_duplicate

Удаляет или копирует устройства.

chain_get

Детали цепи рэка: устройства и микшер цепочки.

rack_insert_chain

Добавляет цепь в рэк.

drum_chain_set

Устанавливает MIDI-ноту для пэда Drum Rack.

simpler_replace_sample

Заменяет сэмпл в Simpler.

Параметры и микширование

Инструмент

Описание

parameter_get

Читает значения параметров устройства/микшера (пакетно).

parameter_set

Записывает значения параметров (пакетно, одним шагом отмены).

mixer_get

Громкость/панорамы/отправки звуковой дорожки или цепочки с id параметров и подсказками по единицам.

mixer_set

Устанавливает громкость/панорамы/отправки трека или цепочки одним вызовом (один шаг отмены).

Файлы и рендеринг

Инструмент

Описание

import_file

Копирует файл в проект Live.

render_track_audio

Рендерит pre-FX-аудио трека в WAV.

Интерфейс и команды

Инструмент

Описание

show_dialog

Показывает модальный HTML-диалог внутри Live (задать вопрос пользователю, показать отчёты).

execute_command

Вызывает команды Extension Host, например ableton-live-mcp.status.

Навыки

skills/ableton-live/SKILL.md — это устанавливаемый навык агента, который обучает MCP-клиента правильному использованию этих инструментов: поиск id, доли против секунд, паттерны редактирования ноТ, рабочие процессы с устройствами. Установите его для Claude Code:

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

Примеры типовых задач, которые можно попросить у подключённого ассистента:

  • «Создай 4-тактовый барабанный паттерн в стиле house на новом MIDI-треке с Drum Rack»

  • «Заваливардируй все клипы на дорожке Drums в режиме Complex Pro»

  • «Опусти на 3 дБ все треки, кроме вокальной шины»

  • «Собери каркас песни: intro, verse, chorus сцены с локаторами»

  • «Замени сэмпл в Simpler на /path/to/kick.wav и назначь его на C1»

Ограничения

  • Расширение (а значит, и MCP endpoint) работает, только пока открыт Live.

  • Вставить можно только встроенные устройства Live; сторонние плагины SDK загрузить не может.

  • Нет управления транспортом (play/stop/record) и запуска клипов — Extensions API v1.0.0 их не предоставляет. То же касается доступа к браузеру и кривых автоматизации параметров.

  • show_dialog блокируется до тех пор, пока пользователь не закроет диалог в Live.

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

Смоук-тест Live создаёт собственные треки/клипы/устройства, проверяет все семейства инструментов (MIDI-ноты, варпинг, драм-рэки, рендеринг, ...) и удаляет всё, что создал.

Особенности Extension Host (полезно знать)

Две особенности бета-версии Extension Host, которые обходятся в этом проекте:

  1. Голый контекст VM. Расширения выполняются в контексте V8 без global и веб-глобалов (Request, Response, ReadableStream, fetch, EventTarget, ...), которые нужны MCP SDK при загрузке. build.ts вставляет баннер, который подтягивает их из основного контекста Node (функции core-модуля общие, поэтому их конструктор Function выполняется там). Подробности — в build.ts.

  2. Числовые значения bigint. Хост возвращает bigint для некоторых значений, которые SDK типизирует как number (цвета клипов, высота бот, ...). src/serialize.ts нормализует их с помощью num() перед арифметическими операциями/JSON.

  3. Асинхронные записи. Сеттеры свойств SDK (ноты, имена, значения) возвращают управление до того, как Live применит данные; чтение в течение десятков миллисекунд может вернуть прошлое. Агенты редко замечают это, но тестам «запись‑затем‑чтение» нужно повторять попытки (см. eventually() в test/live-smoke.mjs).

Также: если dev Extension Host упадёт, Live может отказать в следующем рукопожатии на канале управления ("bring-up timed out") — перезапустите Live и снова запустите npm start.

Troubleshooting

  • Endpoint не отвечает: проверьте curl http://127.0.0.1:8722/health. Щёлкните правой кнопкой мыши на любом треке в Live — действие контекстного меню "Ableton Live MCP: Status" показывает endpoint, к которому на самом деле привязалось расширение.

  • Порт уже занят: если другой процесс использует заданный порт, сервер записывает ошибку в ExtensionHost.txt и не запускается. Измените port в config.json расширения (путь отображён song_get в environment.storage_directory) — файл читается только один раз при запуске, поэтому после изменения перезапустите Live.

  • Изменил config.json, но ничего не произошло: конфиг читается только при запуске расширения. Перезапустите Live (или dev Extension Host).

Лицензия

MIT для кода в этом репозитории. Tarball-архивы vendor/ (Ableton Extensions SDK & CLI) являются собственностью Ableton и регулируются их собственной лицензией (см. sdk/LICENSE.md в дистрибутиве SDK).

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