Skip to main content
Glama
ulm0
by ulm0

Ableton Live MCP

Ableton Live 12用のMCPサーバーで、公式の Ableton Extensions SDK上に構築されています。このMCPサーバーはLiveの内部で 拡張機能として動作します。ブリッジプロセスもMIDIリモートスクリプトも不要です。あらゆるMCPクライアント(Claude Code、 Claude Desktop、Cursorなど)がストリーミング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以降(Extensionsサポート)

  • Node.js >= 24.14(ビルドのみ)

Related MCP server: ableton-agent-mcp

インストール

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

その後、.ablxファイルをLiveのSettings → Extensionsにドラッグします。MCPエンドポイントは http://127.0.0.1:8722/mcpでLiveとともに起動します(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 9 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オブジェクト(トラック、クリップ、デバイス、パラメータなど)は、リストツール(song_get、track_get、device_getなど)で見つかる安定したオブジェクトIDで指定されます。

  • IDはオブジェクトが削除または移動されたり、別のLive Setが読み込まれたりするまで有効です。古いIDはクライアントに再リストを促すエラーを返します。

  • すべての時刻・位置は拍単位です。色は#RRGGBB、MIDIピッチは0~127です。

  • 複数値の書き込み(parameter_set)はLiveで1つのアンドゥステップにまとめられます。

ツール

Song

ツール

説明

song_get

Live Setの状態: テンポ、スケール、グリッド、トラック、リターン/メイントラック、シーン、キューポイント、環境情報。他のすべての場所で使われるオブジェクトIDを返します。includeで指定したセクションだけを取得します。

song_set

ソングのプロパティ(テンポ)を設定します。

トラック

ツール

説明

track_get

トラックの詳細: クリップスロット+クリップ、テイクレーン、アレンジメントクリップ、デバイス、ミキサー(値付き)。track_id、track_index、track_nameのいずれかで指定します。includeでセクションを選択します。

track_set

名前/ミュート/ソロ/アームを設定します。

track_create

新しいオーディオまたはMIDIトラックを作成します。

track_delete

トラックを削除します。

track_duplicate

トラックを複製します。

track_clear_clips_in_range

ビート範囲内のアレンジメントクリップを削除/切り詰めます。

take_lane_create

トラックにテイクレーンを追加します。

take_lane_set

テイクレーンの名前を変更します。

シーンとキューポイント

ツール

説明

scene_create/scene_set/scene_delete/scene_duplicate

シーンを管理します。

cue_point_create/cue_point_set/cue_point_delete

アレンジメントロケーターを管理します。

クリップ

ツール

説明

clip_create

セッションスロット(IDまたはトラック+scene_index)、アレンジメントトラック、またはテイクレーンにMIDIまたはオーディオクリップを作成します。MIDIクリップはインラインのnotesを受け取ります。name/colorは作成時に適用されます。オーディオファイルはプロジェクトに自動的にインポートされます。

clip_get

完全なクリップ詳細(オーディオ: ワープ設定+マーカー。MIDI: ノート数)。

clip_set

名前、色、ミュート、ループ、ワープ、ワープモードを設定します。

clip_delete

セッションまたはアレンジメントクリップを削除します。

midi_clip_get_notes

すべてのMIDIノートを読み取ります。

midi_clip_set_notes

ノートを書き込みます: replace(すべて置き換え)またはmerge(上にレイヤリング)。

midi_clip_edit_notes

サーバーサイドのノート変換 — トランスポーズ、時間シフト、ベロシティスケール/オフセット、クォンタイズなどは読み取り/変更/書き込みの往復なしで行えます。

デバイスとラック

ツール

説明

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ノートを設定します。

simpler_replace_sample

Simplerのサンプルを交換します。

パラメータとミキシング

ツール

説明

parameter_get

デバイス/ミキサーパラメータの値を読み取ります(バッチ)。

parameter_set

パラメータの値を書き込みます(バッチ。1つのアンドゥステップ)。

mixer_get

トラックまたはチェーンの音量/パン/センドと、パラメータIDと単位のヒントを取得します。

mixer_set

トラックまたはチェーンの音量/パン/センドを1回の呼び出しで設定します(1つのアンドゥステップ)。

ファイルとレンダリング

ツール

説明

import_file

