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 |
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 |
|---|---|
| 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).
|
| 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
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