Skip to main content
Glama

ablenton-mcp

简体中文 | English

通过支持 MCP 的 AI 助手控制 Ableton Live:编写 MIDI、加载乐器和效果器、 调整设备参数,以及在 Arrangement View 中构建编曲。

本项目基于 Siddharth Ahuja 创建的 ahujasid/ableton-mcp,是保留 MIT 许可证的独立衍生版本。新增本机连接限制、修复命令超时,并提供源码安装指南。 本项目与 Ableton 官方无隶属关系。

验证状态: 连接层回归测试已通过;尚未在运行中的 Ableton Live 中完成端到端验证。 本项目没有独立发布到 PyPI,请从本仓库源码安装。

安装详解(英文) · 排错指南(英文) · 变更记录(英文) · 贡献指南(英文) · MIT 许可证

功能

领域

支持的操作

工程读取

查看轨道、片段、设备以及工程快照

轨道

创建 MIDI / 音频轨道,修改轨道名称

MIDI

创建片段,读取、清空、添加音符

音频

将已有的本地音频文件导入 Session 片段槽位

音色与效果

浏览并加载乐器和效果器,读取和修改设备参数

播放控制

设置速度,开始/停止播放,触发/停止片段

编曲

查看编曲片段,将 Session 片段复制到时间线,重命名片段,添加定位标记

目前没有提供音频渲染导出或音频听辨工具。可用音色取决于你的 Live 版本和已安装音色包。

Related MCP server: ableton-mcp

工作原理

MCP 客户端(Codex / Claude / Cursor)
                  │ 标准输入/输出(stdio)
                  ▼
本机 Python MCP 服务
                  │ TCP · 127.0.0.1:9877
                  ▼
Live 内运行的 AbletonMCP Remote Script
                  │ Live API
                  ▼
当前 Live 工程

客户端、MCP 服务与 Live 应运行在同一台电脑上。TCP 协议没有身份验证,因此本版本 只监听本机回环地址;同一电脑上的其他进程仍然可以连接。仓库继承的 Docker / Smithery 文件不是推荐安装方式,因为容器的回环地址与宿主机相互独立。

本版本修复了什么

  • 限制网络访问: 两份 Remote Script 均由 0.0.0.0 改为监听 127.0.0.1。

  • 修复超时覆盖: 音频导入保留 65 秒超时;已列出的修改命令使用 15 秒,其余命令使用 10 秒。 这些是单次套接字操作的超时,不是整个请求的总时限。

  • 增加回归测试: 检查分块响应的超时设置、本机地址绑定,以及两份脚本的一致性。

  • 完善文档: 明确 Python 3.10+ 要求、Live 11/12 编曲功能要求,并提供关闭数据收集的配置。

快速安装

1. 安装依赖与本项目

需要 Git、uv、 Python 3.10+;建议使用 Ableton Live 11 或 12。 Live 10.1.13 起支持 User Library 下的控制脚本,但编曲复制调用 Live 11/12 API;旧版本未经验证。

通过本仓库 GitHub 页面的 Code → HTTPS 地址克隆,进入克隆后的目录。

macOS:

uv venv --python 3.12
uv pip install --python .venv/bin/python -e .

Windows PowerShell:

uv venv --python 3.12
uv pip install --python .venv/Scripts/python.exe -e .

显式选择 Python 3.12,避免继承的 .python-version 文件自动选择 3.13。 不要直接运行 uvx ableton-mcp 来安装本版本:该命令获取的是上游 PyPI 包,不包含这里的修复。 仓库名 ablenton-mcp 与继承的 Python 包名、命令名 ableton-mcp 不同,这是有意保留的兼容设置。

2. 安装 Live 控制脚本

macOS:

.venv/bin/ableton-mcp-install-script --list-targets
.venv/bin/ableton-mcp-install-script

Windows 使用 .venv/Scripts/ableton-mcp-install-script.exe 运行同样的参数。 安装器会将本仓库附带的脚本复制到检测出的 User Library;已有且内容不同的脚本会备份为 __init__.py.bak。如果音色库在自定义位置,可指定 Remote Scripts 父目录:

.venv/bin/ableton-mcp-install-script --target "/path/to/User Library/Remote Scripts"

在 Ableton Live 中启用脚本

安装脚本后,先保存当前工作,完全退出 Ableton Live(macOS 按 ⌘Q),然后重新打开。 Live 需要重启才能识别新安装的控制脚本。

  1. 打开 Settings/Preferences → Link, Tempo & MIDI(Live 12.4 中名称为 Tempo & MIDI)。

  2. 在 Control Surface 中选择 AbletonMCP,将 Input 和 Output 均设为 None。

  3. 打开一个空白 Set。完成下方的 MCP 客户端配置后,向助手回复 “ready”, 让助手检查连接并开始创作音乐。

