Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for REAPER MCP

Pod holds 8 of 8 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to REAPER MCP.

Most discussed

Measured: the 1000-probe scan costs 26.8% of a core idle; reaper.file_exists is 1.26x cheaper

process_request already carries a TODO about the fixed 1000-probe scan, and the reasoning there is right, including why reaper.EnumerateFiles was reverted in 1.6.1. This is not a new bug report — it is the measurement that comment is missing, plus one lever that does not require touching the protocol.

Measured in REAPER's own Lua

Against the real, empty mailbox, min-of-12 runs, REAPER 7.78/x64, Windows 11:

ms per tick
io.open × 1000 (what the bridge does today) …

Read the thread · 2026-08-08 · closed · outside contributor · 3 comments

File transport falls back to unslotted writes whenever the version probe has no verdict, and the response carries no request id to catch the collision

Two things that are individually defensible combine into cross-talk: the fallback path in reaper_call_file writes without claiming a slot, and the response wait has nothing to check the answer against.

The fallback is entered on "no verdict", not just on "old bridge"

reaper_call_file uses the pre-1.6.6 single-shot write whenever _bridge_check["claims_ok"] is false (reaper_mcp_server.py:311). That flag is only ever set true inside the one branch of ensure_bridge_current() where…

Read the thread · 2026-08-21 · closed · outside contributor · 2 comments

render_project rewrites six project render settings and never restores them

RenderProject in the bridge writes six project render settings and restores none of them (reaper_mcp_bridge.lua, around lines 5948–5963):

reaper.GetSetProjectInfo_String(0, "RENDER_FILE",    dir,  true)
reaper.GetSetProjectInfo_String(0, "RENDER_PATTERN", base, true)
reaper.GetSetProjectInfo_String(0, "RENDER_FORMAT",  "evaw", true)   -- when ext is .wav
reaper.GetSetProjectInfo(0, "RENDER_SETTINGS",   0, true)
reaper.GetSetProjectInfo(0, "RENDER_BOUNDSFLAG", 0 or 1, true)…

[Read the thread](https://github.com/TwelveTake-Studios/reaper-mcp/issues/12) · 2026-08-08 · closed · outside contributor · 2 comments

### Hardcoded 5s FILE_TIMEOUT makes any render report a failure that did not happen

`FILE_TIMEOUT` is hardcoded at 5.0s (`reaper_mcp_server.py:129`) and is the only transport knob that is not env-configurable — `REAPER_HOST`, `REAPER_PORT`, `REAPER_BRIDGE_DIR` and `REAPER_COMM_MODE` all are.

That would just be an inconvenience, except that the bridge renders **synchronously**:

```lua
-- reaper_mcp_bridge.lua, RenderProject
reaper.Main_OnCommand(42230, 0)   -- blocks for the whole render
response.ret = true               -- response written only afterwards

So…

Read the thread · 2026-08-08 · closed · outside contributor · 2 comments

Possible bugs in reaper_mcp_server.py preventing startup and MIDI tools from working

Hey! Love this project. I was setting it up and ran into a few issues that might be bugs. Sharing in case it helps others or if I'm misunderstanding something.

1. Server restart loop

It seems like line 16 in reaper_mcp_server.py sets __name__ = "twelvetake-reaper-mcp", which I think overwrites Python's built-in __name__ variable. That means if __name__ == "__main__": on line 2180 never evaluates to true, so main() never gets called. The server exits immediately and the MCP…

Read the thread · 2026-03-28 · closed · outside contributor · 2 comments

insert_audio_file inserts on wrong track in bridge 1.7.5 and reports failure; one-line fix tested

Summary

On Windows, insert_audio_file can insert a readable WAV on a different track from the requested track_index, while returning ok: false and a misleading missing-file/unsupported-format error.

Adding reaper.Main_OnCommand(40914, 0) immediately after reaper.SetTrackSelected(track, true) in the bridge's InsertAudioFile function resolved the observed wrong-track behavior locally. A subsequent six-line alternating-track dialogue succeeded.

Environment

Read the thread · 2026-09-28 · closed · outside contributor · 1 comment

Lua JSON decoder drops JSON \uXXXX escapes (Chinese/Unicode paths become u53ef...)

Bug

decode_json in reaper_mcp_bridge.lua does not implement JSON \uXXXX unescaping.

Python json.dumps (default ensure_ascii=True) encodes non-ASCII as \u53ef\u60dc.... The decoder then does:

s = s:gsub('\\(.)', function(c) return escapes[c] or c end)

\u is not in the escape table, so the backslash is dropped and the letter u is kept. The codepoint digits stay. Result: the string for 可 arrives in REAPER as the literal ASCII u53ef.

On Windows this wrote broken…

Read the thread · 2026-09-09 · closed · outside contributor · 1 comment

version stuck at 1.6.5 since the 1.6.6 release — --version and the startup banner under-report by two releases

reaper_mcp_server.py:15 hardcodes __version__ = "1.6.5". pyproject.toml is at 1.6.7. The two tracked each other exactly up to 1.6.5 and then diverged:

tag pyproject.toml __version__
v1.6.4 1.6.4 1.6.4
v1.6.5 1.6.5 1.6.5
v1.6.6 1.6.6 1.6.5
v1.6.7 1.6.7 1.6.5

So the bump was missed in both of the last two releases, not just the most recent one.

Why it's worth fixing rather than shrugging at

__version__ is not…

Read the thread · 2026-08-21 · closed · outside contributor · 1 comment

Most recent

The remaining reports are on the project's issue tracker.