reaper-mcp
An MCP server that gives Claude Code (or any MCP client) full control of Reaper.
README
reaper-mcp
An MCP server that gives Claude Code (or any MCP client) full control of Reaper.
Claude can:
- List every VST/VST3/CLAP/JS/AU plugin you have scanned
- Add plugins to tracks, set parameters, and pick presets
- Move volume faders, pan, mute, solo (track and master)
- Write automation envelopes (track volume/pan or any FX parameter)
- Set up track sends / routing
- Create/rename/delete tracks; create/delete media & MIDI items and write MIDI notes (one at a time or a whole part in one batch call)
- Insert existing media files — audio samples/loops or
.midclips — onto a track from disk - Add markers and regions; set the time selection and toggle looping
- Arm tracks and drive the transport (play / stop / record)
- Render the project using the last-used render settings
- Trigger any Reaper action by command ID (escape hatch)
All 55 tools are namespaced with a reaper_ prefix (e.g. reaper_create_track) so they
don't collide with other MCP servers. Read tools accept a response_format argument
(markdown for humans, json for machines).
How it works
Claude Code ──stdio──▶ reaper-mcp server ──TCP 127.0.0.1:8765──▶ Reaper bridge ReaScript
(MCP) (this package) (runs inside Reaper)
The bridge is a Python ReaScript that lives inside Reaper. It opens a non-blocking
TCP listener and polls it from reaper.defer so the DAW UI never freezes.
Every mutation is wrapped in Undo_BeginBlock / Undo_EndBlock, so anything Claude does
is a single undo step.
Prerequisites
- Reaper installed (default location:
C:\Program Files\REAPER (x64)\) - Python ReaScript enabled in Reaper. Open Options → Preferences → Plug-ins → ReaScript
and point "Custom path to Python dll" at your Python install (e.g.
C:\Users\<you>\AppData\Local\Programs\Python\Python311\). Restart Reaper. The page should sayPython loaded successfully. - Python 3.10+ on your host machine for the MCP server itself.
Install
cd "C:\Users\tommy\Desktop\CODING STUFF\reaper-mcp"
py -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .
Launch the bridge inside Reaper
- Copy
reaper_scripts\reaper_mcp_bridge.pyinto%APPDATA%\REAPER\Scripts\. - In Reaper: Actions → Show action list → ReaScript: Load → pick the file → Run.
- You should see
[reaper-mcp] bridge listening on 127.0.0.1:8765in the ReaScript console.
Optional: in the action list, right-click the loaded action and "Add to toolbar", so you can start the bridge with one click. To make it auto-start with Reaper, install SWS Extension and use SWS: Set startup action.
Wire it up to Claude Code
Add to your Claude Code MCP config (%APPDATA%\Claude\claude_desktop_config.json for Claude Desktop, or ~/.claude.json / project settings for Claude Code):
{
"mcpServers": {
"reaper": {
"command": "C:\\Users\\tommy\\Desktop\\CODING STUFF\\reaper-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "reaper_mcp.server"]
}
}
}
Restart Claude Code. Verify with the reaper_ping tool — it should return Reaper's version.
Try it
Ask Claude things like:
- "List every synth I have installed." →
reaper_list_installed_fxfiltered to instruments - "Make a new track called 'Bass', drop Serum on it, and switch to the first preset." →
reaper_create_track→reaper_add_fx_to_track→reaper_list_fx_presets→reaper_set_fx_preset - "Automate the volume of track 1 to fade in over the first 4 seconds." →
reaper_add_envelope_point× 2 - "Send track 2 to a reverb bus and pull the send down 6 dB." →
reaper_add_send→reaper_set_send_volume_db - "Drop a 2-bar MIDI clip on track 3 and write a C major chord." →
reaper_insert_midi_item→reaper_add_midi_notes(all 3 notes in one call) - "Mark the chorus at 32 seconds." →
reaper_add_marker - "Arm track 1 and start recording." →
reaper_set_track_record_arm→reaper_transport_record
Configuration
| Env var | Default | Effect |
|---|---|---|
REAPER_MCP_HOST |
127.0.0.1 |
Where the MCP server looks for the bridge |
REAPER_MCP_PORT |
8765 |
Bridge TCP port (set on both sides if you change it) |
Troubleshooting
could not reach Reaper bridge— the bridge script isn't running. Re-load it via the action list. Check Reaper's ReaScript console for errors.Python ReaScript not loadedin Reaper — point Preferences → Plug-ins → ReaScript at a Python install of the same bitness (Python 3.x x64 for Reaper x64) and restart.could not add FX 'X' (not found?)— callreaper_list_installed_fxand copy the exact name (including theVST3:/VST3i:prefix). Reaper matches by exact suffix.- Preset name doesn't match — some plugins expose presets as
.fxpfiles in%APPDATA%\REAPER\presets\vst-<plugin>\. Callreaper_list_fx_presetsto see what Reaper actually sees. - Automation doesn't seem to do anything — set the track to
readmode:reaper_set_track_automation_mode(idx, "read").
Adding new capabilities
To add a tool:
- Write an
h_<method>handler inreaper_scripts/reaper_mcp_bridge.pyand register it inHANDLERS. - Add a
@mcp.tool(name="reaper_<verb_noun>", annotations={...})wrapper inreaper_mcp/server.pythat calls_call("<method>", ...). Validate inputs withAnnotated[type, Field(...)]andEnumtypes, give read tools aresponse_formatargument, and let failures raise (do not return an error dict —_callraises so FastMCP reports it as anisErrorresult). - Re-load the bridge script in Reaper (Actions list → ReaScript: Load) and restart the MCP server in Claude Code.
The method-name string is the contract between the two files and must match exactly on both sides.
Evaluations
evaluations/reaper_eval.xml holds read-only eval questions (mcp-builder Phase 4) for checking that an
LLM can drive the server. See evaluations/README.md for how to run them and verify answers against a
live project.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.