Orpheus

Orpheus

An AI agent that analyzes and transforms music projects in REAPER, explaining why it sounds a certain way and reshaping it toward a desired style through natural language interaction.

Category
Visit Server

README

🎡 Orpheus

An AI agent that doesn't just build music in REAPER β€” it listens to what you've made, tells you why it sounds the way it does, and reshapes it toward the sound you want.

"Why does this beat sound like Dominic Fike?" Β· "Make this sound Classical." Orpheus analyzes your project, recommends concrete changes with reasons, and β€” on your approval β€” applies them as real, editable tracks. One Ctrl+Z undoes the whole thing.

🚧 Status: early (pre-alpha), and moving. What's built + tested today: the full architecture, a documented analysis of the entire Reaper/DAW-MCP frontier, the music-theory core, and β€” as of M0 β€” the REAPER bridge: the AI can connect to a live REAPER and round-trip commands (proven by Python + Lua + cross-language integration tests). What's still stubs: the analysis and apply tools (M1–M3 on the roadmap). So it connects and is wired end-to-end, but doesn't compose or transform yet. The first feature release (v0.1) ships the understand-and-explain half; the transform half follows in v0.3. Star/watch to follow along. ⭐

Orpheus is an MCP server. It plugs into any MCP-compatible client (Claude Desktop, Cursor, Claude Code) and gives the model a set of tools to read, reason about, and edit a live REAPER session.


Why Orpheus exists

There is a thriving ecosystem of MCP servers that let an AI build music in a DAW by natural language. After reading the source of the leading projects (see docs/frontier-analysis.md), one gap is unmistakable:

The "build me a track" half is solved and even viral. The "look at my track, explain it, and improve it toward a reference" half is completely unclaimed.

No shipping server can look at your existing project, reason over both its composition and its sound, propose reasoned changes toward a target style, and apply them back as editable tracks. That loop β€”

ANALYZE  β†’  RECOMMEND (with reasons)  β†’  [you approve]  β†’  APPLY  β†’  VERIFY

β€” is Orpheus's entire reason to exist.

How it's different from what's out there

Capability Control servers (shiehn, xDarkzx, Ableton-MCP) Analysis servers (dschuler36) Mix-match tools (Matchering, Ozone) Neural "genre changers" Orpheus
Build a track from NL βœ… β€” β€” β€” βœ…
Read the current project's harmony β€” partial (MIDI-blind) β€” β€” βœ…
Explain why it sounds like X β€” objective warnings only β€” β€” βœ…
Recommend changes with reasons β€” β€” β€” β€” βœ…
Human approval gate β€” n/a β€” β€” βœ…
Apply changes as editable tracks fire-and-forget β€” audio only ❌ (baked WAV) βœ…
Match harmony / instrumentation, not just EQ β€” β€” β€” βœ… (unexplained) βœ…

Orpheus is the first to make a single CompositionSpec the contract for an analyze β†’ recommend β†’ apply loop over an existing project. The compositional dimensions (key, harmony, instrumentation) are where it's genuinely first; the mix/master dimension it assembles from solved parts (it vendors Matchering).


The north-star demo

You:      (open an 8-bar beat in REAPER) "Make this sound Classical."

Orpheus:  Analyzing… detected A minor (confidence 0.71), 120 BPM, a i–iv vamp,
          drum-forward mix, low band +8 dB hotter than the classical reference.

          Here's my plan (each change, and why):
            1. 120 β†’ ~70 BPM        β€” classical phrasing breathes slower
            2. transpose to A minor β€” keep your tonal center, lean modal
            3. i–iv  β†’  ii–V–i with a secondary dominant β€” functional harmony is the
                                                            classical signature
            4. add a Strings track   (from your installed FX) β€” idiomatic voice
            5. master-match tonal balance to the reference β€” cut ~3 dB at 120 Hz

          Apply all 5?  [you approve]

Orpheus:  Done β€” wrapped in one undo block. Re-rendered and re-measured:
          now within 1.2 dB of the reference across all three bands.

Every line of "here's why" is a real diff between your project and a cached style fingerprint β€” not a vibe.


Architecture (one paragraph)

Orpheus is an external Python FastMCP server. It never calls REAPER's API directly. Instead it speaks to a single hardened file-based JSON bridge watched by a persistent Lua ReaScript loop inside REAPER β€” the same dependency-free transport the most comprehensive existing server ships, hardened with a heartbeat lock-file, atomic writes, static dispatch, and per-call note caps. The model talks in beats, never ticks; all PPQ/tempo math lives inside the bridge. Read-only analyze_* tools build a CompositionSpec of your current project; recommend_changes diffs it against a style fingerprint into a reason-annotated EditPlan; a separate, destructiveHint-flagged apply_changes executes the approved plan in one undo block. Full detail: docs/architecture.md.

Why not python-reapy or OSC? REAPER's OSC can't pass arguments to custom actions, so it literally cannot create tracks or write MIDI notes. python-reapy is effectively unmaintained (documented REAPER 7 / Python 3.13 failures) and its distant API throttles to ~30–60 calls/sec. The in-REAPER Lua bridge sidesteps both. This is a deliberate divergence from the most-starred prior art β€” see the architecture doc for the full justification.


Install

Not yet published. These are the planned one-line install paths once v0.1 is on PyPI.

# 1. Run the server (no clone needed, once published)
uvx orpheus-mcp

# 2. Load the in-REAPER bridge script (one-time)
#    Copies orpheus_bridge.lua into REAPER's Scripts folder and tells you how to run it.
orpheus-mcp install-bridge

Then add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "orpheus": { "command": "uvx", "args": ["orpheus-mcp"] }
  }
}

Restart Claude Desktop, open a project in REAPER, run the Orpheus bridge action, and ask Claude to "check the Orpheus connection." Full per-OS steps: docs/installation.md.


Roadmap

Orpheus ships in honest milestones (full detail + the "why this order" in docs/roadmap.md):

Milestone What works Scale
M0 Hardened bridge + FastMCP scaffold + get_connection_status foundation
M1 Build/modify correctly: tracks, transport, FX, PPQ-correct MIDI construction core
M2 Understand a project: harmony, groove, audio character, theory scaffolding β†’ v0.1: it explains your track
M3 Transform: recommend_changes + gated apply_changes + style fingerprints β†’ v0.3: the differentiator
M4 NL ergonomics + generate-from-scratch composers polish
M5 Docs, PyPI, MCP Registry, the launch demo ship
M6 Reach: MIDI recording, audio→reference ingest, groove transfer post-launch

v0.1 (weeks) explains; v0.3 (months) transforms. The full loop is a real build, scoped honestly.


Standing on shoulders β€” credits

Orpheus deliberately aggregates the best of a generous open-source ecosystem rather than reinventing it. Full per-project analysis with citations in docs/frontier-analysis.md.


License

MIT Β© 2026 Mal0ss. Orpheus reimplements patterns from the projects above; it does not copy GPL-licensed source.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured