Skip to main content
Glama

Cubase AI 16 MCP 🐾

Windows 本地 MCP,用一条 MIDI Remote 后台通道指挥 Cubase 16 干活喵。参考 PIXELHIZE/CubaseMCP 的 MIDI 桥接思路独立实现,不是那 238 个工具的翻版喵。

本喵只待后台:工具能在隔离桌面启动和管理自有 Cubase,但不抢前台、不点菜单、不往任何窗口塞键盘鼠标喵。安装位置、控制器版本和客户端注册这类本机记录放在 本机环境记录 里喵,版本历史在 CHANGELOG 里喵。

固定约束

  • 正式生命周期工具在隔离桌面启动和管理自有 Cubase 实例,不激活、不切换前台,不发送键盘鼠标输入,也不点菜单或对话框喵。

  • 音频导出走宿主 NonUI 控制器,音频导入直接传路径,不打开文件选择或导出窗口喵。

  • 非自有实例不会被接管,也不会被结束喵。

  • 参数和控制走单一 midi 通道;创建、打开、另存为、MIDI/音频导入、音频导出和原生事件读写走明确的固定操作喵。

  • 不按失败结果切换通道,没有 mock、UI 或协议 fallback 喵。

  • 宿主弹出的提示框无法被应答;会弹窗的命令已从白名单移除喵。cubase_runtime_windows 只读地报告隔离桌面上的意外窗口,真出现了就用 cubase_project_open/cubase_project_create(replaceCurrent)换一个实例喵。

  • 指定端口不存在、对象失效、API 缺失、命令不可执行时直接返回错误,不编造结果喵。

  • 超时或取消后的修改可能已经被 Cubase 接收,结果记为 unknown,不重试、不重放喵;重新连接必须显式调用工具喵。

当前支持空 MIDI、乐器、Group、FX、文件夹创建,插入插件卸载,自动化轨道和点编辑,音频总线和发送路由喵。范围、限制和实测证据见 当前状态 与 原生契约 喵。

Related MCP server: Ableton Live MCP

安装和启动

需要 Node.js 22+、已激活的 Cubase AI 16,以及能提供两个独立双向虚拟 MIDI 端口的驱动,例如 loopMIDI 喵。端口名字必须精确是喵:

CubaseAI MCP To Cubase
CubaseAI MCP From Cubase
npm ci
npm run build
npm run build:native
# 仅执行本次改动所需的定向验证
npm run setup:midi
npm run start:ports
npm run install:remote
npm run doctor -- --live

setup:midi 需要管理员权限,只通过 WinGet 安装官方 loopMIDI 包,已经装过就不重复装喵。start:ports 用已安装的 virtualMIDI 库,在无窗口进程里提供两个回环端口喵。它没有注册开机或登录自启动,结束进程或重新登录后要重新运行喵;stop:ports 可以明确停掉端口宿主喵。

生命周期启动端口宿主后,会等本次 PID 的就绪记录和精确端口枚举,最长 15 秒喵。宿主由独立进程创建,不继承生命周期响应管道喵。install:remote 只复制四个 MIDI Remote 文件,默认不覆盖不同内容喵。Cubase 正常使用时需要加载这个驱动,别把两个控制端口加进 MIDI 轨道的输入或 MIDI Thru 回路喵。MCP 服务不会自动安装驱动;显式生命周期请求会在私有桌面启动自有 Cubase 和需要的端口宿主喵。

cubase_project_create / cubase_project_open 已经内置独立启动,不需要手动跑外部启动脚本喵。原生工程操作还没提交、启动又停在“检查许可证”时,MCP 会结束受管 Cubase 和同会话的确切许可辅助进程,然后自动重启一次,结果里带 startupRecovery 喵。它不会结束主人另开的 Cubase,不改授权文件,不回答提示框,也不重放已提交的编辑喵。