如果菜单中没有 AbletonMCP,请确认脚本位于 User Library/Remote Scripts/AbletonMCP/__init__.py,然后完全退出并重新打开 Live。 仅关闭设置窗口或关闭 Set 不等于重启 Live。

3. 配置客户端

始终使用虚拟环境可执行文件的绝对路径,并替换以下示例路径。一次只运行一个 MCP 服务实例。

Codex

将以下条目合并到 Codex MCP 配置(例如 ~/.codex/config.toml),保留已有配置:

[mcp_servers.ableton_local]
command = "/absolute/path/to/ablenton-mcp/.venv/bin/ableton-mcp"
args = []

[mcp_servers.ableton_local.env]
ABLETON_HOST = "127.0.0.1"
ABLETON_MCP_DISABLE_TELEMETRY = "true"
ABLETON_MCP_DISABLE_DATASET = "true"

Claude Desktop / Cursor

在支持 mcpServers 的客户端配置中添加:

{
  "mcpServers": {
    "AbletonMCPLocal": {
      "command": "/absolute/path/to/ablenton-mcp/.venv/bin/ableton-mcp",
      "args": [],
      "env": {
        "ABLETON_HOST": "127.0.0.1",
        "ABLETON_MCP_DISABLE_TELEMETRY": "true",
        "ABLETON_MCP_DISABLE_DATASET": "true"
      }
    }
  }
}

Claude Desktop 可在 Settings → Developer → Edit Config 中编辑配置;Cursor 使用其 MCP 设置。Windows 路径应指向 .venv/Scripts/ableton-mcp.exe,JSON 中可使用正斜杠。 修改后重启或重新加载客户端;图形界面应用未必继承终端环境变量,因此请将变量保留在客户端配置里。

4. 首次验证

先保存当前工程,在空白测试工程中尝试:

读取当前 Session 信息,并报告 Remote Script 的版本和能力列表。

然后:

创建名为 Bass 的 MIDI 轨道,速度设为 110 BPM,在第一个 Session 槽位创建四小节 C 小调贝斯片段。浏览已安装的音色,加载一个可用贝斯乐器,并播放片段。

工具索引从 0 开始;长度和编曲位置以拍为单位。4/4 拍的四小节为 16 拍。 Remote Script 版本仍为 1.7.0、Python 包版本为 1.4.0;版本一致不代表已安装修复, 请务必用本仓库的安装器重新安装脚本并重启 Live。

macOS 可检查监听地址:

lsof -nP -iTCP:9877 -sTCP:LISTEN

应看到 127.0.0.1:9877,而不是 *:9877。Windows 可运行 Get-NetTCPConnection -LocalPort 9877 -State Listen 查看 LocalAddress。

隐私与数据收集

上游遥测及数据集代码仍然保留。本仓库没有 MCP_Server/config.py 或 Supabase 凭据, 缺少配置时收集会被禁用;这里的客户端示例另外显式关闭遥测和数据集记录。 这些变量只控制本服务,不会改变 AI 客户端自身的数据政策。

如果有人另外配置了数据收集,上游继承的逻辑会将未回答的同意提示视为允许记录。 内容可能包括提示词、MIDI、工程结构、名称和设备参数;该记录代码不会上传音频。 TERMS.md 保留了原维护者的数据使用条款作为来源说明;本衍生版本没有引入新的收集服务。 本地日志仍可能含有路径和工具参数,公开问题报告前请做脱敏。

常见问题

现象

排查方法

客户端找不到程序

使用 .venv 内可执行文件的绝对路径,不依赖终端激活状态

Control Surface 中没有 AbletonMCP

检查实际 User Library 位置、AbletonMCP 文件夹和 __init__.py,重启 Live

连接被拒绝

启动 Live 并选择控制脚本;服务与 Live 必须在同一台电脑

端口被占用

检查重复的 Live 实例或 AbletonMCP 控制脚本条目

更新后仍监听所有网络接口

可能仍加载旧脚本;检查安装后的 HOST 值,重新安装并重启

MIDI 有音符但没有声音

检查乐器加载、静音、路由、音频输出和播放状态

编曲功能不可用

使用 Live 11/12,并确认源 Session 片段存在

导入超时

很慢的导入仍可能超过 65 秒;重试前先查看目标槽位,避免重复导入

更多排查见 Troubleshooting。超时不一定表示操作未执行; Live 可能稍后完成操作,重试前请检查结果。

测试与开发

不需要第三方依赖的回归测试:

