AbleOscMcp
控制传输、创建和编辑MIDI剪辑、操纵曲目和设备以及订阅实时属性更改——所有这些都可以从Claude Desktop、Cursor或任何其他MCP客户端完成。
先决条件
安装
# Install with uv (recommended)
uvx ableosc-mcp
# Or install with pip
pip install ableosc-mcpAbletonOSC设置
AbletonOSC是一个免费的远程脚本,运行在Ableton Live内部,并通过OSC/UDP公开其Python API。
- 从下载最新版本 视频/AbletonOSC
- 复制
AbletonOSC文件夹到您的Ableton用户库:
- macOS: ~/Music/Ableton/User Library/Remote Scripts/ - 窗户: C:\Users\\Documents\Ableton\User Library\Remote Scripts\
- 完全退出并重新启动Ableton Live
- 在阿布莱顿: 偏好→ 链接、节奏和MIDI→ 控制表面 → 选择
AbletonOSC
AbletonOSC监听UDP端口 11000 并在端口上回复 11001.
Claude桌面配置
将此添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"ableton": {
"command": "uvx",
"args": ["ableosc-mcp"]
}
}
}或者,如果你已经克隆了repo:
{
"mcpServers": {
"ableton": {
"command": "uv",
"args": ["run", "ableosc-mcp"],
"cwd": "/path/to/AbleOscMcp"
}
}
}可用工具
歌曲/交通
| 工具 | 说明 |
|---|---|
get_session_info | 节奏、时间特征、播放状态、循环设置、曲目/场景计数 |
set_tempo | 设置BPM(20–999) |
start_playing | 启动全球运输 |
stop_playing | 停止全球运输 |
stop_all_clips | 停止播放所有剪辑 |
tap_tempo | 发送轻击节奏脉冲 |
undo / redo | 撤消/重做上次操作 |
set_loop | 配置循环开始、长度和启用状态 |
get_cue_points | 列出所有提示点 |
jump_to_cue | 按名称或索引跳转到提示点 |
capture_scene | 将播放的剪辑捕获到新场景中 |
trigger_session_record | 切换会话记录模式 |
轨迹
| 工具 | 说明 |
|---|---|
get_tracks | 列出所有曲目(索引、名称) |
get_track | 完整曲目细节:音量、平移、静音、独奏、手臂、设备、剪辑 |
set_track_volume | 0.0=静音,0.85=单位(0 dB),1.0=+6 dB |
set_track_pan | −1.0=完全向左,0.0=居中,1.0=完全向右 |
set_track_mute / set_track_solo / set_track_arm | 切换轨迹状态 |
set_track_name | 重命名曲目 |
set_track_send | 设置发送级别(0.0–1.0) |
create_midi_track / create_audio_track / create_return_track | 添加曲目 |
delete_track | 删除曲目 |
duplicate_track | 复制曲目 |
stop_track_clips | 停止曲目上的所有剪辑 |
片段
| 工具 | 说明 |
|---|---|
create_clip | 在插槽中创建新的空MIDI剪辑 |
delete_clip | 删除剪辑 |
get_clip_info | 名称、长度、循环设置、播放状态 |
fire_clip / stop_clip | 启动或停止剪辑 |
set_clip_name | 重命名剪辑 |
set_clip_loop | 配置剪辑循环开始/结束 |
get_notes | 获取所有MIDI音符 {pitch, start_time, duration, velocity, mute} |
add_notes | 将MIDI音符添加到剪辑中 |
remove_notes | 按音高/时间范围删除音符,或删除所有音符 |
duplicate_clip_loop | 通过复制内容使循环长度加倍 |
设备
| 工具 | 说明 |
|---|---|
get_devices | 列出轨道上的设备 |
get_device_parameters | 所有参数:名称、值、最小/最大范围 |
get_device_parameter | 单参数值和显示字符串 |
set_device_parameter | 设置参数值 |
场景
| 工具 | 说明 |
|---|---|
get_scenes | 列出所有场景 |
get_scene | 场景细节:名称、节奏覆盖 |
fire_scene / fire_selected_scene | 启动一个场景 |
create_scene / delete_scene / duplicate_scene | 管理场景 |
set_scene_name | 重命名场景 |
set_scene_tempo | 设置每个场景的节奏覆盖 |
查看/选择
| 工具 | 说明 |
|---|---|
get_selected_track / set_selected_track | Live用户界面中的选定曲目 |
get_selected_scene / set_selected_scene | Live用户界面中的选定场景 |
get_selected_clip / set_selected_clip | Live用户界面中的选定剪辑槽 |
get_selected_device / set_selected_device | Live用户界面中的选定设备 |
实时听众
订阅Live属性更改并轮询更新——不需要轮询循环。
| 工具 | 说明 |
|---|---|
subscribe | 开始听一个属性。退货 sub_id 立即;AbletonOSC立即发送当前值 |
poll | 收集排队的事件。块高达 timeout_seconds 如果队列为空 |
unsubscribe | 让听众停下来,清理一下 |
list_subscriptions | 列出活动订阅及其队列深度 |
示例——观看节奏变化:
subscribe("tempo", level="song")
→ {"sub_id": "sub_3607efaa", "status": "subscribed"}
# AbletonOSC immediately sends current value:
poll("sub_3607efaa", timeout_seconds=0)
→ {"events": [{"value": 120}]}
# Change tempo in Ableton, then:
poll("sub_3607efaa", timeout_seconds=10)
→ {"events": [{"value": 128}]}
unsubscribe("sub_3607efaa")您可以收听的属性:
| 级别 | level= | 必需的索引参数 | 有用的属性 |
|---|---|---|---|
| 歌曲 | "song" | 没有 | tempo, is_playing, loop, groove_amount |
| 轨道 | "track" | track_index | mute, solo, arm, volume, panning, output_meter_level |
| 剪辑 | "clip" | track_index, clip_index | is_playing, is_recording, playing_position |
| 夹子插槽 | "clip_slot" | track_index, clip_index | has_clip, is_playing, is_triggered |
| 场景 | "scene" | scene_index | name |
| 设备 | "device" | track_index, device_index | name |
| 查看 | "view" | 没有 | selected_track, selected_scene |
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ABLEOSC_HOST | 127.0.0.1 | AbletonOSC主机 |
ABLEOSC_SEND_PORT | 11000 | 端口AbletonOSC正在监听 |
ABLEOSC_RECEIVE_PORT | 11001 | 我们监听的端口以获取响应 |
发展
git clone https://github.com/mawaha/AbleOscMcp
cd AbleOscMcp
uv sync --all-extras
# Unit tests (no Ableton needed)
uv run pytest tests/unit/ -v
# Integration tests (requires Ableton Live + AbletonOSC running)
# Kill any running ableosc-mcp server first to free port 11001
lsof -ti :11001 | xargs kill
ABLEOSC_INTEGRATION=1 uv run pytest tests/integration/ -v
# Coverage report
uv run pytest tests/unit/ --cov --cov-report=term-missing建筑
AI client (Claude Desktop, Cursor, etc.)
│ MCP / stdio
▼
src/ableosc/server.py ← FastMCP server, tool registration
│ asyncio + python-osc / UDP
▼
AbletonOSC Remote Script ← installed in Ableton Live
(inside Ableton Live)
│ Live Python API
▼
Ableton Live与实现自定义协议的其他Ableton MCP集成不同,该项目包含 AbletonOSC -一个成熟、测试良好的远程脚本,具有全面的API表面,包括实时事件侦听器。
许可证
麻省理工学院——见 许可证.
