reaper-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REAPER_MCP_DEBUG | No | Set to 1 to enable Lua request log | |
| REAPER_MCP_IPC_DIR | No | Mailbox override (must match on both sides) | |
| REAPER_MCP_TIMEOUT | No | Default 10s | 10s |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| statusA | Check the Lua bridge and return project tempo, play state, and tracks. Call first. |
| transportC | Playback control. action: play, stop, pause, record, toggle_repeat, goto_start. |
| trackB | Track operations. action: list | add | delete | update | bus. update uses name, volume_db, pan (-1..1), mute, solo. bus creates a submix named |
| midiB | MIDI on a track item. Times are absolute project beats. action: create_item | add | get | replace | update | delete. replace rewrites the whole take in one undo step; add only appends. |
| fxB | Track FX. action: list | add | params | set | delete | bypass | move | preset. track_index -1 is the master. set value is 0..1 (REAPER normalized). |
| sendC | Track sends. action: list | add | delete | update. track_index is the source (-1 master). dest_index is the destination track. |
| itemB | Media items on a track. action: list | update. fade_in / fade_out are seconds (REAPER native). position/length are beats. |
| envelopeB | Track envelopes. action: list | get | set. name is REAPER envelope name (Volume, Pan, Mute, ...). set replaces all points. value is native envelope value (Volume 1.0 = 0 dB). |
| projectC | Project-level edits. action: tempo | time_signature | time_selection | marker. |
| renderC | Render. No undo. Long timeout. bounds: project | time_selection | custom | items. stems=true renders selected tracks (pass track_indices to select). |
| actionB | Run a REAPER Main_OnCommand by numeric command id. |
| reaper_callB | Call any ReaScript function by name. Pointers come back as {"__handle":"hN"} and can be passed back in. Example: func=CountTracks args=[0]. |
| run_luaA | Run a Lua snippet inside REAPER ( |
| batchA | Many operations in one IPC hop. Each call is {func, args} or {func, code} or {func, arguments} for a grouped tool name (track/midi/fx/...). One failure does not abort the rest. Handles from earlier calls work later. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Tools are mostly distinct, but reaper_call and run_lua both offer arbitrary scripting access, and action overlaps with reaper_call for command execution. Descriptions help, but an agent could misselect between these scripting tools.
All tool names follow a consistent style: lowercase, single words or underscore-separated compounds (reaper_call, run_lua). No mixed conventions or unpredictable verbs.
14 tools is well-scoped for a DAW control server, covering core operations (status, transport, track, midi, fx, send, render) and advanced scripting without overwhelming.
The set provides comprehensive coverage of project lifecycle and editing, with scripting tools (reaper_call, run_lua, batch) filling any gaps. Missing specific audio editing but scriptable.