Skip to content

How It Works

systemBlue edited this page Jun 11, 2026 · 1 revision

How it works

Your MCP client calls a DeadCat tool. The server validates the arguments, maps the call to OSC, and sends it to REAPER over a local UDP port; feedback returns on a second port.

MCP client            deadcat server            REAPER
(Claude Code,         validate the call,        the session
 Claude Desktop)      map it to OSC

     │   tool call         │    OSC / UDP :8000     │
     ├────────────────────►├───────────────────────►│
     │                     │                        │
     │   session state     │   feedback / UDP :9001 │
     ◄────────────────────┤◄───────────────────────┤
                     session cache

DeadCat installs no plugins and nothing sits in your signal chain; the one exception is an optional ReaScript that reaper_insert_media uses, because OSC has no media-item commands. REAPER applies each message the same way it applies input from a hardware control surface.

Scope and privacy

  • Everything runs on your machine. The two local UDP ports are the only network access.
  • DeadCat never processes or accesses your audio.
  • No telemetry, no accounts, no cloud services.
  • The server has zero third-party dependencies.

The read path

Write tools change the session; read tools report it. Without the read tools, the assistant can set a fader but cannot report the current value or confirm that a change was applied. The read tools answer from a session cache fed by REAPER's OSC feedback stream, so a request like "bring the vocal down" can be carried out as a sequence: read the current level, change it, and read it back.

Write confirmation

Each write tool confirms itself before reporting success. After sending a command, the server asks REAPER to refresh all control surfaces, waits for the feedback burst to settle, then reads the relevant value back from the session cache and checks that it matches what was sent. If the value does not match within the timeout, the tool reports a failure instead of a false success. This means a "track volume set" result reflects what REAPER actually applied.

Clone this wiki locally