reaper-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REAPER_MCP_HOST | No | Where the MCP server looks for the bridge | 127.0.0.1 |
| REAPER_MCP_PORT | No | Bridge TCP port (set on both sides if you change it) | 8765 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| reaper_pingA | Check that the Reaper bridge is alive and report Reaper's version. Call this first when anything fails — a clean response confirms both the MCP server and the in-Reaper bridge script are running and reachable. Returns: |
| reaper_get_project_infoA | Return the current project's name, length, tempo, cursor position, transport state, and track count. Returns a dict: |
| reaper_list_installed_fxA | List every FX plugin Reaper has scanned (VST2/VST3/CLAP/JS). Reads Reaper's own scan-cache files directly (no bridge round-trip). Use
this to find the exact Each item: Result is paginated. The response wraps the page in
|
| reaper_list_tracksA | List all tracks with index, name, volume (dB), pan, mute/solo/arm state, and FX count. Track |
| reaper_get_track_stateA | Return name, volume (dB), pan, mute/solo/arm, and FX count for a single track. |
| reaper_create_trackA | Insert a new track. Returns the new track's state including its assigned index. |
| reaper_delete_trackA | Delete the track at the given index. This is destructive and shifts later indices down by one. |
| reaper_rename_trackA | Rename a track. Returns the updated track state. |
| reaper_set_track_volume_dbA | Set a track's volume fader in dB. Returns the updated track state. |
| reaper_set_track_panA | Set a track's pan. Returns the updated track state. |
| reaper_set_track_muteA | Mute or unmute a track. Returns the updated track state. |
| reaper_set_track_soloA | Solo or un-solo a track. Returns the updated track state. |
| reaper_get_master_trackA | Return the master track's volume (dB), pan, mute state, and FX count. |
| reaper_set_master_volume_dbA | Set the master track's volume fader in dB. |
| reaper_list_track_fxA | List FX on a track with each FX's index, name, current preset, enabled state, and param count. FX |
| reaper_add_fx_to_trackA | Add an FX to the end of a track's chain. Returns |
| reaper_remove_fxA | Remove an FX from a track's chain. Indices of later FX shift down by one. |
| reaper_set_fx_enabledA | Enable or bypass an FX (enabled=False bypasses it without removing it). |
| reaper_list_fx_presetsA | List every preset available for an FX instance, plus the current selection. Returns |
| reaper_set_fx_presetA | Switch an FX to a preset by name or by index. Provide exactly one of |
| reaper_list_fx_paramsA | List an FX's parameters with current value, min, and max. Returns a list of |
| reaper_set_fx_paramA | Set an FX parameter by index or name. Returns |
| reaper_add_envelope_pointA | Insert one automation point on a track volume/pan or FX-parameter envelope. Tip: if the envelope can't be obtained, set the track to read mode first
via |
| reaper_clear_envelopeA | Delete every point on an envelope. Same target semantics as reaper_add_envelope_point. |
| reaper_set_track_automation_modeA | Set a track's automation mode (trim/read/touch/write/latch/latch_preview). Set to 'read' for written envelopes to play back. |
| reaper_set_track_record_armA | Arm or disarm a track for recording. Returns the updated track state. |
| reaper_set_track_record_inputA | Set a track's record input (audio channel or encoded MIDI input). |
| reaper_transport_playA | Start playback from the edit cursor. |
| reaper_transport_stopA | Stop the transport. If Reaper is recording, the call is refused unless |
| reaper_transport_recordA | Start recording on all armed tracks. |
| reaper_transport_pauseA | Pause the transport, keeping the cursor where it is. |
| reaper_set_cursorA | Move the edit cursor to a time in seconds. Returns the resulting cursor position. |
| reaper_set_tempoA | Set the project tempo in BPM. Returns the resulting tempo. |
| reaper_set_time_selectionA | Set the project time selection (the loop/render range) to [start, end] seconds. |
| reaper_clear_time_selectionA | Clear the project time selection. |
| reaper_set_loop_enabledA | Enable or disable looped playback (repeat over the time selection). |
| reaper_list_markersA | List all project markers and regions. Each entry: Known limitation: |
| reaper_add_markerA | Add a project marker at a time. Returns |
| reaper_add_regionA | Add a project region spanning [start, end] seconds. Returns |
| reaper_delete_markerA | Delete a project marker or region by its id. |
| reaper_goto_markerA | Move the edit cursor to a marker by its id. |
| reaper_list_sendsA | List the sends originating from a track. Each entry: |
| reaper_add_sendA | Create a send from one track to another. Returns the new send's index. |
| reaper_set_send_volume_dbA | Set the level of a track send in dB. |
| reaper_remove_sendA | Remove a send from a track. Later send indices shift down by one. |
| reaper_list_itemsA | List the media/MIDI items on a track. Each entry: |
| reaper_insert_midi_itemA | Create an empty MIDI item on a track spanning [start, end] seconds. Returns |
| reaper_add_midi_noteB | Insert a single MIDI note into an existing MIDI item on a track. |
| reaper_delete_itemA | Delete a media/MIDI item from a track. Later item indices shift down by one. |
| reaper_render_projectA | Render the project to disk using Reaper's most recent render settings. This reuses whatever output path, bounds, and format were last configured in Reaper's Render dialog — set those up once manually first. Writes a file but does not modify the project. |
| reaper_analyze_mixA | Analyze a rendered mix: local DSP measurements + AI listening feedback. Two layers. Local DSP (numpy/pyloudnorm) measures the trustworthy numbers — integrated LUFS, loudness range, sample peak, crest factor, clipped samples, per-band frequency balance, and stereo correlation/width/balance. Then (unless include_ai=false) Gemini is given BOTH the audio file and those measurements and returns grounded mix/master feedback with concrete REAPER fixes. Requires the optional deps: This reads files and calls an external API; it never modifies the Reaper project. |
| reaper_analyze_projectA | One-call mix check: quick-export the master mix, then analyze it. This is the convenient path — no need to pre-configure the render dialog or pass a file. It tells Reaper to render the master mix to a temp file (reusing your project's render codec, e.g. WAV), measures it with local DSP (LUFS, peak, crest, per-band balance, stereo width), then — unless include_ai=false — uploads a small compressed proxy plus those measurements to Gemini for grounded feedback. Requires the optional deps ( |
| reaper_run_actionA | Trigger any Reaper action by numeric command ID (Main_OnCommand). The escape hatch for actions not yet wrapped as dedicated tools. Look up IDs in Reaper's Actions list (right-click an action → Copy selected action command ID). Marked destructive because arbitrary actions can do anything. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/T-Rzeznik/reaper-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server