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 | |
TDQS
Scored across 57 tools
Most tools have distinct purposes, but there is some overlap in MIDI and envelope editing tools that could cause confusion. For example, 'set_midi_note' and 'set_midi_notes' are very similar, and 'insert_envelope_point' vs 'insert_envelope_point_at_beat' differ only in timing units. Descriptions help clarify, but an agent might misselect between closely related tools.
Tool names follow a consistent snake_case verb_noun pattern throughout, such as 'add_fx', 'create_track', 'get_project_info'. There are no deviations in naming conventions, making the set predictable and easy to parse for an agent.
With 57 tools, the count is excessive for a single server, even for a comprehensive DAW interface like REAPER. This many tools can overwhelm an agent and increase complexity, making it harder to navigate and select the right tool efficiently. A more focused subset would be more appropriate.
The tool set provides complete coverage for REAPER project management, including track, item, FX, MIDI, envelope, and transport operations. It supports full CRUD/lifecycle actions (e.g., create, get, update, delete) across all major domains, with no obvious gaps that would hinder agent workflows.