reaper-mcp-mac
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REAPER_MCP_TIMEOUT | No | Per-call timeout in ms (default 15000; raise for very large MIDI inserts). | 15000 |
| REAPER_MCP_BRIDGE_DIR | No | Override the shared IPC folder (must match on both sides). |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| reaper_pingA | Check that the REAPER bridge is alive. Returns the REAPER version. Call this first to confirm the connection. |
| reaper_get_project_stateA | Return the current project's tempo (BPM), length in seconds, transport play state, and the list of tracks (index, name, item count, mute/solo, volume in dB). Use this to orient before making changes. |
| reaper_set_tempoA | Set the project master tempo in BPM. |
| reaper_save_projectA | Save the current REAPER project to disk. |
| reaper_insert_trackA | Insert a new track at the given index (0-based). Omit index to append at the end. Returns the new track's index. |
| reaper_delete_trackA | Delete the track at the given 0-based index. |
| reaper_set_track_nameB | Set the name of the track at the given index. |
| reaper_set_track_muteC | Set the mute state of a track. |
| reaper_set_track_soloC | Set the solo state of a track. |
| reaper_set_track_volumeA | Set a track's volume in decibels (0 dB = unity, negative = quieter). |
| reaper_create_midi_itemA | Create an empty MIDI item on a track, positioned and sized in beats (quarter notes). Returns the item's index on that track, which you pass to reaper_add_midi_notes. |
| reaper_add_midi_notesA | Add MIDI notes to the active take of an existing MIDI item. Positions and lengths are in beats relative to the item start. Insert many notes in one call for chords/melodies. |
| reaper_list_track_fxA | List the FX on a track (index, name, enabled state). |
| reaper_add_fxA | Add an FX/plugin to a track by name (e.g. 'ReaEQ', 'ReaComp', or a VST name). Returns the new FX index. Matching is fuzzy on the plugin name. |
| reaper_get_fx_paramsA | List all parameters of an FX on a track (index, name, current value, min, max). Values are normalized as the plugin reports them. |
| reaper_set_fx_paramA | Set one parameter of an FX by parameter index. Use reaper_get_fx_params to discover indices and ranges. |
| reaper_transportA | Control playback: play, stop, pause, or record. Returns the resulting play state (0=stopped, 1=playing, 2=paused, 4=recording as bit flags). |
| reaper_set_edit_cursorA | Move the edit cursor to a time position in seconds. |
| reaper_renderA | Render (bounce) the project master to a 24-bit WAV file on disk. By default renders the current time selection (your loop); set bounds='project' for the whole project. Returns the absolute file path and size. Renders headlessly — no dialog. |
| reaper_callA | Escape hatch: call ANY ReaScript API function by name with positional args, for operations the dedicated tools don't cover. Example: {"func":"CountTracks","args":[0]}. Pointers returned by the API come back as "handle:N" strings, valid only within this REAPER session; pass them back verbatim as args to chain calls. Prefer the dedicated reaper_* tools when one exists. |
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 20 tools
Most tools are clearly separated by resource and action (tempo, track, MIDI item, FX, transport). The only potential confusion is reaper_get_project_state vs reaper_list_track_fx (both return state info) and reaper_call as an escape hatch could overlap with any dedicated tool, but descriptions mitigate this.
All tools follow a consistent reaper_verb_noun pattern: reaper_ping, reaper_get_project_state, reaper_set_tempo, reaper_insert_track, reaper_add_midi_notes, etc. The naming is uniform and predictable.
20 tools is on the higher end but appropriate for a DAW control surface covering project state, tracks, MIDI, FX, transport, and rendering. Each tool serves a distinct function, though a few could be consolidated (e.g., transport and edit cursor).
The toolset covers core DAW workflows: project state, track management, MIDI creation/editing, FX parameter control, transport, and rendering. Missing operations like track duplication, item deletion, or FX removal are notable but can be worked around via reaper_call.