REAPER MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Host IP address for OSC mode | |
| mode | No | Server mode (osc or reapy) | osc |
| debug | No | Enable debug logging | |
| send_port | No | Port used for sending OSC messages | |
| receive_port | No | Port used for receiving OSC messages |
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 |
|---|---|
| create_projectA | Create a new REAPER project, in a new project tab, with the given tempo and time signature. The current project stays open, unsaved changes included. |
| save_projectA | Save the current project. If no path is given, saves to ~/Documents/REAPER Projects. |
| load_projectB | Load a REAPER project (.rpp) from the given file path. |
| get_project_infoA | Get information about the current project: name, path, tempo, tracks, length. |
| set_tempoB | Set the project tempo in BPM. |
| set_time_signatureB | Set the project time signature, e.g. 4/4, 3/4, 6/8. |
| create_trackC | Create a new track at the end of the project. track_type: audio, midi, instrument, folder |
| delete_trackC | Delete a track by its index. |
| rename_trackC | Rename a track. |
| set_track_volumeC | Set track volume in dB. Range: roughly -150 to +12 dB. |
| set_track_panA | Set track pan. -1.0 = full left, 0.0 = center, 1.0 = full right. |
| set_track_muteC | Mute or unmute a track. |
| set_track_soloC | Solo or unsolo a track. |
| get_track_infoC | Get detailed information about a track including FX and items. |
| list_tracksB | List all tracks in the current project with their basic parameters. |
| set_track_colorB | Set track color using RGB values (0–255 each). |
| create_midi_itemC | Create an empty MIDI item on a track. Returns item_id for use with add_midi_note. |
| add_midi_noteB | Add a MIDI note to an existing MIDI item. pitch: MIDI note number 0–127 (60 = middle C, 69 = A4). start/length: seconds, relative to the item's start. channel: MIDI channel 0–15 (use 9 for drums). |
| create_chord_progressionC | Create a chord progression on a track as a single MIDI item. chords: comma-separated chord names, e.g. "C,G,Am,F" or "Cm7,Fm7,Bb7,Ebmaj7". Supports: maj, min/m, dim, aug, maj7, min7/m7, dom7/7, dim7, hdim7, sus2, sus4. All chords are voiced around middle C (MIDI 60). |
| create_drum_patternA | Create a drum pattern on a track using a step-sequencer string. Each character = one step. Characters: k=kick, s=snare, h=hihat(closed), o=hihat(open), t=tom(low), m=tom(mid), f=tom(high), c=crash, r=ride, .=rest. Example 4/4 rock beat (16 steps): "k...h...s...h..." All drum notes are placed on MIDI channel 9 (GM standard). |
| add_fxB | Add an FX plugin to a track. Works for both instruments (VSTi) and effects (VST/AU). Use the exact plugin name as shown in REAPER's FX browser. Built-in Cockos plugins: ReaEQ, ReaComp, ReaDelay, ReaVerb, ReaLimit, ReaSynth, ReaSamplOmatic5000, ReaTune, ReaGate, ReaFIR, ReaXcomp. |
| remove_fxC | Remove an FX plugin from a track by its index. |
| set_fx_parameterA | Set a normalized parameter value (0.0–1.0) on an FX plugin. Use get_fx_parameters to discover available parameters and their indices. |
| get_fx_parametersB | Get all parameters for an FX plugin, including names, indices, and current values. |
| list_track_fxB | List all FX plugins on a track. |
| bypass_fxB | Enable or bypass (disable) an FX plugin on a track. |
| load_fx_presetC | Load a saved preset by name for an FX plugin. |
| import_audio_fileC | Import an audio file onto a track at the given position (seconds). Supports all formats REAPER can read: wav, aiff, mp3, flac, ogg, etc. |
| start_recordingB | Arm a track and start recording. Call stop_transport when done. |
| stop_transportA | Stop playback or recording. |
| play_projectA | Start project playback from the current cursor position. |
| set_cursor_positionA | Move the edit cursor to a position in seconds. |
| edit_audio_itemB | Trim an audio item and/or add fades. All values in seconds. start_trim: seconds to remove from the beginning. end_trim: seconds to remove from the end. fade_in/fade_out: fade length in seconds. |
| adjust_pitchB | Adjust the pitch of an audio item by semitones (can be fractional). |
| adjust_playback_rateC | Adjust playback rate of an audio item. 1.0 = normal speed, 0.5 = half speed. |
| add_volume_automationB | Add a volume automation point on a track, showing its volume envelope if needed. position: time in seconds. value_db: volume level in dB. |
| add_pan_automationC | Add a pan automation point on a track, showing its pan envelope if needed. pan: -1.0 (full left) to 1.0 (full right). |
| create_sendC | Create an aux send from one track to another. |
| list_sendsB | List all sends from a track. |
| remove_sendC | Remove a send from a track by its index. |
| set_send_volumeC | Set the volume of a send in dB. |
| create_busB | Create a new bus track and route the given tracks to it via sends. track_indices: list of track indices to feed into the bus. |
| render_projectB | Render the entire project to a file. format: wav, flac, mp3 (requires LAME), ogg. sample_rate: e.g. 44100, 48000, 96000. bit_depth: 16, 24, or 32 (WAV only; ignored for mp3/ogg/flac). channels: 1 (mono) or 2 (stereo). |
| render_time_selectionB | Render a specific time range of the project to a file. |
| render_stemsA | Render each track as a separate stem file by soloing each track individually. track_indices: list of track indices, or null to render all tracks. Files are named after the track names in the output directory. |
| render_regionsA | Render each region of the project to its own file, using the project's render settings. pattern: file name pattern; $region, $regionnumber, $project are available, and it may name subdirectories. REAPER numbers names that would clash ("take-001", "take-002"). selected_only: render only the regions selected in REAPER; with none selected, REAPER renders all of them. dry_run: return the project's regions and the files REAPER would write, without rendering. It sets the render settings and restores them. Fails without rendering if any output file already exists; never deletes files. Blocks until every file is written; status is then "complete". Gives up with "stalled" once the files stop growing for stall_timeout_seconds (longer while REAPER holds a scratch file), or "timeout" after timeout_seconds in total. Region "index" is the position among regions, as in get_project_info. |
| add_master_fxC | Add an FX plugin to the master track. |
| list_master_fxB | List all FX plugins on the master track. |
| set_master_fx_parameterC | Set a normalized parameter (0.0–1.0) on a master track FX plugin. |
| set_master_volumeB | Set the master track output volume in dB. |
| apply_mastering_chainA | Add a standard mastering FX chain to the master track. Presets: default (EQ > Comp > Limiter), loud (EQ > Comp x2 > Limiter), gentle (EQ > light Comp > Limiter). After applying, use set_master_fx_parameter to dial in specific settings. Use list_master_fx + get_fx_parameters to discover parameter indices. |
| apply_limiterB | Add ReaLimit to the master track and set its threshold and release. threshold_db: -60 to +12 dB. release_db_per_sec: how fast gain reduction recovers, in dB per second as ReaLimit displays it (about 6 and up; higher recovers faster; default 15). |
| analyze_loudnessA | Render the project to a temp file and measure integrated loudness (LUFS) and true peak (dBTP) using the ITU-R BS.1770 standard. |
| normalize_projectA | Measure the project's integrated loudness, then adjust the master volume so the output hits the target LUFS level. Common targets: -14 LUFS (streaming), -16 LUFS (podcasts), -23 LUFS (broadcast). |
| analyze_frequency_spectrumA | Render the project and analyze frequency band levels. Returns RMS level in dB for seven bands: sub_bass (20–60Hz), bass (60–250Hz), low_mids (250–500Hz), mids (500–2kHz), high_mids (2–4kHz), presence (4–8kHz), brilliance (8–20kHz). |
| detect_clippingA | Render the project and detect digital clipping (samples at or above 0 dBFS). Returns clipped sample count, peak level in dB, and whether clipping was found. |
| analyze_dynamicsB | Render the project and measure dynamic range: RMS, peak, crest factor, and a simplified DR score (average peak-to-RMS over 3-second blocks). |
| analyze_stereo_fieldA | Render the project and analyze stereo width and mono compatibility. Returns mid/side balance, stereo width ratio, and L/R correlation. Correlation near 1 = mono-like, near 0 = wide stereo, negative = phase issues. |
| analyze_transientsA | Render the project and detect transient events (note attacks, drum hits, etc.). Returns the count and timing of up to 100 transient onset events. |
| list_track_templatesA | List the track templates (.RTrackTemplate files) in REAPER's TrackTemplates folder, including subfolders. Each entry has 'name' (file name without extension), 'path' (relative to the TrackTemplates folder, e.g. "Vocals/Lead Vox"), the absolute 'file', and the names of the tracks the template contains. Pass either 'name' or 'path' to insert_track_template. |
| insert_track_templateA | Insert a saved track template into the current project, exactly like REAPER's own "Insert track from template": FX with their saved state, routing, folder structure, envelopes and items are all preserved. Templates can contain several tracks. template: a name or path from list_track_templates ("Vocal Chain", "Vocals/Lead Vox"), or an absolute path to a .RTrackTemplate file. position: 0-based track index the template's first track should occupy. Existing tracks at that index and below are shifted down. Omit to append at the end. The inserted tracks are left selected, matching REAPER's behaviour. |
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 61 tools
Most tools target clearly distinct resources and actions, and the descriptions make the intended use clear. There is some subtle overlap among master-FX tools (add_master_fx, apply_mastering_chain, apply_limiter) and among rendering/analysis families, but these are generally distinguishable by scope and output.
Tool names consistently use snake_case verb_noun patterns such as create_track, set_track_volume, render_project, and analyze_loudness. The convention is predictable throughout, with no mixed casing or chaotic verb styles.
At 61 tools this is an extreme surface for one MCP server, well beyond the typical ergonomic range even for a broad DAW domain. Many operations could be consolidated or grouped to reduce selection burden.
Coverage is strong across project lifecycle, tracks, FX, MIDI, audio import/edit, automation, transport, rendering, templates, and analysis. Minor gaps remain around deeper item editing, such as deleting/moving/splitting existing items or more advanced MIDI editing.