ファイルをLiveプロジェクトにコピーします。

render_track_audio

オーディオトラックのプリFX音声をWAVにレンダリングします。

UIとコマンド

ツール

説明

show_dialog

Live内にモーダルHTMLダイアログを表示します(ユーザーに確認したり、レポートを表示したりするため)。

execute_command

ableton-live-mcp.statusなどのExtension Hostコマンドを呼び出します。

スキル

skills/ableton-live/SKILL.mdはインストール可能なエージェントスキル であり、MCPクライアントにこれらのツールをうまく使う方法(ID発見フロー、拍と秒の扱い、 ノート編集パターン、デバイスのワークフロー)を教えます。

Claude Codeにインストールするには:

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

接続したアシスタントに依頼できる典型的な作業:

  • 「Drum Rack付きの新しいトラックに、4小節のハウス・ドラムパターンを作成して」

  • 「DrumsトラックのすべてのクリップをComplex Proモードでワープして」

  • 「ボーカルバス以外のすべてのトラックを3dB下げて」

  • 「曲の骨組みを作って: イントロ、Aメロ、サビのシーンとロケーターを」

  • 「Simplerのサンプルを時は、/path/to/kick.wavに交換してC1に割り当てて」

制限事項

  • 拡張機能(つまり MCP エンドポイント)は、Live が起動している間だけ動作します。

  • 挿入できるのは Live 内蔵デバイスのみです。サードパーティ製プラグインは SDK からは読み込めません。

  • トランスポート操作(再生/停止/録音)やクリップの起動はありません — Extensions API v1.0.0 はこれらを公開していません。ブラウザへのアクセスやパラメータ・オートメーションカーブも同様です。

  • show_dialog は、ユーザーが Live でダイアログを閉じるまでブロックします。

テスト

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ノート、ワペング、ドラムック、レング、...)を検証して、作成したものをすべて削除します。

Extession Host の癖(知っておく価値あり)

このプロジェクトが対応しているのは、ベータ版 Extension Host の2つの癖について説明します:

  1. Bare VM コンテキスト。 拡張機能は global や Web のグローバル(Request、Response、ReadableStream、fetch、EventTarget、...)を持たない V8 コンテキストで評価されます。これらは MCP SDK がロード時に必要とするものです。build.ts は、それらをメインの Node コンテキストから取り込んだバナーを注入します(コアモジュールの関数は共有されているので、それらの Function コンストラクタはそこで評価されます)。詳細は build.ts を参照してください。

  2. bigint 数値。 ホストは、SDK が number として扱う一部の値(クリップの色、ノートのピッチなど)に対して bigint を返します。src/serialize.ts は、算出/JSON の前に num() で正規化しています。

  3. 非同期の書込み。 SDK のプロパティ・セッター(ノート、名前、値など)は、Live が変更を適用する前に戻ります。ReadableStream direktly 数十 ms 以内に読み取ると、変更前の状態が返ることがあります。が、書き込み後の読み取りをするテストは、しばらくリトライする必要があります(test/live-smoke.mjs の eventually() を参照)。

また、開発用 Extension Host がクラッシュすると、Live が次のコントロール・チャンネルのハンドシェイク("bring-up timed out")を拒否することがあります — During that time, restart Live and run npm start again.

トラブルシューティング

  • エンドポイントが応答しない: curl http://127.0.0.1:8722/health を確認します。Live 内の任意のトラックを右クリックすると、"Ableton Live MCP: Status" コンテキストメニュー項目で、拡張機能が実際にバインドしたエンドポイントが表示されます。

  • ポートが使用中: 設定したポートを別のプロセスが使用している場合、サーバーは ExtensionHost.txt に失敗を記録して起動しません。拡張機能の config.json 内の port を変更してください(パスは song_get の environment.storage_directory に表示されます)。このファイルは起動時に一度だけ読み取られるので、その後 Live を再起動してください。

  • config.json を変更したのに反映されない: 設定は拡張機能の起動時にのみ読み取られます。Live(または開発用 Extension Host)を再起動してください。

ライセンス

The code in this repository is MIT. vendor/ 内のターボール(Ableton Extensions SDK & CLI)は Ableton のものであり、その独自のライセンスが適用されます(SDK ディストリビューション内の sdk/LICENSE.md を参照してください)。

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