Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_connection_statusA

Check whether REAPER is running and the Orpheus bridge loop is alive.

Call this first. Round-trips a real ping through the bridge and returns REAPER's version + latency, or a clear "not listening" message (rather than a mystery hang) if the in-REAPER script isn't running.

get_project_infoA

Tempo, time signature, length, track count, and transport state.

list_tracksA

The typed track tree: name, vol/pan, mute/solo, role, FX-chain names, item count.

get_track_midiA

Read a take's MIDI notes (pitch, start/duration in BEATS, velocity) + CC.

get_fx_paramsA

Decode an FX chain's parameters BY NAME (e.g. compressor ratio), not as opaque 0–1.

set_tempoA

Set the project tempo in BPM (downstream: seconds_per_beat = 60 / bpm).

set_time_signatureC

Set the project time signature.

play_stop_recordA

Transport control: 'play' | 'stop' | 'record', via Main_OnCommand action IDs.

create_trackA

Insert a named track and return its stable GUID (one composite bridge call).

set_track_volume_panA

Set fader/pan. Accepts fuzzy values ('-6dB', '+3', '50%', 'L50', 'center').

add_fx_by_nameA

Add an FX by fuzzy name, VALIDATED against the installed-plugin inventory.

On a no-match returns a graceful "not found — here's how to install it" message rather than silently loading the wrong plugin (the bug all three live servers have). Orpheus never auto-installs plugins.

set_fx_paramB

Set an FX parameter with name→index resolution (so 'ratio' works, not just index 7).

insert_midi_notesA

Batch-write notes into a take, PPQ/tempo-correct, in ONE bridge round-trip.

Notes are in beats (pitch, start_beat, duration_beats, velocity). Batched because per-note round-trips would hit the ~10 ops/sec file-IPC ceiling. Capped per call (see BridgeClient.MAX_NOTES_PER_CALL) so REAPER's audio thread never stalls.

create_midi_itemA

Create a MIDI item/take over a bar range; returns a stable take identity.

quantize_notesA

Quantize a take's notes to a grid (cleanup before/after analysis).

transpose_notesB

Transpose a take's notes — the APPLY verb for key/mode retargeting.

get_scale_notesC

MIDI notes for a key/mode so generated notes stay diatonic.

suggest_chord_progressionC

A genre-typical diatonic progression as Roman numerals + concrete MIDI.

constrain_to_keyC

Snap a proposed note set to the nearest in-key pitches before writing.

get_genre_profileA

A style's typical progressions / scales / BPM range / instruments / drum rhythms. The RECOMMEND-side lookup.

analyze_harmonyA

Detect key/scale/chords/Roman numerals/cadences.

Exports the project's MIDI, filters drum tracks (Krumhansl detection is garbage on beats), and runs music21. Always returns a confidence + alternatives; on drum-only or non-chordal material it hedges rather than inventing harmony.

analyze_grooveA

Compute swing%% and tightness from raw MIDI PPQ onset deviation off the grid. No existing DAW-MCP server provides this — a genuine Orpheus differentiator.

analyze_audio_characterA

Render stems/master to WAV and compute the post-FX sonic fingerprint: 3-band energy, spectral centroid, LUFS, true peak, crest factor, stereo width. (Sharper with the optional [analysis] extra / librosa.)

build_project_specA

Fuse symbolic + audio analysis into one CompositionSpec(current) + a plain-English report. The contract handed to recommend_changes.

list_style_fingerprintsA

List cached target fingerprints (e.g. 'classical', 'hiphop', 'dominic-fike-sunburn'). Each is the analysis pipeline run over 3–5 per-era reference tracks.

explain_styleA

"Why does this sound like X?" — run feature thresholds over the current project and return human-readable reasons (each matched threshold = one reason).

This is the v0.1 headline capability: understanding without transformation.

recommend_changesA

Diff the current project against a target fingerprint and return an EditPlan — a list of ProposedEdit{target, action, reason, params} across the v1 dimensions (tempo, key, harmony, instrumentation, mastering-match), each annotated with a human-readable reason. Read-only: surface these reasons to the user for approval, THEN call apply_changes. Includes honest caveats (detection confidence, taste calls).

apply_changesA

Execute an approved EditPlan: symbolic edits (transpose, rewrite progression MIDI, swap/add FX, retarget tempo, write grooved patterns), all wrapped in one Undo_BeginBlock/EndBlock so a single Ctrl+Z reverts everything.

Pass back the exact plan the user approved — do not re-derive it here.

apply_master_matchC

The spectral half: render the master → Matchering against the fingerprint's reference WAV → bake the matched curve onto a master-bus ReaEQ + limiter.

render_projectC

Headless render to WAV/MP3 (RENDER_FILE + format/bounds + Main_OnCommand(41824)).

render_stemsC

Render per-track stems by sequential solo — feeds analyze_audio_character.

render_and_auditA

Render, then measure LUFS/spectrum in one call so the agent self-checks ('loud enough? too bright?') and iterates without a human ear.

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/mal0ware/Orpheus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server