Roku MCP
MCP server for Roku device automation — deploy, ECP control, screenshots, and debug console
Connector by jack1590 · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/jack1590-rokumcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 17 read · 14 write · 2 delete · 9 not yet classified
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 42
Read from the source code; the running server may list different tools.
Read 17 · Look things up without changing anything.
analyze_bsprofanalyze_perfettobsprof_infocompare_bsprofcompare_perfettoroku_console_capture_statusroku_console_readroku_discoverroku_find_noderoku_get_focused_noderoku_get_valueroku_query_active_app
Show 5 more tools
roku_query_app_uiroku_query_device_inforoku_query_media_playerroku_query_sg_nodesroku_screenshot
Write 14 · Create, change, send or run things.
roku_console_disconnectroku_console_sendroku_create_noderoku_deployroku_edit_noderoku_focus_noderoku_keypressroku_keypress_sequenceroku_move_noderoku_perfetto_enableroku_perfetto_startroku_perfetto_stop
Show 2 more tools
roku_set_node_visibleroku_type_text
Delete 2 · Delete, drop, revoke or wipe things.
roku_delete_dev_channelroku_remove_node
Not yet classified 9 · We could not tell from the name and description.
query_perfettoroku_console_capture_startroku_console_capture_stoproku_console_connectroku_console_waitroku_diagnose_streamroku_launchroku_observe_fieldroku_sleep
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
ROKU_DEVICE_PASSWORD
Other settings (environment variables or headers).
ROKU_DEVICE_HOST
Network hosts it talks to 3
developer.roku.com· found in codegithub.com· found in codeui.perfetto.dev· found in code
Files it touches
- Any path the agent passes to its tools
Tools (42)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
analyze_bsprofAnalyze a BrightScript Profiler (.bsprof) file from a Roku device. Supports memory leak detection, CPU hot-path analysis, combined full reports, and one-page summaries. Returns structured JSON.
analyze_perfettoAnalyze a Roku Perfetto trace file (.trace). Returns structured JSON with AI-friendly suggestion fields for each analysis area. Requires the trace_processor binary (auto-downloaded on first use). Modes: summary (full report), frame-drops, key-events, observers, rendezvous, set-fields, threads.
bsprof_infoGet header metadata from a .bsprof file without full analysis — target name, device model, firmware, format version, duration, file size, and enabled features. Reads only the header/footer, so it is instant even on multi-hundred-MB profiles.
compare_bsprofCompare two BrightScript Profiler (.bsprof) files to detect regressions, improvements, new memory leaks, resolved leaks, and CPU time deltas between runs.
compare_perfettoCompare two Roku Perfetto trace files to detect performance regressions and improvements. Returns metric deltas for frame drops, key events, observers, rendezvous, and setField calls.
query_perfettoRun a raw PerfettoSQL query against a Roku Perfetto trace file. Use for custom analysis beyond the built-in modes. Common queries: SELECT * FROM slice WHERE name = 'swapBuffers' ORDER BY dur DESC; SELECT * FROM slice WHERE name = 'keyEvent' ORDER BY dur DESC;
roku_console_capture_startStart recording the BrightScript debug console (port 8085) to a file, keeping the connection open until roku_console_capture_stop. Output from before the capture (the console replays the previous session on connect) is skipped. Console text is never returned; use roku_console_wait to detect lines. Port 8085 accepts a single client: detach the VS Code BrightScript debugger first.
roku_console_capture_statusReport whether a console capture is active, its file, bytes and line count.
roku_console_capture_stopStop the active console capture, flush and close the file. Returns file path, bytes and line count.
roku_console_connectOpen a persistent TCP connection to the BrightScript debug console on port 8085. Only one connection is active at a time.
roku_console_disconnectClose the active BrightScript debug console connection.
roku_console_readRead buffered output from the BrightScript debug console since the last read. Automatically disconnects after reading.
roku_console_sendSend a command to the BrightScript debug console and return the response. Automatically disconnects after receiving the response. Common commands: bt (backtrace), var (variables), cont (continue), step, over, out, exit, print <expr>.
roku_console_waitWait until a console line matching a regex appears in the active capture (see roku_console_capture_start). Returns line number, timestamp and a short redacted preview; the full line is in the capture file. Resolves early with reason "waiting_for_debugger" if the channel is blocked waiting for the VS Code debugger (redeploy it with roku_deploy).
roku_create_nodeCreate a new SceneGraph node at runtime and append it as a child of an existing node via RTA createChild. Subtype must be a SceneGraph node type registered for the running scene (e.g. Label, Rectangle, Poster, Group).
Show 27 more tools
roku_delete_dev_channelDelete the currently sideloaded developer channel from the Roku device.
roku_deploySideload (deploy) a Roku application to the device. Packages all files in the project directory and uploads them. A dev channel must not already be running, or it will be replaced.
roku_diagnose_streamDiagnose why an HLS/DASH stream fails on Roku specifically by correlating the evidence you already have. Provide any combination of: the Video node error the device reported (errorInfo, as JSON or pasted log text), the manifest (a url to fetch, or pasted m3u8/mpd content), and a Charles/HAR HTTP capture file. The tool cross-references them into ranked root-cause findings (e.g. "errorCode -6 DRM + a 403 license POST = license server rejected the Roku request"). No Roku device is required for this. Optionally set captureLive=true (with host+password) to deploy a bundled StreamProbe harness and c…
roku_discoverScan the local network for Roku devices using SSDP discovery. Returns a list of all found devices with their IP addresses.
roku_edit_nodeEdit a SceneGraph node on the running dev channel at runtime by setting one or more fields. Uses the roku-test-automation (RTA) On-Device Component on TCP port 9000 — the same backend the SceneGraph Inspector in the vscode-brightscript-language extension uses. Requires RTA to be present in the running channel (see README "Runtime UI Editing"). nodeId can be either a `uiElementId` like "RTA_1773" (as shown by roku_query_sg_nodes) or a BrightScript scene-level `id`. Common fields: visible (boolean), translation ([x,y]), text (string), color (hex like "0xRRGGBBAA"), opacity (number 0..1).
roku_find_nodeSearch the app UI tree for a node by its ID or attribute value. Returns the matching node with all its properties (text, visible, focused, subtype, bounds, etc.). Only works when a sideloaded dev channel is running.
roku_focus_nodeSet focus on a SceneGraph node by id via RTA focusNode.
roku_get_focused_nodeGet the currently focused node in the app UI tree. Returns the node with all its properties (id, subtype, text, bounds, etc.). Only works when a sideloaded dev channel is running.
roku_get_valueRead a field value from a SceneGraph node at runtime via RTA getValue. Returns the value as JSON. Pass either nodeId+field, or a full keyPath like "MainScene.rowList.0.title".
roku_keypressSend a single key press to the Roku device via ECP. Common keys: Home, Rev, Fwd, Play, Select, Left, Right, Down, Up, Back, InstantReplay, Info, Backspace, Search, Enter, Lit_<character>
roku_keypress_sequenceSend a sequence of key presses to the Roku device with an optional delay between each press.
roku_launchLaunch or deep-link into a channel on the Roku device. Use appId "dev" for the sideloaded developer channel.
roku_move_nodeMove a SceneGraph node to a new position by setting its `translation` field to [x, y].
roku_observe_fieldWait for a SceneGraph field to change (or match a specific value) via RTA onFieldChangeOnce. Returns when the observer fires or the timeout elapses. Great for "wait until video starts playing" style assertions.
roku_perfetto_enableEnable Perfetto tracing for a Roku channel via ECP. Tracing starts automatically on each app launch. Requires Roku OS 15.1+. There is no disable command — enabled channels are cleared on reboot.
roku_perfetto_startStart recording a Perfetto trace from the Roku device. Opens a binary WebSocket to stream trace data to a local file. Only one recording session at a time. Call roku_perfetto_enable first.
roku_perfetto_stopStop the active Perfetto trace recording. Returns the file path, size, and duration. The resulting .trace file can be opened at https://ui.perfetto.dev/ or analyzed with analyze_perfetto.
roku_query_active_appQuery the currently active (foreground) app on the Roku device.
roku_query_app_uiGet the current app UI tree as XML. Only works when a sideloaded dev channel is running.
roku_query_device_infoQuery the Roku device for its info: model, firmware version, serial number, network info, etc.
roku_query_media_playerQuery the media player state on the Roku device. Returns playback state (play, pause, buffer, stop, none), position, duration, and error info. Use this to verify video playback in tests.
roku_query_sg_nodesQuery SceneGraph nodes on the Roku device. Use type "all" for all nodes, "roots" for root nodes, or "node" with a nodeId to inspect a specific node.
roku_remove_nodeRemove a SceneGraph node from its parent at runtime via RTA removeNode.
roku_screenshotCapture a screenshot of the current screen on the Roku device. A sideloaded dev channel must be running. Returns the image as base64-encoded content and the file path where it was saved.
roku_set_node_visibleShow or hide a SceneGraph node by id via RTA setValue on the `visible` field.
roku_sleepWait for a specified duration. Use this between navigation steps to allow the UI to render, animations to complete, or content to load.
roku_type_textType a text string into the currently focused text field on the Roku device. Each character is sent as an individual Lit_ keypress. Use this for search fields, email inputs, password fields, etc.
Signals
- Stars
- 4
- Forks
- 3
- Open issues
- 0
- Last commit
- Oct 15, 2026 (13 days ago)
- Last release
- Oct 12, 2026 (17 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.jack1590/RokuMCP- Version
- 1.3.2
- Auth
- API key
- Packages
- npm roku-mcp
- License
- License unknown
- Repository
- github.com/jack1590/RokuMCP
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from jack1590
- 0.604score
install
jack1590
Install and configure the roku-mcp plugin (Claude Code or Cursor) against a Roku dev device.
SkillAFreshness: A★ 4Claude Code +9 - 0.604score
deploy-debug
jack1590
Sideload a Roku BrightScript/SceneGraph app to a dev device, redeploy after changes, and read the BrightScript debug console for crashes and prints.
SkillAFreshness: A★ 4Claude Code +9 - 0.604score
runtime-ui-editing
jack1590
Edit a running Roku SceneGraph UI at runtime through the RTA On-Device Component (port 9000) using roku_edit_node, roku_get_value, roku_set_node_visible…
SkillAFreshness: A★ 4Claude Code +9 - 0.601score
ecp-control
jack1590
Drive a Roku with simulated remote input and inspect the running app via ECP (keypress, type text, SceneGraph tree, focused node, media player state).
SkillAFreshness: A★ 4Claude Code +9 - 0.599score
perfetto-tracing
jack1590
Record and analyze Perfetto traces from Roku devices (Roku OS 15.1+) to find frame drops, scene-graph rendering cost, observer storms, rendezvous timing, and…
SkillAFreshness: A★ 4Claude Code +9 - 0.599score
stream-diagnosis
jack1590
Diagnose why an HLS or DASH stream fails on Roku, using roku_diagnose_stream to correlate the Video node errorInfo, the manifest, a Charles or HAR capture…
SkillAFreshness: A★ 4Claude Code +9
Cite this page
Roku MCP. Agent Mart. https://agentmart.dev/connectors/jack1590-rokumcp (last updated 2026-10-24)