Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REAPER_MCP_DEBUGNoSet to 1 to enable Lua request log
REAPER_MCP_IPC_DIRNoMailbox override (must match on both sides)
REAPER_MCP_TIMEOUTNoDefault 10s10s

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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
statusA

Check the Lua bridge and return project tempo, play state, tracks, any_solo, master_mute and dirty (unsaved changes). Call first; clear a lingering solo before rendering. detail=true adds arrangement facts (time signature, length in beats, markers, MIDI vs audio per track) without guessing chords.

transportC

Playback control. action: play, stop, pause, record, toggle_repeat, goto_start.

trackB

Track operations. action: list | add | delete | update | bus. update uses name, volume_db, pan (-1..1), mute, solo. bus creates a submix named name and routes source_indices through it (their direct send to the master/parent is turned off).

midiB

MIDI on a track item. Times are absolute project beats. action: create_item | add | get | replace | update | delete | cc. replace rewrites the whole take in one undo step; add only appends. cc inserts CC (cc+value) or program change (program) via ccs[]. get omits index (use array offset), channel if 0, muted/selected if false.

fxB

Track FX. action: list | add | params | set | delete | bypass | move | preset. track_index -1 is the master. set takes value 0..1 (REAPER normalized) or formatted: the value as the plugin displays it (number in its unit, e.g. -18 for dB, 4 for 4:1, 120 for ms; or a label like "3.2k"), resolved by searching the display text. set returns the formatted value actually set.

sendB

Track sends. action: list | add | delete | update. track_index is the source (-1 master). dest_index is the destination track. add/update take volume_db, pan, mute, mode (post_fader | pre_fader | pre_fx) and channel routing: src_channel / dst_channel = first channel of the stereo pair, 0-based (dst_channel 2 = channels 3/4, a compressor's sidechain input; the destination's channel count is raised to fit).

itemB

Media items on a track. action: list | update | import. fade_in / fade_out are seconds (REAPER native). position/length are beats. import uses a path already on the REAPER host; as_new_track=true makes new tracks.

envelopeB

Track envelopes. action: list | get | set. name is REAPER envelope name (Volume, Pan, Mute, ...). set replaces all points. value is the envelope's value; Volume is linear gain (1.0 = 0 dB, 0.5 = -6 dB), also on fader-scaled envelopes. unit=db reads/writes volume-type envelopes (Volume, Trim Volume, send Volume) in dB. set re-activates an envelope left inactive (ACT 0).

projectB

Project-level edits. action: tempo | time_signature | time_selection | marker | save. save with path creates missing folders and writes a copy (no dialog); an untitled project adopts that path. save without path needs an already-named project.

renderA

Render. No undo. Long timeout. bounds: project | time_selection | custom | items. Default: the master mix. stems=true renders the selected tracks as stems instead (pass track_indices to select them). path is the output folder; the file name comes from pattern. Sets all media online (action 40101) first unless media_online=false. Refuses when a target file already exists (REAPER's overwrite prompt would hang the bridge) and when tracks are soloed (pass allow_solo=true, or solo_indices / mute_indices to solo/mute tracks for this render only; they are restored afterwards). Returns files [{path, bytes, length_sec, peak_db, lufs_i}] and warnings (near-silent, missing file, master muted); measure=false skips the loudness scan.

actionB

Run a REAPER Main_OnCommand by numeric command id.

reaper_callB

Call any ReaScript function by name. Pointers come back as {"__handle":"hN"} and can be passed back in. Example: func=CountTracks args=[0].

run_luaA

Run a Lua snippet inside REAPER (reaper in scope). Use return to send a value. Best for multi-step work that would otherwise be many round-trips. Errors carry the failing line. timeout (seconds, default 10, max 600) is for slow work; REAPER is frozen meanwhile, so start long host commands in the background (io.popen('cmd > log 2>&1 &')) and poll instead.

batchA

Many operations in one IPC hop. Each call is {func, args} or {func, code} or {func, arguments} for a grouped tool name (track/midi/fx/...). Each slot is the inner result, or {error}. One failure does not abort the rest. Handles from earlier calls work later.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 14 tools

Disambiguation3/5

Most tools are grouped by clear resource domains, but several advanced tools overlap conceptually: run_lua, reaper_call, action, and batch all provide ways to execute commands or snippets. There is also mild overlap between item/midi creation and track.bus/send routing, though the descriptions generally clarify the intended use.

Naming Consistency4/5

Tool names consistently use lower_snake_case and mostly follow a resource-oriented pattern with an action parameter. The exceptions (run_lua, reaper_call, status, batch, action, transport) are readable but prevent a perfect verb_noun-style consistency score.

Tool Count5/5

Fourteen tools is well-scoped for a DAW control server. The grouped action-based tools keep the surface compact while covering tracks, items, MIDI, FX, sends, envelopes, project settings, rendering, and transport.

Completeness5/5

The surface covers the major project lifecycle operations, including status inspection, track and item editing, MIDI, FX, routing, automation, rendering, saving, and transport. The presence of run_lua, reaper_call, action, and batch provides escape hatches for operations not exposed directly, avoiding dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues