-
Notifications
You must be signed in to change notification settings - Fork 2
Install
Build one binary, point your MCP client at it, and turn on REAPER's OSC device.
You need macOS, the Swift toolchain, REAPER, and an MCP client. The source is at github.com/systemblueio/DeadCat; clone it or download a release.
From the DeadCat source directory:
swift build -c releaseThe binary lands at .build/release/deadcat-reaper. Copy it somewhere stable before pointing a client at it, so a later clean build does not break the client's configuration:
install -m 755 .build/release/deadcat-reaper ~/.local/bin/deadcat-reaperThe extension bundle is the simplest Claude Desktop path: one file, installed inside the app, no configuration edits.
sh distribution/buildBundle.shThe script builds the release binary, validates the bundle, and writes dist/deadcat-reaper.mcpb. In Claude Desktop, open Settings, then Extensions, then Advanced settings, choose Install Extension, and pick the .mcpb file.
The same server can be added through the configuration file instead. Add it to claude_desktop_config.json and restart Claude Desktop. To remove it later, delete the block and restart.
{
"mcpServers": {
"deadcat-reaper": {
"command": "/absolute/path/to/deadcat-reaper",
"args": ["--host", "127.0.0.1", "--port", "8000"]
}
}
}Add the server from your terminal.
claude mcp add deadcat-reaper -- \
~/.local/bin/deadcat-reaper \
--host 127.0.0.1 --port 8000To remove it later: claude mcp remove deadcat-reaper.
DeadCat speaks standard MCP over stdio, so any MCP client can run it. Point the client at the binary with the same two arguments:
command: /absolute/path/to/deadcat-reaper
args: --host 127.0.0.1 --port 8000
The package also builds deadcat, a terminal command that exposes the same tool surface as one-shot commands, with no MCP client involved. Commands are named after the tools with the reaper_ prefix dropped:
deadcat help # the command list
deadcat set-track-volume 3 0.7 # required arguments are positional, in schema order
deadcat set-tempo --bpm 104 # or passed by name
deadcat get-session-state # read commands answer as JSONIt takes the same --host, --port, and --feedback-port options as the server, with the same defaults. The read commands bind the feedback port for the length of the call, so they cannot run while a server instance holds it; the command says so when that happens.
Add the OSC device in REAPER, under Options, then Preferences, then Control/OSC/web:
- Control surface mode: OSC (Open Sound Control)
- Mode: Configure device IP+local port
- Local listen port: 8000, to match
--port - Device IP 127.0.0.1 and device port 9001, so the read tools receive REAPER's feedback
- Pattern config: Default
The feedback listener defaults to port 9001; set --feedback-port to change it.
reaper_insert_media needs one more piece: the DeadCat bridge script, installed once. Copy scripts/reaper/deadcat_bridge.lua into REAPER's Scripts folder (~/Library/Application Support/REAPER/Scripts/ on macOS). Quit REAPER fully: it rewrites reaper-kb.ini on exit, so an edit made while it runs is silently lost. Append this line to reaper-kb.ini in the same folder, and relaunch REAPER. Every other tool works without it.
SCR 4 0 RSdeadca7b41d6e0000000000000000000000000 "Custom: deadcat_bridge.lua" deadcat_bridge.lua
Ask your assistant to start playback. If the transport in REAPER responds, the control path works; ask where a track is panned to confirm the feedback path. If nothing happens, check that the port numbers in the REAPER device match the server arguments.
Only one feedback listener can own port 9001 at a time. A second server instance reports the port as taken and runs write-only; a read command run while a server holds the port says so and exits.
DeadCat is built by systemBlue. Repo · Releases · Discussions
The DAW
The servers
Reference
Policies