标准输出只用于 MCP 协议喵。其他机器按自己的 Node 路径和 CUBASE_MCP_CONFIG 启动 dist/src/server.js 就好喵。

做一首歌的流程

  1. cubase_project_create(或 cubase_project_open)得到托管工程和 session 喵。

  2. cubase_tempo_set 设速度,cubase_transport_set(field: "signature",如 "3/4")设拍号喵。

  3. cubase_midi_import 传入 song:每条轨道的音符以四分音符拍为单位(pitch、start、duration、velocity),可带 channel(9 为 GM 鼓)、program、控制器和弯音,也可以直接传现成的 .mid 路径喵。空轨道用 cubase_track_create,kind 可选 midi、instrument、group、fx、folder 喵。乐器轨道初始插槽为空,先用 cubase_objects_list 发现该槽,再用 cubase_plugins_list 和 cubase_plugin_set 分配实际候选乐器喵。

  4. cubase_events_list 直接读原生轨道、Part、音频事件和单个 MIDI 音符,返回临时 eventId、路径和工程秒数,以及音符的音高、力度与通道喵。cubase_midi_read 保留为宿主 MIDI 文件导出解析路径,cubase_channels_list 列出混音通道喵。

  5. cubase_event_edit 移动或裁剪一个音频事件/Part;cubase_midi_note_edit 修改一个音符的 pitch、velocity、position 或 duration,每次一个字段喵。把快照里的 root、path、eventId 和原值复制进请求,停止走带后提交,以回执 confirmed 为准喵。轨道与选择编辑继续用 cubase_channel_set、cubase_track_edit 和白名单命令喵。

  6. cubase_audio_import 按明确路径导入音频并保留源文件喵。导入前它会从已保存的 CPR 读取工程采样率并与源文件比较:Cubase 在这条导入路径上不做转换,48 kHz 文件进 44.1 kHz 工程会慢放 8.1 % 喵。sampleRateMismatch 默认 convert(仅 WAV:写入转换后的 32 位浮点副本再导入),也可选 reject 或 ignore,结果里的 sampleRate.check 说明实际发生了什么喵。

  7. cubase_transport_action 播放、停止、回零;cubase_audio_export 通过宿主 NonUI 导出器写出缩混,outputPath 指定文件名和目录,format 选择 WAV/AIFF/FLAC,sampleRate、bitDepth、floatingPoint 指定采样格式,结果按实际文件头核对喵。它不打开导出窗口、不执行导出键盘命令;cubase_project_save 负责保存喵。

cubase_automation_read 按轨道返回参数轨道和归一化点,cubase_automation_edit 支持 createLane、insert、setValue、move、delete,带原值及点数校验喵。cubase_routes_list 返回宿主实际音频输入/输出和发送目标,field: "send" 另带零基 sendIndex,写入时传列表返回的 expectedSlotUniqueId 喵。cubase_routing_set 校验旧值及目标名称后写入,并通过 MIDI 独立读回喵。输出/发送路由和编辑后的自动化点都过了保存重开验收喵。

详细契约、观察到的宿主行为和限制见 做歌工具,逐条命令的实机结果见 命令白名单 喵。回执里的 submitted 只表示宿主接受了请求,是否生效以读回为准喵。

控制流程

  1. cubase_status 获取本次活动页面的 session、实际能力及 serverCompatibility 喵。只有 readyForOperations: true 的当前版本活动映射才接受会话操作,旧版控制器只供状态诊断喵。

  2. cubase_objects_list 分页发现根及子对象,cubase_parameters_list 取得该对象的真实参数标签喵。

  3. 带同一 session、root、objectId 和 tag 调用 cubase_parameter_set,可指定 normalized、plain 或 display 格式喵。

  4. 读回确认修改喵。submitted 只表示已经提交,不等于操作已完成喵。