python3 -m unittest discover -s tests -p test_connection_safety.py -v

已安装虚拟环境后,可在 macOS 执行完整测试:

uv pip install --python .venv/bin/python pytest
ABLETON_MCP_DISABLE_TELEMETRY=true ABLETON_MCP_DISABLE_DATASET=true .venv/bin/python -m pytest -q

Windows 请使用对应可执行文件路径,并通过 PowerShell 的 $env: 语法设置两个环境变量。 目前仅已验证上述无依赖回归测试;完整 pytest 套件尚未在本环境运行。 上游片段测试使用模拟连接,不能替代 Live 实机测试。

修改时请保持以下两份脚本一致:

  • AbletonMCP_Remote_Script/__init__.py

  • MCP_Server/bundled_ableton_remote_script/AbletonMCP_init.py

更新时拉取本仓库、按需重装依赖、重新运行控制脚本安装器,再重启 Live 和客户端。 卸载时先禁用客户端 MCP 条目、将 Control Surface 设为 None 并关闭 Live,然后仅移除 Remote Scripts 下的 AbletonMCP 文件夹;如需恢复旧脚本,使用相应备份。无需删除工程或音色库。

致谢与许可证

基于上游提交 8731a47(2026-08-30,包版本 1.4.0),保留原作者的 MIT 许可证和版权声明。原始 README 存档于 docs/UPSTREAM_README.md,其中的安装命令指向上游版本。

Available Tools

37 tools
add_notes_to_clipB

Add MIDI notes to a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • notes: List of note dictionaries, each with pitch, start_time, duration, velocity, and mute

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: notes (required), clip_index (required), track_index (required), user_prompt. Returns: result

clear_notes_from_clipA

Remove all MIDI notes from a Session clip.

Writes are additive (add_notes_to_clip only appends), so to truly modify a clip you clear it first, then add the new notes. Use this with get_clip_notes and add_notes_to_clip for a real read -> modify -> write loop: read the notes, edit the list, clear_notes_from_clip, then add_notes_to_clip the edited notes.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: clip_index (required), track_index (required), user_prompt. Returns: result

create_audio_clipA

Create a new audio clip in an audio track's clip slot by importing a file.

Requires Ableton Live 12.0.5 or newer — the underlying ClipSlot.create_audio_clip Live API was introduced in 12.0.5 and is not available in earlier 12.0.x releases.

Parameters:

  • track_index: The index of the audio track to create the clip in

  • clip_index: The index of the clip slot to create the clip in

  • path: Absolute path to a supported audio file (e.g. a .wav). The target track must be an audio track and the clip slot must be empty.

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: path (required), clip_index (required), track_index (required), user_prompt. Returns: result

create_audio_trackA

Create a new audio track in the Ableton session.

Use this for recorded or imported audio (samples, stems, vocals). For MIDI instruments use create_midi_track instead.

Parameters:

  • index: The index to insert the track at (-1 = end of list)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: index, user_prompt. Returns: result

create_clipB

Create a new MIDI clip in the specified track and clip slot.

Parameters:

  • track_index: The index of the track to create the clip in

  • clip_index: The index of the clip slot to create the clip in

  • length: The length of the clip in beats (default: 4.0)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: clip_index (required), track_index (required), length, user_prompt. Returns: result

create_locatorA

Create a named locator (cue point) in the Arrangement at a beat position.

If a locator already exists at that beat (within ~1e-3 tolerance) it is renamed instead of toggled off. Time is in beats from the start of the arrangement (e.g. 0.0 = start, 16.0 = bar 5 in 4/4).

Parameters:

  • name: The locator label (e.g. "Chorus", "Verse 1", "Drop")

  • time: Beat position where the locator should sit

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: name (required), time (required), user_prompt. Returns: result

create_midi_trackA

Create a new MIDI track in the Ableton session.

Parameters:

  • index: The index to insert the track at (-1 = end of list)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: index, user_prompt. Returns: result

delete_clipA

Delete the clip in the given clip slot, freeing it for reuse.

Use this before create_clip when you want to overwrite an existing clip (create_clip itself refuses to write into an occupied slot).

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot to clear

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: clip_index (required), track_index (required), user_prompt. Returns: result

duplicate_to_arrangementA

Copy a Session-view clip into the Arrangement timeline.

Uses Live's track.duplicate_clip_to_arrangement() API (Live 11 / 12). The clip is placed at destination_time beats from the start of the arrangement on the same track it lives in.

Typical workflow:

  1. create_clip / add_notes_to_clip to build a Session clip

  2. Call duplicate_to_arrangement once per bar/section you need

  3. Call switch_to_arrangement_view to confirm the result in Live

