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 |
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": 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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