当前工程保存通过 cubase_command_execute 提交 key: "project.save"、当前 session 和 confirmCurrentSelection: true 喵。控制器使用独立的最小 Save 映射页,只发送一次 MIDI 按下,观察到绑定后释放并返回主映射,后续请求使用回执里的新 session 重新发现对象喵。这条保存路径不选择目标,带路径另存为使用 cubase_project_save_as 喵。超时后的未确认结果不重发,实测链路见 保存与重开 喵。

cubase_project_save 把单次 MIDI 保存与文件观察封装成一个工具:传入已确认的当前 CPR 绝对路径及 confirmCurrentProjectPath: true,返回 file.state 喵。changed_stable 表示观察到内容变化并稳定,change_not_observed 表示未确认变化喵;路径由调用方声明,工具不选择目标、不另存为,也不把文件变化冒充重开语义验收喵。详见 工具契约 喵。

工具一览

共 53 个 MCP 工具喵。单参数及单控制项查询、参数编辑锁、所选轨道身份和前后导航、混音通道位置、速度和时间显示反馈,以及宿主版本和功能上限查询都有明确会话约束喵。cubase_parameter_edit_lock_set 需要已观察的参数和匹配的 expectedLocked,回执表示已提交,后续状态用 cubase_parameter_get 读喵。已选轨控制包括四段 EQ、前级滤波、发送、乐器槽、五类通道条效果及其参数页、自动化和只读电平表喵。cubase_control_set 可同时校验选中通道的唯一 ID 和运行时 ID,但这些检查不是与宿主状态原子绑定的事务喵。插件装入和替换使用 cubase_plugin_set;cubase_plugin_unload 校验插槽及其中的插件 ID,原生卸载后确认子对象数为零,已在实机观察到无提示框卸载喵。Control Room、固定银行及菜单白名单的可用性仍以宿主实际返回为准喵。

cubase_status 返回紧凑握手,不再内嵌完整对象和控制表喵。cubase_controls_list 的控制和分组分别分页,按 nextOffset、nextGroupOffset 获取全部项目;cubase_transport_get 提供速度与定位器的可用性和实际反馈喵。长身份标识原样保留,描述性元数据有长度上限喵。

cubase_capabilities 始终返回静态约束;宿主部分先读取自有运行时清单,再用 2000 ms 的只读握手读取喵。没有自有实例或映射不回答时,host 为 null,hostState 明确给出 observed、code、timeoutMs 和下一步操作,不会把整个查询变成一次 8 秒传输超时喵。cubase_status 仍使用完整配置时限喵。bridge.status 是只读请求:丢失回复记为 not_started,空闲连接会被丢弃并在下一次请求时重新打开,请求本身不重发;有写入在途时仍按未知结果处理喵。

插入效果查看器支持提交开启、旁路、自动化和参数写入喵。调用前通过 cubase_control_get 取得完整插件身份,并在 cubase_control_set 中传入该身份和当前轨道或银行通道身份;这些检查不是原子事务,提交后仍需独立读回,实际 Cubase 效果待验证,见 插入效果查看器 喵。

轨道控制的过程值和显示值来自宿主反馈,尚未收到反馈时为 null,切换轨道会撤销上一轨缓存喵。速度和时间显示也只返回本次活动映射收到的回调,不推测未反馈的值喵。

对象编号和参数标签必须来自当次发现,标签可以是有符号整数喵。页面切换使旧 session 失效,实际对象删除会撤销对应记录喵。根对象首屏重新发现会显式刷新该根快照,后续参数读取不会暗中重建 ID 喵。普通变化通知不会清空独立的轨道控制反馈喵。

参数的 value 和 defaultValue 是宿主原生数值,不保证在 0–1 之间喵。normalized 写入仍校验 0–1;工程单位和显示文本分别使用 plain、display,expectedValue 比较原生过程值喵。

连接出错后,先核对实际状态,再显式调用 cubase_connection_reset,该工具不会重放之前的请求喵。每条请求都有截止时间,过期的排队工作不会执行喵。