Parameters:

  • track_index: Index of the track that owns the Session clip

  • clip_index: Index of the clip slot in that track (Session view)

  • destination_time: Beat position in the arrangement to place the clip (e.g. 0.0 = start, 8.0 = bar 3 in 4/4)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: clip_index (required), track_index (required), destination_time (required), user_prompt. Returns: result

fire_clipB

Start playing a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: clip_index (required), track_index (required), user_prompt. Returns: result

get_arrangement_clipsA

List all clips placed in the Arrangement timeline for a track.

Returns each clip's name, start_time, end_time, length, and type.

Parameters:

  • track_index: The index of the track to inspect

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: track_index (required), user_prompt. Returns: result

get_browser_items_at_pathA

Get browser items at a specific path in Ableton's browser.

Parameters:

  • path: Path in the format "category/folder/subfolder" where category is one of the available browser categories in Ableton

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: path (required), user_prompt. Returns: result

get_browser_treeC

Get a hierarchical tree of browser categories from Ableton.

Parameters:

  • category_type: Type of categories to get ('all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects')

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: user_prompt, category_type. Returns: result

get_clip_notesA

Read all MIDI notes from a Session-view clip.

Returns pitch, start_time, duration, velocity, mute (and extended fields when available).

Parameters:

  • track_index: Track that owns the clip

  • clip_index: Session clip slot index

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: clip_index (required), track_index (required), user_prompt. Returns: result

get_device_parametersB

Read all parameters for a device on a track (name, value, min, max).

Parameters:

  • track_index: Track that owns the device

  • device_index: Index into the track's device chain

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: track_index (required), device_index (required), user_prompt. Returns: result

get_remote_script_infoA

Report Ableton Remote Script version and capabilities (handshake).

Use this to verify the Live-side bridge matches this MCP server package.

Inputs: user_prompt. Returns: result

get_session_infoB

Get detailed information about the current Ableton session

Parameters:

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: user_prompt. Returns: result

get_session_snapshotA

Capture a full project state snapshot for trajectory recording.

Includes session metadata, every track (mixer, devices, session clips, arrangement clips), optional MIDI notes, and optional device parameters. Used to version musical state S_t → S_{t+1}.

Parameters:

  • include_notes: Include MIDI note arrays in clips (default True)

  • include_params: Include device parameter values (default True)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: user_prompt, include_notes, include_params. Returns: result

get_track_infoC

Get detailed information about a specific track in Ableton.

Parameters:

  • track_index: The index of the track to get information about

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: track_index (required), user_prompt. Returns: result

load_drum_kitB

Load a drum rack and then load a specific drum kit into it.

Parameters:

  • track_index: The index of the track to load on

  • rack_uri: The URI of the drum rack to load (e.g., 'Drums/Drum Rack')

  • kit_path: Path to the drum kit inside the browser (e.g., 'drums/acoustic/kit1')

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: kit_path (required), rack_uri (required), track_index (required), user_prompt. Returns: result

load_instrument_or_effectB

Load an instrument or effect onto a track using its URI.

Parameters:

  • track_index: The index of the track to load the instrument on

  • uri: The URI of the instrument or effect to load (e.g., 'query:Synths#Instrument%20Rack:Bass:FileId_5116')

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: uri (required), track_index (required), user_prompt. Returns: result

prefer_candidateA

Record a pairwise preference between two candidate actions or auditions.

winner should be 'a', 'b', or an explicit candidate id matching A or B.

Requires telemetry consent.

Parameters:

  • candidate_a: Id / URI / label for option A

  • candidate_b: Id / URI / label for option B

  • winner: 'a', 'b', or the winning id

  • reason: Optional reason ("C has the right attack")

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: winner (required), candidate_a (required), candidate_b (required), reason, +1 more. Returns: result

rate_last_actionA

Rate the most recent recorded action (or the track after an edit).

Ratings: better | same | worse | keep | reject | thumbs_up | thumbs_down Optional tags (comma-separated): groove, harmony, melody, sound, arrangement, energy, mix, emotion

Requires telemetry consent.

Parameters:

  • rating: Preference label

  • tags: Comma-separated aspect tags

  • note: Optional free-text reason

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: rating (required), note, tags, user_prompt. Returns: result

record_auditionA

Log a browser/preset/sample audition (keep or reject) for preference learning.

Call once per candidate auditioned. Does not load the device — use load_instrument_or_effect when kept=True and you want to commit.

Requires telemetry consent.

