ReaMCP

ReaMCP

An MCP server that enables users to control and edit REAPER projects through a Python-based interface and a Lua bridge. It supports managing tracks, controlling transport, manipulating MIDI and audio items, and adjusting FX parameters within the digital audio workstation.

Category
访问服务器

README

ReaMCP

ReaMCP is a Reaper MCP for controlling and editing projects in your DAW. Connect this to agentic editors like Claude Desktop, VS Code or Zed to make use of the querying and editing tools in Reaper.

This project is currently in its alpha stage. Keep a backup your projects and report any issues you find. This is tested using Linux but I'd like to make it compatible with all operating systems.

How this differs from similar projects

There are a few other REAPER MCP servers. Here's how they compare:

dschuler36/reaper-mcp-server — Read-only, file-based. Parses .rpp project files directly from disk and does audio analysis on rendered files. No live REAPER connection — REAPER doesn't need to be open. Good for querying existing projects and mix feedback, but can't create or change anything.

itsuzef/reaper-mcp — Live connection via OSC or ReaPy (Python-in-REAPER). OSC is limited to transport and basic fader control; the ReaScript mode is more capable but requires configuring Python inside REAPER. Only a handful of tools (create track, add MIDI note, get project info).

This project — Live connection via a persistent Lua bridge script running inside REAPER, communicating over a local TCP socket. No OSC setup, no Python DLL wiring. Exposes the full reaper.* Lua API surface, giving a much broader and more reliable toolset: full MIDI editing, FX chain management, automation, sends, markers, media item manipulation, and more.

What it does

  • Read project and track state
  • Create, duplicate, and delete tracks and media items
  • Move and resize media items on the timeline
  • Create MIDI items; read, insert, modify, and delete MIDI notes, CC, pitch bend, and program change events; batch-edit and humanize notes
  • Insert audio files onto tracks
  • Control transport and cursor position
  • Add, list, and remove FX (including on the master track); read/write FX parameters; bypass/enable FX; load presets by name with case-insensitive fallback enumeration
  • Read and set tempo/time signature and project parameters
  • Save the project and trigger undo
  • Add, list, and delete markers and regions
  • Open project files by path
  • Create, remove, and adjust track sends (volume and pan)
  • Set track recording input and input monitoring mode
  • Read and insert automation envelope points; clear envelopes; insert beat-aligned points
  • Copy and repeat time ranges (duplicate chorus, extend outro, etc.)
  • Render a time range to an audio file
  • Measure loudness (LUFS integrated, short-term, momentary, true peak) for individual tracks or the master mix via non-destructive dry-run render
  • Normalize track volume to a target LUFS level in one call

Requirements

  • REAPER (with ReaPack)
  • Python 3.10+

Setup

1) Install the Python server

pip install -e . # You can also `uv sync` but it's not supported.

2) Install mavriq-lua-sockets in REAPER and restart

REAPER's embedded Lua cannot load stock LuaSocket builds in this context. Install mavriq-lua-sockets via ReaPack:

  1. REAPER → Extensions → ReaPack → Import repositories
  2. Add https://github.com/mavriq-dev/public-reascripts/raw/master/index.xml
  3. REAPER → Extensions → ReaPack → Browse packages
  4. Install mavriq-lua-sockets
  5. Restart REAPER

3) Install and run the bridge script via ReaPack

  1. REAPER → Extensions → ReaPack → Import repositories
  2. Add https://github.com/danielkinahan/ReaMCP/raw/main/index.xml
  3. REAPER → Extensions → ReaPack → Browse packages
  4. Install ReaMCP Bridge
  5. Run it once via Actions → Show action list → ReaMCP Bridge
  6. Confirm REAPER console shows Listening on 127.0.0.1:9001
  7. Optional: add it to startup actions so it auto-runs on launch

You may also run this manually via Actions -> ReaScript: Run ReaScript (EEL2 or Lua)... and selecting the lua script from this repo.

4) Start the MCP server

python -m reaper_mcp

Optional environment variables:

Variable Default Description
REAPER_BRIDGE_HOST 127.0.0.1 Bridge host
REAPER_BRIDGE_PORT 9001 Bridge port

MCP tools

