MCP server for controlling REAPER with tools for mixing, mastering, MIDI composition, routing, automation, and music production.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Reaper MCP.
get_track_countGet the total number of tracks in the current REAPER project (excluding master track).
get_trackGet information about a track. Args: track_index: Track index (0-based). Use -1 for the master track. Returns: Object with 'info': guid, name, volume, volume_db, pan, muted, soloed, has_midi, has_audio, fx_names, role.
get_all_tracksGet information about all tracks in the project.
get_master_trackGet information about the master track.
insert_trackInsert a new track at the specified index. Args: index: Position to insert track (0-based). If not specified, adds at end. name: Optional name for the new track. Returns: Info about the created track.
delete_trackDelete a track. Args: track_index: Track index to delete (0-based). Cannot delete master track (-1).
A TwelveTake Studios project.
Setup guide, examples and FAQ -> twelvetake.com/tools/reaper-mcp
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control REAPER DAW for mixing, mastering, MIDI composition, and full music production workflows.
Version: 1.7.3
Most MCP servers just wrap REAPER's API and call it a day. This one includes production workflow helpers that handle multi-step operations in a single call:
| Tool | What it does for you |
|---|---|
setup_sidechain_compression() | Creates send, routes to channels 3-4, configures ReaComp's detector input โ complete sidechain setup in one call |
add_mastering_chain() | Adds ReaEQ โ ReaComp โ ReaEQ โ ReaLimit to master track with proper signal flow |
add_parallel_compression() | Creates a bus track, sets up the send, adds compressor โ NY-style compression ready to blend |
create_bus() | Creates a submix track and routes your specified tracks to it |
get_project_summary() | Returns track count, all track names/volumes/pans/FX, markers, regions, tempo, time signature โ everything your AI needs in one call |
The bridge script runs inside REAPER and handles communication with the MCP server.
The package can deploy it for you:
That copies reaper_mcp_bridge.lua into REAPER's Scripts folder for your platform, backing
up any existing copy first. It writes nothing else, and the server never touches your REAPER
installation on its own. Pass a path if REAPER is portable or installed somewhere unusual:
--install-bridge "/path/to/REAPER/Scripts".
To do it by hand instead:
reaper_mcp_bridge.lua to your REAPER Scripts folder:
%APPDATA%\REAPER\Scripts\~/Library/Application Support/REAPER/Scripts/~/.config/REAPER/Scripts/reaper_mcp_bridge.lua and click RunYou should see "REAPER MCP Bridge (File-based, Full API) started" in REAPER's console.
The server is published on PyPI as twelvetake-reaper-mcp. The simplest path is to let your
MCP client launch it with uvx (or pipx) โ nothing to install by hand.
Add it to your MCP client's configuration (e.g. .mcp.json, or your client's MCP settings):
VS Code uses a top-level
serverskey with"type": "stdio"instead ofmcpServers.
To confirm the server starts on its own:
It waits quietly for a client to connect โ press Ctrl+C to stop.
With REAPER open and the bridge running, ask your assistant "how many tracks are in my project?" โ a number back means the server, bridge, and REAPER are all talking.
To work on the server itself, run it from a clone instead of from PyPI. Install the dependencies:
Point your MCP client at the local script:
Then check the connection with:
If you use Nix, the repo ships a flake-based dev shell that provides Python 3.12 and creates/activates a virtualenv for you:
Then install the dependencies as usual:
This pins the Python version and keeps dependencies isolated from your system.
Note: the
x86_64-linuxdev shell is tested and working. The macOS (Darwin) shells are provided but have not been tested โ confirmation from a macOS user is welcome.
The server and the bridge exchange JSON files in a mailbox directory that the bridge script polls from inside REAPER. There is no network configuration and no port to open.
Bridge directory: REAPER's own Scripts/mcp_bridge_data, resolved per platform:
| Platform | Path |
|---|---|
| Windows | %APPDATA%\REAPER\Scripts\mcp_bridge_data |
| macOS | ~/Library/Application Support/REAPER/Scripts/mcp_bridge_data |
| Linux | ~/.config/REAPER/Scripts/mcp_bridge_data (or ~/.reaper/... for older installs) |
Override with REAPER_BRIDGE_DIR for portable installs. The server prints the directory it
resolved to stderr on startup, and includes it in any timeout error.
The HTTP transport that shipped alongside this was removed in v1.7.2. It had been deprecated
since v1.2.1, and its request parser could never read a POST body, so no call it was handed
ever reached REAPER. REAPER_COMM_MODE no longer does anything.
| Tool | Description |
|---|---|
get_track_count() | Get total number of tracks (excluding master) |
get_track(index) | Get track info (name, volume, pan, mute, solo) |
get_all_tracks() | Get info for all tracks |
get_master_track() | Get master track info |
insert_track(index, name) | Create a new track |
delete_track(index) | Delete a track |
set_track_name(index, name) | Rename a track |
set_track_volume(index, db) | Set volume in dB |
set_track_pan(index, pan) | Set pan (-1 to 1) |
set_track_mute(index, mute) | Mute/unmute track |
set_track_solo(index, solo) | Solo/unsolo track |
set_track_phase(index, invert) | Invert phase |
set_track_width(index, width) | Set stereo width (0-2) |
set_track_color(index, r, g, b) | Set track color |
get_track_peak(index, channel) | Get current peak level (dB) |
get_track_peak_hold(index, channel) | Get held peak since last reset (dB) |
clear_all_peak_indicators() | Reset peak hold on all tracks |
get_track_master_send(index) | Get master/parent send state |
set_track_master_send(index, enabled) | Enable/disable master send |
set_track_as_folder(index, depth) | Set as folder parent/child |
arm_track(index, arm) | Arm for recording |
set_track_input(index, input) | Set record input |
set_track_monitor(index, mode) | Set monitor mode |
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/twelvetake-studios-reaper-mcp)<a href="https://allmcps.com/mcp/twelvetake-studios-reaper-mcp"><img src="https://allmcps.com/api/badge/twelvetake-studios-reaper-mcp?style=directory" alt="Reaper MCP on AllMCPs" /></a>