Orpheus
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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