Parameters:

  • uri: Browser item URI (or stable preset/sample id)

  • kept: Whether this candidate was kept

  • search_query: Optional search text that led here (e.g. "analog bass")

  • dwell_ms: Optional time spent auditioning

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: uri (required), kept, dwell_ms, user_prompt, +1 more. Returns: result

reject_last_actionA

Mark the last action as rejected (exploration / preference boundary).

Use when the human undoes or discards an agent edit. Requires telemetry consent.

Parameters:

  • reason: Optional why it was rejected

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: reason, user_prompt. Returns: result

set_arrangement_clip_nameA

Set the name of a clip placed in the Arrangement timeline.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip within track.arrangement_clips, in the same order returned by get_arrangement_clips (i.e. ordered by start_time)

  • name: The new name for the clip

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: name (required), clip_index (required), track_index (required), user_prompt. Returns: result

set_arrangement_timeA

Move the arrangement playhead to a specific position.

Parameters:

  • time: Position in beats from the start of the arrangement (e.g. 8.0 = bar 3 in 4/4)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: time (required), user_prompt. Returns: result

set_clip_nameC

Set the name of a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • name: The new name for the clip

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: name (required), clip_index (required), track_index (required), user_prompt. Returns: result

set_device_parameterA

Set a device parameter to a specific value.

Use get_device_parameters first to discover parameter indices and ranges.

Parameters:

  • track_index: Track that owns the device

  • device_index: Index into the track's device chain

  • parameter_index: Index into device.parameters

  • value: New parameter value (Live parameter units)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: value (required), track_index (required), device_index (required), parameter_index (required), +1 more. Returns: result

set_tempoB

Set the tempo of the Ableton session.

Parameters:

  • tempo: The new tempo in BPM

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: tempo (required), user_prompt. Returns: result

set_track_nameA

Set the name of a track.

Parameters:

  • track_index: The index of the track to rename

  • name: The new name for the track

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: name (required), track_index (required), user_prompt. Returns: result

start_playbackB

Start playing the Ableton session.

Parameters:

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: user_prompt. Returns: result

stop_clipA

Stop playing a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: clip_index (required), track_index (required), user_prompt. Returns: result

stop_playbackB

Stop playing the Ableton session.

Parameters:

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: user_prompt. Returns: result

submit_intentA

Record the human's creative intent for subsequent actions in this session.

Call this before a sequence of edits so trajectory steps are conditioned on intent. Levels: 1=atomic, 2=musical op, 3=section, 4=song, 5=creative goal.

Requires telemetry consent. Data is stored in Supabase (same project as telemetry).

Parameters:

  • text: Natural-language intent (e.g. "make the chorus feel bigger")

  • level: Hierarchical intent level 1–5 (default 5)

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: text (required), level, user_prompt. Returns: result

switch_to_arrangement_viewC

Switch Ableton's main window to the Arrangement view.

Parameters:

  • user_prompt: The original user prompt that led to this tool call (for telemetry)

Inputs: user_prompt. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 37 tools

    Disambiguation3/5

    Most DAW tools have clear targets, but several clusters are close: get_session_info vs get_session_snapshot, create_clip vs create_audio_clip, load_instrument_or_effect vs load_drum_kit, and the preference/trajectory tools (reject_last_action, rate_last_action, prefer_candidate, record_audition) overlap in purpose. Descriptions clarify the differences, but an agent could easily misselect without reading them carefully.

    Naming Consistency4/5

    Tool names overwhelmingly follow a clear verb_noun snake_case pattern: get_*, create_*, set_*, start_*, stop_*, fire_*, delete_*, load_*. Minor deviations exist, like create_clip lacking 'midi' while create_audio_clip explicitly says audio, and a few telemetry tools (prefer_candidate, record_audition, submit_intent) using varied verbs, but the overall pattern is coherent.

    Tool Count2/5

    At 37 tools, this is a large surface. A sizable subset consists of telemetry, consent, snapshot, intent, and preference-logging tools that are not core Ableton operations, making the set feel bloated and harder to navigate than necessary.

    Completeness3/5

    The core workflow is fairly well covered: clips can be created, populated, cleared, read, named, fired, stopped, deleted, and duplicated to arrangement; devices and browser browsing are covered. However, notable gaps remain, including no delete track, no mixer/solo/mute/volume/pan control beyond device parameters, no arrangement clip deletion/moving, and no locator deletion or listing, so some likely workflows end in dead ends.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    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
      A
      quality
      B
      maintenance
      An MCP server that enables AI assistants to control Ableton Live, providing 104 tools for music production including track, clip, device, and mixer control.
      156
      867 PyPI
      73
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI agents to control Ableton Live 12 for music production, including generating grooves, basslines, and percussion, and executing live set operations through MCP.
      3
      2
      MIT