ReaMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REAPER_BRIDGE_HOST | No | Bridge host for the REAPER connection | 127.0.0.1 |
| REAPER_BRIDGE_PORT | No | Bridge port for the REAPER connection | 9001 |
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 |
|---|---|
| pingA | Check that the bridge is reachable. Returns bridge_version and reaper_version. |
| get_project_infoA | Return metadata about the currently open REAPER project. |
| get_project_parametersA | Return loop range, cursor position, and loop-enabled state. |
| list_tracksA | List every track in the project with volume, pan, mute, solo, arm state. |
| get_trackC | Get detailed info for a single track by 0-based index. |
| create_trackB | Insert a new track.
|
| delete_trackA | Delete a track by 0-based index. This is permanent and undoable via REAPER's undo system. |
| set_track_propertiesC | Modify one or more properties of a track.
|
| move_media_itemC | Move a media item to a new timeline position (seconds). |
| resize_media_itemC | Change the length of a media item (seconds). |
| delete_media_itemC | Delete a media item from a track. |
| get_item_propertiesB | Return properties of a media item: position, length, mute, lock, take name, playrate, and pitch. |
| duplicate_trackA | Duplicate a track, inserting the copy immediately after the original. |
| duplicate_itemC | Duplicate a media item on its track. |
| insert_midi_eventA | Insert a MIDI CC, pitch-bend, or program-change event into a MIDI item.
|
| delete_midi_noteB | Delete a specific MIDI note from a MIDI item by its 0-based note index. |
| set_midi_noteA | Modify an existing MIDI note. Only the supplied fields are changed.
|
| get_midi_notesA | Read all MIDI notes from a media item's active MIDI take. Returns a list of notes with start_ppq, end_ppq, pitch, velocity, channel. |
| get_track_itemsB | List all media items on a track with their position, length, and take info. |
| set_midi_notesA | Batch-edit multiple MIDI notes in one call. More efficient than calling set_midi_note() repeatedly. Each entry in 'notes' must have 'note_index' and any subset of: pitch, velocity, start_ppq, end_ppq, channel, selected, muted. Omitted fields keep their current values. |
| nudge_midi_notesA | Humanize all MIDI notes in an item with random timing and/or velocity offsets.
|
| create_midi_itemA | Create a MIDI item on a track and optionally pre-populate it with notes.
|
| insert_audio_fileC | Insert an audio file onto a track at the given position (seconds). |
| transportA | Control REAPER's transport. action: play | stop | pause | record | goto_start | goto_position position: required when action == goto_position (seconds) |
| add_fxA | Add an FX plugin to a track.
|
| list_fxA | List all FX plugins on a track (name, fx_index, n_params, enabled). Use track_index=-1 for the master track. |
| get_fx_paramsA | Return all parameters for an FX plugin on a track. Each entry includes: param_index, name, value, min_value, max_value, normalized. |
| set_fx_paramB | Set an FX parameter by normalized value (0.0–1.0). |
| set_fx_enabledB | Enable or bypass (disable) a specific FX plugin on a track. |
| remove_fxC | Remove an FX plugin from a track's FX chain. |
| set_fx_presetA | Load a named preset for an FX plugin on a track. preset_name can be:
|
| list_fx_presetsA | List available presets for an FX already on a track. Returns two lists:
|
| get_tempoA | Return the current BPM and time signature. |
| set_tempoA | Set the project tempo (and optionally time signature).
|
| set_project_parameterB | Set a named project parameter. Supported parameters: loop_start, loop_end, loop_enabled, cursor_position, playrate |
| save_projectA | Save the current REAPER project to disk. |
| render_time_selectionA | Render a time range to an audio file using REAPER's render pipeline.
|
| analyze_track_loudnessA | Measure the loudness of a single track over a time range using a non-destructive dry-run render (action 42439). No items, tracks, or files are created — project state is completely unchanged after the call. Returns:
|
| analyze_master_loudnessA | Measure the loudness of the full master mix over a time range using a non-destructive dry-run render (action 42441). No tracks or files are created. Returns:
|
| normalize_trackA | Normalize a track to a target integrated loudness by measuring its current LUFS via a non-destructive dry-run render, then adjusting the track fader.
|
| undoA | Trigger REAPER's undo. Returns the name of the action that was undone. |
| add_markerA | Add a marker or region to the project.
|
| list_markersA | List all markers and regions in the project. |
| delete_markerA | Delete a marker or region by its 0-based enumeration index (from list_markers). |
| open_projectB | Open a REAPER project file (.rpp) by its absolute path. |
| new_projectA | Create a new blank REAPER project (equivalent to File > New Project). |
| list_available_fxA | List installed FX plugins (VST, VST3, CLAP, and JS/JSFX).
Returns a list of {name, type} objects and a total count. type values: 'VST' (VST2), 'VST3', 'CLAP', 'JS' |
| create_track_sendB | Create a send from one track to another. Returns the new send index. |
| duplicate_time_rangeA | Copy all items overlapping [start_time, end_time) and paste them immediately after end_time, repeating repeat_count times. Useful for extending song form (repeating a chorus, creating an outro).
|
| remove_track_sendB | Remove a send from a track by its 0-based send index. |
| set_track_sendB | Set the volume and/or pan of a track send.
|
| set_track_inputB | Set the recording input for a track.
|
| set_input_monitoringB | Set input monitoring mode for a track.
|
| get_envelope_pointsA | Read all automation envelope points from a track envelope. Identify the envelope by name (e.g. 'Volume', 'Pan', 'Mute') or by 0-based envelope_index. Using envelope_name is preferred and works even if the envelope is not yet visible/armed in the REAPER UI. Returns envelope name and list of points with time, value, shape, tension. |
| insert_envelope_pointA | Insert a point into an automation envelope. Identify the envelope by name (e.g. 'Volume', 'Pan', 'Mute') or by 0-based envelope_index. Using envelope_name is preferred and works even if the envelope is not yet visible/armed in the REAPER UI.
|
| insert_envelope_point_at_beatA | Insert an automation envelope point aligned to the project beat grid. Identify the envelope by name (e.g. 'Volume', 'Pan') or by 0-based envelope_index.
|
| clear_envelope_pointsA | Delete all automation envelope points in the given time range (default: entire timeline). Identify the envelope by name (e.g. 'Volume', 'Pan') or by 0-based envelope_index. |
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/danielkinahan/ReaMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server