MCP · ABLETON LIVE · ИИ-АГЕНТ
Ableton MCP: как дать ИИ-агенту руль от Live
MCP-сервер отдаёт агенту прямой доступ к Live API — и тот собирает треки, клипы, ноты и цепочки эффектов обычным текстом. Разбираю, из чего это склеено, что реально работает и где начинает скрипеть.
Как поставить у себя
Весь код — в одном репозитории: github.com/marchitecht/ableton-mcp. Нужно положить Remote Script в Ableton и подключить MCP-сервер к своему ИИ-клиенту (Claude Desktop или Cursor). По шагам:
- Что нужно заранее: Ableton Live 10 или новее, Python 3.8+ и пакет-менеджер uv (на macOS —
brew install uv). - Склонировать репозиторий:
git clone https://github.com/marchitecht/ableton-mcp cd ableton-mcp - Поставить Remote Script в Ableton: создать папку
AbletonMCPв каталоге MIDI Remote Scripts и скопировать тудаAbletonMCP_Remote_Script/__init__.pyиз репозитория.# macOS — User Remote Scripts ~/Library/Preferences/Ableton/Live 12/User Remote Scripts/AbletonMCP/__init__.py - Подключить MCP-сервер к ИИ-клиенту. Claude Desktop → Settings → Developer →
claude_desktop_config.json:
В Cursor — Settings → MCP → добавить команду{ "mcpServers": { "AbletonMCP": { "command": "uvx", "args": ["ableton-mcp"] } } }uvx ableton-mcp. - Открыть Ableton → Settings → Link, Tempo & MIDI. В блоке MIDI выбрать в столбце Control Surface значение AbletonMCP, а Input и Output оставить None — как на скрине ниже.
Готово. Теперь ИИ-клиент видит Ableton — можно просить агента собрать трек прямо из чата. Дальше — как это устроено внутри.
Что это вообще такое
MCP (Model Context Protocol) — это стандартный способ показать модели набор инструментов: сервер объявляет функции, агент их вызывает. Ableton MCP — это такой сервер вокруг Ableton Live. С одной стороны у него JSON-инструменты для агента, с другой — мост в саму DAW через её родной механизм расширений (Remote Script) и Live Object Model.
Итог простой: я пишу «сделай хаус-грув 124 BPM, добавь трек с баса и накинь сайдчейн от кика» — а агент дёргает нужные вызовы и это появляется в проекте, а не в чате.
Как это устроено
Ключевой момент — Live не принимает команды по HTTP. Внутри неё живёт Python-Remote Script, который слушает локальный сокет и разговаривает с движком через Live API. MCP-сервер — это прослойка-переводчик между агентом и этим сокетом.
Что агент реально умеет
Набор инструментов покрывает почти весь рутинный сетап сессии — то, на что руками уходят минуты кликов:
- Скелет проекта — создать MIDI/аудио-трек, задать темп, переименовать, удалить.
- Клипы и ноты — создать клип нужной длины и залить в него ноты (питч, старт, длительность, велосити).
- Звук из браузера — загрузить инструмент, эффект или целый драм-кит прямо из библиотеки Live.
- Устройства — читать и крутить параметры девайсов, вешать эффекты на мастер.
- Роутинг — поднять сайдчейн: назначить источник и включить компрессию от кика.
- Session ↔ Arrangement — запускать клипы, собирать аранжировку, переключать вид.
Суть. Агент хорош не в «напиши мне хит», а в лесах вокруг музыки: развернуть болванку трека, разложить грув по сетке, накидать роутинг — чтобы ты сел уже на готовый холст.
Как это выглядит в деле
Один текстовый запрос разворачивается в цепочку вызовов инструментов. Грубо — вот что происходит под капотом «сделай хаус-заготовку»:
# то, что превращается в вызовы MCP / what turns into MCP calls
set_tempo(124)
create_midi_track() # Drums
load_drum_kit("909 Core Kit")
add_notes_to_clip(track="Drums", notes=[
{pitch:36, start:0.0, dur:0.25}, # kick / бочка
{pitch:36, start:1.0, dur:0.25},
])
create_midi_track() # Bass
set_sidechain_source(track="Bass", src="Drums")
Я вижу результат сразу в Live, слушаю, и дальше уже правлю руками или следующим запросом — «кик пожёстче, бас на две октавы ниже».
Где начинает скрипеть
- Это не риалтайм-исполнитель. Мост через сокет — про правку проекта, а не про игру вживую в такт; на каждый вызов есть задержка.
- Undo — на тебе. Агент лихо создаёт объекты; откатывать пачку изменений проще через историю Live, чем просить «верни как было».
- Дырки в Live API. Не всё в Live доступно через LOM — часть автоматизации и UI-действий модель просто не достаёт.
- Имена и адресация. Промахи идут оттуда, что агент путает индексы и имена треков; чем чётче именуешь, тем меньше «не туда положил ноту».
Зачем мне это
Тот же паттерн, что и в остальных моих заметках: агент + доменный API + понятные инструменты. Ableton здесь — просто ещё одна «предметная область», куда можно дотянуться через MCP, как Temporal дотягивается до маршрутов, а браузерный агент — до веба. Меняется API — не меняется подход.