MCP tools
Devices
| Tool | Description |
|---|---|
| list_devices | List Roku devices from the SDK device store, LAN and Roku Cloud Emulator (kind). |
| get_device_ip | Return IP address of the active Roku device. |
| get_device_dev_id | Return the keyed developer ID registered on a Roku device. |
| device_start | Start a stopped Roku Cloud Emulator (RCE) device so other tools can deploy to and drive it. |
| device_stop | Stop a Roku Cloud Emulator (RCE) device that device_start started on this rk server, and wait until it has stopped. |
| add_device | Add a new Roku device to the device store. |
| update_device | Update properties of an existing Roku device. |
| remove_device | Remove a Roku device from the device store. |
| activate_device | Set a specific Roku device as the active device. |
| clear_active_device | Clear the active flag from all Roku devices. |
| update_default_auth | Update default authentication credentials for all devices. |
| device_reboot | Reboot a Roku device using POST /plugin_swup with mysubmit=Reboot. |
| device_check_update | Trigger software update check via POST /plugin_swup with mysubmit=CheckUpdate. |
Build and deploy
| Tool | Description |
|---|---|
| build_app | Build a Roku app at a given project root. |
| deploy_app | Deploy a Roku application (non-watch) to a device. |
| sideload_app | Sideload a pre-built Roku app to a device without rebuilding. |
| get_roku_config | Return current Roku configuration from roku-config.ts. |
| stop_dev_session | Stop an active rk dev watch session on the rk server (equivalent to DELETE /api/dev/:sessionId). |
Packaging and DCL
ECP and screen
| Tool | Description |
|---|---|
| ecp | Execute External Control Protocol (ECP) commands against a Roku device. |
| capture_screen | Take a screenshot of the Roku device screen. |
Logs
| Tool | Description |
|---|---|
| logs | Manage Roku log sessions and fetch buffered logs. |
| decode_stack_trace | Decode a Roku TypeScript stack trace from Hermes bytecode (index.hbc) or JS bundle (index.js) to original TypeScript source locations. |
Perfetto
| Tool | Description |
|---|---|
| perfetto_enable | Enable Perfetto tracing on a Roku device for a channel. |
| perfetto_start | Start a Perfetto trace session on the target device. |
| perfetto_stop | Stop a previously started Perfetto trace session. |
Debugging
| Tool | Description |
|---|---|
| debug_session_create | Create a unified debug session for a Roku app, optionally spanning both the TypeScript/Hermes runtime (CDP, port 9999) and the BrightScript runtime (DAP, port 8081). |
| debug_session_end | End an active unified debug session, tearing down both the CDP and DAP backends (whichever are active). |
| debug_session_status | Report the status of a unified debug session: overall state, and per-backend connection state, negotiated protocol version (DAP), and thread count. |
| debug_session_update | Toggle flags on an active debug session, or trigger a full rebuild. |
| debug_stacktrace | Get the current BrightScript call stack for a stopped thread, wrapping the device's STACKTRACE command over Roku's socket-based BrightScript debug protocol (TCP 8081) -- NOT the Microsoft Debug Adapter Protocol. |
| debug_state | Unified replacement for cdp_debugger_state -- returns a top-level paused flag plus, per active runtime, the current call stack (and for TypeScript, scope summaries). |
| debug_eval | Evaluate an expression on the debugged Roku app, routing to CDP (Hermes/TypeScript) or DAP (BrightScript) depending on the session's active backend(s) and the optional runtime parameter. |
| debug_breakpoint_set | Sets a breakpoint, routed by the file's extension: .ts/.tsx/.js/.jsx go to the TypeScript/CDP debugger, .brs/.xml go to the BrightScript/DAP debugger (Roku's own socket-based debug protocol on port 8081 -- NOT Microsoft DAP). |
| debug_breakpoint_remove | Removes a breakpoint previously set by debug_breakpoint_set, routed automatically to whichever backend (CDP or DAP) it was originally set on. |
| debug_breakpoints_list | Lists every breakpoint tracked for the session -- both TypeScript/CDP line breakpoints and BrightScript/DAP line and exception breakpoints, in one unified list. |
| debug_exception_breakpoints_set | Sets which BrightScript exception categories should stop the app (SET_EXCEPTION_BREAKPOINTS, DAP-only, requires BrightScript debug protocol >= 3.3.0 -- check debug_session_status's capabilities.exceptionBreakpoints first, or this call fails with a clear 400 instead of attempting anything on the device). |
| debug_continue | Resumes execution on the debugged Roku app. |
| debug_step | Steps execution on the debugged Roku app: over, into, or out. |
| debug_stop | Halts execution on the debugged Roku app. |
| debug_console_read | Reads captured console output across all three sources in a debug session (CDP/TypeScript, DAP/BrightScript app output, and the device's own port-8085 log stream), merged into one chronologically-ordered stream and tagged by source. |
| debug_errors_read | Reads captured errors across BOTH runtimes in a debug session, merged into one chronologically-ordered stream and tagged by source. |
| debug_console_clear | Clears captured console and/or error entries for a debug session. |
CDP
| Tool | Description |
|---|---|
| cdp_session_create | Create a CDP (Chrome DevTools Protocol) debug session for a Roku app running on Hermes. |
| cdp_session_update | Rebuild and redeploy the app into an existing CDP debug session (for iterative development: change code, call this, then re-check state). |
| cdp_session_end | End an active CDP debug session: disconnects from the device and clears its source map from memory. |
| cdp_eval | Evaluate a JavaScript expression in the global scope of the debugged Roku app via CDP Runtime.evaluate. |
| cdp_status | Report the state of a CDP debug session: connection state, pause state, source map load state, and captured console/error counts. |
| cdp_heap_usage | Return lightweight JS heap usage (total/used bytes) for the debugged Roku app via CDP Runtime.getHeapUsage. |
| cdp_profile_start | Start a CPU profiling capture on the debugged Roku app via CDP Profiler.start. |
| cdp_profile_stop | Stop an active CPU profiling capture started by cdp_profile_start and write the .cpuprofile to disk. |
| cdp_heap_snapshot | Capture a heap snapshot of the debugged Roku app via CDP HeapProfiler.takeHeapSnapshot. |
| cdp_heap_sampling_start | Start a lightweight heap allocation sampling capture on the debugged Roku app via CDP HeapProfiler.startSampling. |
| cdp_heap_sampling_stop | Stop an active heap sampling capture started by cdp_heap_sampling_start and write the .heapprofile to disk. |
| cdp_source_list | Lists every source file available in the currently loaded source map, as local disk paths. |
| cdp_source_get | Returns lines of source content from one file in the loaded source map, optionally restricted to a line range. |
| cdp_source_grep | Searches the loaded source map's file contents for a regular expression pattern, across all files or one specific file. |
| cdp_source_resolve | Resolves a path between its source-map representation and its local disk path. |
| cdp_console_read | Reads captured console output (from CDP Runtime.consoleAPICalled), optionally filtered, with decoded stack traces (mapped back to original source via the loaded source map) attached when available. |
| cdp_errors_read | Reads captured runtime exceptions (from CDP Runtime.exceptionThrown), with decoded stack traces attached when available. |
| cdp_console_clear | Clears both the console and error buffers for a session. |
| cdp_console_clear_console | Clears only the console buffer for a session, leaving the error buffer intact. |
| cdp_console_clear_errors | Clears only the error buffer for a session, leaving the console buffer intact. |
| cdp_debugger_pause | Pauses JS execution on the debugged Roku app via CDP Debugger.pause, and waits for the resulting Debugger.paused event before returning so the caller sees the new paused state. |
| cdp_debugger_resume | Resumes JS execution on the debugged Roku app via CDP Debugger.resume, and waits for the resulting Debugger.resumed event before returning. |
| cdp_debugger_step_over | Steps over the current line via CDP Debugger.stepOver, and waits for the resulting Debugger.paused event before returning so the caller sees the new call frames. |
| cdp_debugger_step_into | Steps into the function call on the current line via CDP Debugger.stepInto, and waits for the resulting Debugger.paused event before returning so the caller sees the new call frames. |
| cdp_debugger_step_out | Steps out of the current function via CDP Debugger.stepOut, and waits for the resulting Debugger.paused event before returning so the caller sees the new call frames. |
| cdp_breakpoint_set | Sets a breakpoint at a TypeScript/source line via CDP Debugger.setBreakpoint. |
| cdp_breakpoint_remove | Removes a previously-set breakpoint via CDP Debugger.removeBreakpoint. |
| cdp_breakpoint_list | Lists all breakpoints currently tracked for a session. |
| cdp_debugger_state | Returns the current debugger pause state. |
| cdp_debugger_eval_frame | Evaluates a JS expression scoped to a specific paused call frame via CDP Debugger.evaluateOnCallFrame -- sees that frame's locals and closures, not just globals. |
DAP
| Tool | Description |
|---|---|
| dap_reconnect | Recover a BrightScript (DAP) debug backend after its connection has dropped. |
| dap_threads | List all BrightScript debug threads and their current stop state. |
| dap_thread_select | Set the session's default BrightScript debug thread. |
| dap_thread_stop_reason | Read a BrightScript thread's cached stop reason and code snippet. |
| dap_variables | Inspect a BrightScript variable or container hierarchically, wrapping the device's VARIABLES command over Roku's socket-based BrightScript debug protocol (TCP 8081) -- NOT the Microsoft Debug Adapter Protocol. |
Diagnostics
| Tool | Description |
|---|---|
| get_server_health | Return rk server health and runtime status (equivalent to GET /api/health). |
Updated about 4 hours ago
Did this page help you?