状态返回队列和发现记录有容量上限喵。请求编号按各自的截止时间记忆(最多 4096 个,截止时间最远 10 分钟),过期后才遗忘,页面切换不会清空;同一编号不会被执行第二次喵。Cubase 偶尔会丢掉一条应答(走带停止时观察到),客户端会按请求编号向桥接取回已保存的应答,操作本身不会重发喵。

控制器把控制分成两个映射页:主页面(走带、所选轨、快速控制、Control Room、全部命令和 DirectAccess)与混音器页面(全部 mixer.* 银行控制)喵。cubase_pages_list 查看当前页面和激活计数,cubase_page_activate 切换并返回新 session;对非当前页面的操作返回 PAGE_INACTIVE 喵。cubase_control_set 默认等待宿主反馈并在 confirmation.state 中报告是否观察到,cubase_command_execute 报告 bindingObserved 喵。

原生项目接口调查

已定位项目服务的类标识、接口标识、宿主请求及回调路径;标准工厂的公开数量为零,和内部登记表是否有类是两回事喵。显式探针命令:

powershell.exe -NoProfile -File scripts/Inspect-ProjectFactory.ps1 -ProbeProjectService

这个独立探针成功获取并释放原生项目服务接口,报告见 artifacts/ipc/service-probe-20261110.json 喵。另一个经批准的固定诊断 DLL 在隔离测试进程中取得宿主接口并提交一次只读 GetMusicalTrack 请求,收到关联的错误回调,没有取得工程数据,也没有修改程序指令或产品准入状态喵。这是早期项目服务的调查边界,后续生命周期、MIDI 导入与参数化无窗导出使用各自已验证的原生入口喵。

另有显式 -ProbeEmptyRequest 模式,在独立探针进程中验证固定空输入分支,返回值为 1、状态为 4,不涉及项目数据读写喵。详见 服务请求契约 和 宿主注册入口 喵。

详见 工厂恢复、项目请求路径、原生调查范围 和 MIDI 声明覆盖清单 喵。

正式后台生命周期

cubase_runtime_status 查询自有实例,cubase_project_create 创建真实空白 CPR,cubase_project_open 打开已有 CPR,cubase_project_save_as 使用当前会话另存为新路径,cubase_runtime_stop 关闭自有实例喵。替换实例需要同时传 replaceCurrent: true 与 confirmDiscardChanges: true,关闭需要明确丢弃确认,默认保留现有实例喵。另存为不覆盖已有文件,要求已登记的当前工程路径匹配喵。

cubase_midi_import 使用同一初始化器的第四个固定操作,把一个标准 MIDI 文件按宿主自己的导入流程并入托管工程;它不选择文件、不弹窗、不改偏好喵。

原生初始化器对应固定的 Cubase 版本,文件路径长度上限 500 字符喵。调用会检查进程寿命、父进程、隔离作业、事件线程及文档路径;创建/打开后先观察映射激活,再发送一次 MIDI 握手喵。失败不会重发,原生结果和文件会保留喵。源代码和实机证据见 详细契约,这不代表所有 Cubase 功能都已完成喵。

文档地图

参考

许可证

本项目使用 MIT License,版权归 2026 Asakitan 所有喵。

Tool Schema Changelog

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

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables headless control of Cubase via MIDI Remote API and virtual MIDI ports, supporting transport, track, and plugin parameter operations through 238 registered MCP tools.
      3
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables MCP clients to programmatically control an Ableton Live 12 session, including tracks, clips, MIDI notes, devices, parameters, mixer, scenes, warping, and rendering, over streamable HTTP.
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables MCP-compatible clients to programmatically control and automate DaVinci Resolve, including reading project/timeline state, building and editing timelines, managing the media pool, applying color operations, and running renders.
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables MCP clients to control Ableton Live through a Max for Live device and optional Remote Script, covering tracks, clips, MIDI notes, mixer settings, transport, and plugin search and insertion.
      1
      MIT