Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REAPER_BRIDGE_HOSTNoBridge host for the REAPER connection127.0.0.1
REAPER_BRIDGE_PORTNoBridge port for the REAPER connection9001

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
ping

Check that the bridge is reachable. Returns bridge_version and reaper_version.

get_project_info

Return metadata about the currently open REAPER project.

get_project_parameters

Return loop range, cursor position, and loop-enabled state.

list_tracks

List every track in the project with volume, pan, mute, solo, arm state.

get_track

Get detailed info for a single track by 0-based index.

create_track

Insert a new track.

  • name: track name (default "Track N")

  • index: 0-based position (default: append at end)

delete_track

Delete a track by 0-based index. This is permanent and undoable via REAPER's undo system.

set_track_properties

Modify one or more properties of a track.

  • volume: linear amplitude (1.0 = 0 dB)

  • pan: -1.0 (full left) to 1.0 (full right)

move_media_item

Move a media item to a new timeline position (seconds).

resize_media_item

Change the length of a media item (seconds).

delete_media_item

Delete a media item from a track.

get_item_properties

Return properties of a media item: position, length, mute, lock, take name, playrate, and pitch.

duplicate_track

Duplicate a track, inserting the copy immediately after the original.

duplicate_item

Duplicate a media item on its track.

insert_midi_event

Insert a MIDI CC, pitch-bend, or program-change event into a MIDI item.

  • event_type: 'cc' | 'pitch_bend' | 'program_change'

  • ppq: position in PPQ ticks

  • channel: 0-15

  • cc: provide cc_number (0-127) and value (0-127)

  • pitch_bend: provide bend (-8192 to 8191, 0 = center)

  • program_change: provide program (0-127)

delete_midi_note

Delete a specific MIDI note from a MIDI item by its 0-based note index.

set_midi_note

Modify an existing MIDI note. Only the supplied fields are changed.

  • pitch: MIDI note number (0-127)

  • velocity: 0-127

  • channel: 0-15

  • start_ppq / end_ppq: positions in PPQ ticks

get_midi_notes

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_items

List all media items on a track with their position, length, and take info.

set_midi_notes

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_notes

Humanize all MIDI notes in an item with random timing and/or velocity offsets.

  • timing_range_ppq: maximum ±PPQ timing shift per note (0 = no timing change). At 960 PPQ, 20 PPQ ≈ 1/48th note of swing.

  • velocity_range: maximum ±velocity shift per note (0 = no velocity change). Velocity is clamped to 1-127.

  • seed: optional integer for reproducible results (omit for random each call). Returns the per-note changes applied.

create_midi_item

Create a MIDI item on a track and optionally pre-populate it with notes.

  • start / end: time in seconds

  • notes: list of {start_ppq, end_ppq, pitch, velocity=100, channel=0}

insert_audio_file

Insert an audio file onto a track at the given position (seconds).

transport

Control REAPER's transport. action: play | stop | pause | record | goto_start | goto_position position: required when action == goto_position (seconds)

add_fx

Add an FX plugin to a track.

  • track_index: 0-based track index, or -1 for the master track

  • fx_name: any string REAPER's FX browser accepts ("ReaComp", "VST: Serum", etc.)

  • input_fx: True to add to the input FX chain

list_fx

List all FX plugins on a track (name, fx_index, n_params, enabled). Use track_index=-1 for the master track.

get_fx_params

Return all parameters for an FX plugin on a track. Each entry includes: param_index, name, value, min_value, max_value, normalized.

set_fx_param

Set an FX parameter by normalized value (0.0–1.0).

set_fx_enabled

Enable or bypass (disable) a specific FX plugin on a track.

remove_fx

Remove an FX plugin from a track's FX chain.

set_fx_preset

Load a named preset for an FX plugin on a track. preset_name can be:

  • A plain preset name or index-based name (for plugins with internal preset banks)

  • A full absolute file path to a .ffp/.fxp/.fxb file (FabFilter and others). Use the 'path' field from list_fx_presets() for file-based plugins. On failure, returns loaded=false with a failure_reason: 'preset_name_not_found' - name not in the plugin's preset list 'plugin_rejected_state' - plugin returned false despite the name existing 'plugin_has_no_presets' - plugin exposes no preset bank at all 'file_unreadable' - path given but file could not be opened

list_fx_presets

