ReaMCP
ReaMCP是一个Reaper MCP,用于控制和编辑DAW中的项目。将其连接到代理编辑器,如Claude Desktop、VS Code或Zed,以使用Reaper中的查询和编辑工具。
该项目目前处于alpha阶段。备份您的项目,并报告您发现的任何问题。这是用Linux测试的,但我想让它与所有操作系统兼容。
这与类似项目有何不同
还有其他一些REAPER MCP服务器。以下是它们的比较:
dschuler36/reaper-mcp 服务器 --只读,基于文件。解析 .rpp 直接从磁盘投影文件,并对渲染的文件进行音频分析。没有实时REAPER连接——REAPER不需要打开。适合查询现有项目和混合反馈,但不能创建或更改任何内容。
itsuzef/收割机mcp --通过OSC或ReaPy(REAPER中的Python)进行实时连接。OSC仅限于传输和基本推子控制;ReaScript模式功能更强,但需要在REAPER中配置Python。只有少数工具(创建曲目、添加MIDI音符、获取项目信息)。
这个项目 --通过REAPER内部运行的持久Lua桥脚本进行实时连接,通过本地TCP套接字进行通信。无需OSC设置,无需Python DLL连接 reaper.* Lua API表面,提供了一个更广泛、更可靠的工具集:完整的MIDI编辑、FX链管理、自动化、发送、标记、媒体项目操作等等。
它做什么
- 读取项目并跟踪状态
- 创建、复制和删除曲目和媒体项目
- 在时间线上移动和调整媒体项目的大小
- 创建MIDI项目;读取、插入、修改和删除MIDI音符、CC、音高弯曲和程序更改事件;批量编辑和人性化笔记
- 将音频文件插入曲目
- 控制传输和光标位置
- 添加、列出和删除FX(包括在主轨道上);读取/写入FX参数;绕过/启用FX;通过不区分大小写的回退枚举按名称加载预设
- 读取并设置节奏/时间特征和项目参数
- 保存项目并触发撤消
- 添加、列出和删除标记和区域
- 按路径打开项目文件
- 创建、删除和调整曲目发送(音量和平移)
- 设置轨道记录输入和输入监控模式
- 读取并插入自动化包络点;透明信封;插入节拍对齐点
- 复制和重复时间范围(重复合唱、延长外展等)
- 将时间范围渲染到音频文件
- 通过非破坏性的模拟渲染,测量单个曲目或主混音的响度(LUFS集成、短期、瞬时、真实峰值)
- 在一次调用中将跟踪量标准化为目标LUFS级别
需求
- 后部(带 ReaPack)
- Python 3.10+
设置
1) 安装Python服务器
pip install -e . # You can also `uv sync` but it's not supported.2) 安装 mavriq-lua-sockets 在REAPER中重新启动
REAPER的嵌入式Lua在此上下文中无法加载现有的LuaSocket版本。安装 mavriq-lua-sockets 通过ReaPack:
- 收割者→ 扩展→ ReaPack→ 导入存储库
- 添加
https://github.com/mavriq-dev/public-reascripts/raw/master/index.xml - 收割者→ 扩展→ ReaPack→ 浏览软件包
- 安装 mavriq lua插座
- 重新启动REAPER
3) 通过ReaPack安装并运行桥接脚本
- 收割者→ 扩展→ ReaPack→ 导入存储库
- 添加
https://github.com/danielkinahan/ReaMCP/raw/main/index.xml - 收割者→ 扩展→ ReaPack→ 浏览软件包
- 安装 ReaMCP桥
- 通过运行一次 行动→ 显示操作列表→ ReaMCP桥
- 确认REAPER控制台显示
Listening on 127.0.0.1:9001 - 可选:将其添加到启动操作中,以便在启动时自动运行
您也可以通过以下方式手动运行此程序 操作->ReaScript:运行ReaScript(EEL2或Lua)。.. 并从该仓库中选择lua脚本。
4) 启动MCP服务器
python -m reaper_mcp可选环境变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
REAPER_BRIDGE_HOST | 127.0.0.1 | 网桥主机 |
REAPER_BRIDGE_PORT | 9001 | 桥梁港口 |
MCP工具
| 工具 | 说明 |
|---|---|
ping | 验证网桥是否可用 |
get_project_info | 项目元数据/状态 |
get_project_parameters | 循环范围、光标、循环启用 |
save_project | 将当前项目保存到磁盘 |
undo | 触发器REAPER撤销 |
open_project | 打开a .rpp 按绝对路径列出的项目文件 |
list_tracks | 列出所有曲目 |
get_track | 按从0开始的索引获取一条轨迹 |
create_track | 插入曲目 |
delete_track | 删除曲目 |
duplicate_track | 复制曲目(在原始曲目后插入副本) |
set_track_properties | 设置名称/音量/平移/静音/独奏/手臂 |
set_track_input | 设置录音输入(音频通道或MIDI) |
set_input_monitoring | 设置输入监控模式(播放时关闭/打开/不打开) |
move_media_item | 将媒体项目移动到新的时间线位置 |
resize_media_item | 更改媒体项目的长度 |
delete_media_item | 从曲目中删除媒体项目 |
get_item_properties | 获取物品的位置、长度、音高、播放率等 |
duplicate_item | 在其轨道上复制媒体项目 |
create_midi_item | 使用可选的预填充音符创建MIDI项目 |
get_midi_notes | 读取MIDI项目中的所有MIDI音符 |
set_midi_note | 修改现有的MIDI音符(音高、速度、位置等) |
delete_midi_note | 按索引删除MIDI音符 |
insert_midi_event | 插入CC、变桨弯曲或程序更改事件 |
insert_audio_file | 在某个时间位置插入音频文件 |
transport | play / stop / pause / record / goto_start / goto_position |
add_fx | 将外汇/工具添加到曲目中 |
list_fx | 在轨道上列出外汇链条目 |
list_available_fx | 列出所有已安装的FX插件;可选的 filter 按名称/类型(例如。 "fabfilter", "vst") |
get_fx_params | 列出所有外汇参数 |
set_fx_param | 设置FX参数(标准化 0.0–1.0) |
set_fx_enabled | 启用或绕过FX插件 |
remove_fx | 从链中删除FX |
set_fx_preset | 加载一个命名的FX预设;回退到不区分大小写匹配的索引扫描。使用 track_index=-1 主赛道 |
list_fx_presets | 列出已在轨道上的插件的基于工厂和文件的预设 |
get_tempo | 读取BPM和时间签名 |
set_tempo | 设置BPM和可选时间签名 |
set_project_parameter | 设置 loop_start, loop_end, loop_enabled, cursor_position, playrate |
add_marker | 添加标记或区域 |
list_markers | 列出所有标记和区域 |
delete_marker | 按枚举索引删除标记或区域 |
create_track_send | 创建从一个曲目到另一个曲目的发送 |
remove_track_send | 删除曲目发送 |
set_track_send | 设置发送音量和摇摄 |
get_envelope_points | 读取所有自动化包络点 |
insert_envelope_point | 插入自动化包络点 |
clear_envelope_points | 从信封中删除所有点 |
insert_envelope_point_at_beat | 插入一个与音乐节拍位置对齐的自动化点 |
get_track_items | 列出曲目上的所有媒体项目,包括位置、长度和拍摄信息 |
set_midi_notes | 在一次通话中批量编辑多个MIDI音符 |
nudge_midi_notes | 通过随机定时和速度偏移使MIDI项目中的所有音符人性化 |
duplicate_time_range | 复制一个时间范围内的所有项目,并在选择后粘贴N次 |
render_time_selection | 使用REAPER的渲染管道将时间范围渲染到音频文件 |
analyze_track_loudness | 通过非破坏性的模拟渲染测量单声道的综合响度(LUFS)、短期/瞬时最大值和真实峰值 |
analyze_master_loudness | 与上述相同,但适用于全主混合物 |
normalize_track | 测量轨道响度并调整衰减器以达到目标LUFS级别(默认值-14 LUFS) |
局限性
预设加载 — set_fx_preset 第一次尝试 TrackFX_SetPreset (适用于具有标准VST/CLAP程序库的插件),然后回落到按索引枚举所有预设,并通过以下方式进行不区分大小写的名称匹配 TrackFX_SetPresetByIndex。这涵盖了大多数插件。基于文件的预设(.ffp, .fxp)可以通过传递绝对文件路径来加载 preset_name.使用 list_fx_presets 以发现可用的出厂和文件预设。
MCP客户端配置
VS代码(.vscode/mcp.json)
{
"servers": {
"reaper": {
"type": "stdio",
"command": "./.venv/bin/python",
"args": ["-m", "reaper_mcp"]
}
}
}克劳德桌面(claude_desktop_config.json)
{
"mcpServers": {
"reaper": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "reaper_mcp"]
}
}
}配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
Zed(~/.config/zed/settings.json)
{
"context_servers": {
"reaper": {
"command": {
"path": "./.venv/bin/python",
"args": ["-m", "reaper_mcp"]
}
}
}
}此仓库中的ReaPack包
index.xml 发送桥牌脚本(bridge/reaper_mcp_bridge.lua)作为ReaPack软件包,用户可以直接从REAPER安装和自动更新。
建筑
MCP client (AI / IDE)
│ stdio
▼
Python MCP server ──── JSON-RPC over TCP (127.0.0.1:9001) ────► bridge/reaper_mcp_bridge.lua
(src/reaper_mcp/) └─ reaper.* Lua API (inside REAPER)Python进程是一个标准 mcp 服务器。REAPER控制是通过REAPER内部运行的持久Lua桥脚本实现的。