Tool Description
ping Verify bridge is reachable
get_project_info Project metadata/state
get_project_parameters Loop range, cursor, loop-enabled
save_project Save the current project to disk
undo Trigger REAPER undo
open_project Open a .rpp project file by absolute path
list_tracks List all tracks
get_track Get one track by 0-based index
create_track Insert a track
delete_track Delete a track
duplicate_track Duplicate a track (inserts copy after original)
set_track_properties Set name/volume/pan/mute/solo/arm
set_track_input Set recording input (audio channel or MIDI)
set_input_monitoring Set input monitoring mode (off/on/not when playing)
move_media_item Move a media item to a new timeline position
resize_media_item Change the length of a media item
delete_media_item Remove a media item from a track
get_item_properties Get position, length, pitch, playrate, etc. of an item
duplicate_item Duplicate a media item on its track
create_midi_item Create a MIDI item with optional pre-populated notes
get_midi_notes Read all MIDI notes from a MIDI item
set_midi_note Modify an existing MIDI note (pitch, velocity, position, etc.)
delete_midi_note Delete a MIDI note by index
insert_midi_event Insert a CC, pitch-bend, or program-change event
insert_audio_file Insert an audio file at a time position
transport play / stop / pause / record / goto_start / goto_position
add_fx Add FX/instrument to a track
list_fx List FX chain entries on a track
list_available_fx List all installed FX plugins; optional filter by name/type (e.g. "fabfilter", "vst")
get_fx_params List all FX parameters
set_fx_param Set FX parameter (normalized 0.0–1.0)
set_fx_enabled Enable or bypass an FX plugin
remove_fx Remove an FX from the chain
set_fx_preset Load a named FX preset; falls back to index-scan with case-insensitive matching. Use track_index=-1 for master track
list_fx_presets List factory and file-based presets for a plugin already on a track
get_tempo Read BPM and time signature
set_tempo Set BPM and optional time signature
set_project_parameter Set loop_start, loop_end, loop_enabled, cursor_position, playrate
add_marker Add a marker or region
list_markers List all markers and regions
delete_marker Delete a marker or region by enum index
create_track_send Create a send from one track to another
remove_track_send Remove a track send
set_track_send Set send volume and pan
get_envelope_points Read all automation envelope points
insert_envelope_point Insert an automation envelope point
clear_envelope_points Remove all points from an envelope
insert_envelope_point_at_beat Insert an automation point aligned to a musical beat position
get_track_items List all media items on a track with position, length, and take info
set_midi_notes Batch-edit multiple MIDI notes in one call
nudge_midi_notes Humanize all notes in a MIDI item with random timing and velocity offsets
duplicate_time_range Copy all items in a time range and paste them N times after the selection
render_time_selection Render a time range to an audio file using REAPER's render pipeline
analyze_track_loudness Measure integrated loudness (LUFS), short-term/momentary max, and true peak for a single track via non-destructive dry-run render
analyze_master_loudness Same as above but for the full master mix
normalize_track Measure track loudness and adjust the fader to hit a target LUFS level (default -14 LUFS)

Limitations

Preset loading — set_fx_preset first tries TrackFX_SetPreset (works for plugins with a standard VST/CLAP program bank), then falls back to enumerating all presets by index with case-insensitive name matching via TrackFX_SetPresetByIndex. This covers most plugins. File-based presets (.ffp, .fxp) can be loaded by passing the absolute file path as preset_name. Use list_fx_presets to discover available factory and file presets.

MCP client configuration

VS Code (.vscode/mcp.json)

{
  "servers": {
    "reaper": {
      "type": "stdio",
      "command": "./.venv/bin/python",
      "args": ["-m", "reaper_mcp"]
    }
  }
}

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "reaper": {
      "command": "/path/to/venv/bin/python",
      "args": ["-m", "reaper_mcp"]
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Zed (~/.config/zed/settings.json)

{
  "context_servers": {
    "reaper": {
      "command": {
        "path": "./.venv/bin/python",
        "args": ["-m", "reaper_mcp"]
      }
    }
  }
}

ReaPack package in this repo

index.xml ships the bridge script (bridge/reaper_mcp_bridge.lua) as a ReaPack package so users can install and auto-update it directly from REAPER.

Architecture

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)

The Python process is a standard mcp server. REAPER control happens through a persistent Lua bridge script running inside REAPER.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选