List available presets for an FX already on a track. Returns two lists:

  • factory_presets: presets exposed by the plugin itself (CLAP, VST3, VST2 banks). Each entry has {index, name, source='factory'}. These can be loaded by name with set_fx_preset().

  • file_presets: .ffp/.fxp files found on disk under standard vendor preset dirs. Each entry has {name, category, path, source='file'}. Load via the 'path' field.

get_tempo

Return the current BPM and time signature.

set_tempo

Set the project tempo (and optionally time signature).

  • bpm: beats per minute

  • time_sig_num / time_sig_denom: e.g. 3, 4 for 3/4 time

set_project_parameter

Set a named project parameter. Supported parameters: loop_start, loop_end, loop_enabled, cursor_position, playrate

save_project

Save the current REAPER project to disk.

render_time_selection

Render a time range to an audio file using REAPER's render pipeline.

  • output_path: absolute path including extension (e.g. '/tmp/mix.wav'). REAPER uses the current render format; set a .wav extension for PCM output.

  • start_time / end_time: seconds

  • sample_rate: 0 = use project rate

  • channels: 1=mono, 2=stereo Returns output_path and file_size_bytes so you can verify the file was written. After rendering, attach the file to this conversation so the audio can be heard.

analyze_track_loudness

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:

  • lufs_i: integrated loudness in LUFS

  • lufs_s_max: maximum short-term loudness in LUFS

  • lufs_m_max: maximum momentary loudness in LUFS

  • true_peak_db: true peak in dBTP

  • raw_stats: raw key=value string from REAPER for any additional fields

analyze_master_loudness

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:

  • lufs_i: integrated loudness in LUFS

  • lufs_s_max: maximum short-term loudness in LUFS

  • lufs_m_max: maximum momentary loudness in LUFS

  • true_peak_db: true peak in dBTP

  • raw_stats: raw key=value string from REAPER for any additional fields

normalize_track

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.

  • target_lufs: desired integrated loudness in LUFS (default -14.0, streaming standard). Use -23.0 for EBU R128 broadcast, -16.0 for podcast. Returns measured_lufs_i, gain_applied_db, and old/new fader volumes. The change is registered in REAPER's undo history.

undo

Trigger REAPER's undo. Returns the name of the action that was undone.

add_marker

Add a marker or region to the project.

  • position: time in seconds

  • is_region: True to create a region; also requires region_end

  • region_end: end time in seconds (only for regions)

  • color: REAPER color integer (0 = default)

list_markers

List all markers and regions in the project.

delete_marker

Delete a marker or region by its 0-based enumeration index (from list_markers).

open_project

Open a REAPER project file (.rpp) by its absolute path.

new_project

Create a new blank REAPER project (equivalent to File > New Project).

list_available_fx

List installed FX plugins (VST, VST3, CLAP, and JS/JSFX).

  • filter: optional case-insensitive substring to match against plugin name or type e.g. 'fabfilter', 'vst3', 'clap', 'rea', 'comp' Returns a list of {name, type} objects and a total count. type values: 'VST' (VST2), 'VST3', 'CLAP', 'JS'

create_track_send

Create a send from one track to another. Returns the new send index.

duplicate_time_range

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

  • start_time / end_time: seconds

  • repeat_count: how many copies to paste (default 1) Returns the new project end time after pasting.

remove_track_send

Remove a send from a track by its 0-based send index.

set_track_send

Set the volume and/or pan of a track send.

  • volume: linear amplitude (1.0 = 0 dB)

  • pan: -1.0 (full left) to 1.0 (full right)

set_track_input

Set the recording input for a track.

  • For audio: 0-based audio input channel index.

  • For MIDI: use REAPER's I_RECINPUT encoding (e.g. 4096 + channel*32 + device).

set_input_monitoring

Set input monitoring mode for a track.

  • mode: 0 = off, 1 = on, 2 = not when playing

get_envelope_points

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_point

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.

  • time: position in seconds

  • value: linear amplitude (Volume: 0.0=silence, 1.0=0 dB, 2.0=+6 dB max)

  • shape: 0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=bezier

  • tension: bezier tension (-1.0 to 1.0)

insert_envelope_point_at_beat

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.

  • bar: 1-based measure number (bar 1 = project start)

  • beat: 1-based beat within the bar, may be fractional (e.g. 2.5 = beat 2 and a half). Beat units follow the time-signature denominator (e.g. quarter notes in 4/4, eighth notes in 6/8).

  • value: linear amplitude (Volume: 0.0=silence, 1.0=0 dB, 2.0=+6 dB max)

  • shape: 0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=bezier Returns the resolved time in seconds alongside bar/beat for verification.

clear_envelope_points

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

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