MCP Hub
Back to servers

RokuMCP

MCP server for Roku device automation — deploy, ECP control, screenshots, and debug console

Registry
Updated
Mar 26, 2026

Quick Install

npx -y roku-mcp

roku-mcp

A Model Context Protocol (MCP) server for Roku device automation. Exposes tools for app deployment, ECP remote control, screenshot capture, SceneGraph node inspection, and BrightScript debug console access.

Installation

npm install -g roku-mcp

Or run directly with npx (no install required):

npx roku-mcp

Client Configuration

Cursor

  1. Create .cursor/mcp.json in your project root:
{
  "mcpServers": {
    "roku": {
      "command": "npx",
      "args": ["-y", "roku-mcp"],
      "env": {
        "ROKU_DEVICE_HOST": "192.168.1.XXX",
        "ROKU_DEVICE_PASSWORD": "your-password"
      }
    }
  }
}
  1. Reload the window: Cmd+Shift+P (macOS) / Ctrl+Shift+P (Windows/Linux) → Developer: Reload Window
  2. Go to Cursor Settings → MCP and verify the "roku" server shows a green status. If it appears disabled, click the toggle to enable it.

VS Code

Requires VS Code 1.99+ with the GitHub Copilot extension.

  1. Create .vscode/mcp.json in your project root:
{
  "servers": {
    "roku": {
      "command": "npx",
      "args": ["-y", "roku-mcp"],
      "env": {
        "ROKU_DEVICE_HOST": "192.168.1.XXX",
        "ROKU_DEVICE_PASSWORD": "your-password"
      }
    }
  }
}
  1. Reload the window: Cmd+Shift+P / Ctrl+Shift+PDeveloper: Reload Window
  2. Open Copilot Chat and switch to Agent mode (select from the chat mode dropdown). The roku tools will be available there.

Claude Desktop

Add to your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "roku": {
      "command": "npx",
      "args": ["-y", "roku-mcp"],
      "env": {
        "ROKU_DEVICE_HOST": "192.168.1.XXX",
        "ROKU_DEVICE_PASSWORD": "your-password"
      }
    }
  }
}

Restart Claude Desktop after saving.

Windsurf

Create .windsurf/mcp.json in your project root:

{
  "mcpServers": {
    "roku": {
      "command": "npx",
      "args": ["-y", "roku-mcp"],
      "env": {
        "ROKU_DEVICE_HOST": "192.168.1.XXX",
        "ROKU_DEVICE_PASSWORD": "your-password"
      }
    }
  }
}

Reload the window after saving.

Any MCP-compatible client

The server uses stdio transport. Any client that supports MCP can launch it with:

command: npx
args:    ["-y", "roku-mcp"]

Pass ROKU_DEVICE_HOST and ROKU_DEVICE_PASSWORD as environment variables, or omit the host to use SSDP auto-discovery.

Environment Variables

VariableDescription
ROKU_DEVICE_HOSTIP address or hostname of the Roku device
ROKU_DEVICE_PASSWORDDeveloper password for the Roku device

Both can also be passed as parameters on each tool call, which override the environment variables.

Auto-discovery

If ROKU_DEVICE_HOST is not set and no host parameter is provided, the server automatically discovers Roku devices on the local network using SSDP and uses the first one found. You can also use the roku_discover tool to list all available devices. Note that the password cannot be discovered and must still be configured.

.env file support

The server automatically loads a .env file from the current working directory using dotenv. If your project's .env already uses ROKU_DEVICE_HOST and ROKU_DEVICE_PASSWORD, the server picks them up with no extra configuration — just omit the env block from your MCP config:

ROKU_DEVICE_HOST=192.168.1.100
ROKU_DEVICE_PASSWORD=my-password

If your project uses different variable names (e.g. ROKU_IP, ROKU_DEV_PASSWORD), you can map them in the env block:

"env": {
  "ROKU_DEVICE_HOST": "${ROKU_IP}",
  "ROKU_DEVICE_PASSWORD": "${ROKU_DEV_PASSWORD}"
}

Or simply add the two expected variables to your .env alongside your existing ones.

Available Tools

Deploy

ToolDescription
roku_deploySideload (deploy) a Roku app to the device
roku_delete_dev_channelDelete the currently sideloaded developer channel

Discovery

ToolDescription
roku_discoverScan the local network for Roku devices via SSDP

ECP (External Control Protocol)

ToolDescription
roku_keypressSend a single key press (Home, Select, Up, Down, Left, Right, Back, etc.)
roku_keypress_sequenceSend multiple key presses in sequence with configurable delay
roku_type_textType a text string into the focused field (e.g. email, password, search)
roku_launchLaunch or deep-link into a channel
roku_query_device_infoGet device model, firmware, serial number, network info
roku_query_active_appGet the currently running app
roku_query_media_playerGet media player state (play/pause/buffer/stop), position, and duration
roku_query_app_uiGet the current app UI tree as XML
roku_query_sg_nodesQuery SceneGraph nodes (all, roots, or by node ID)
roku_find_nodeSearch the UI tree for a node by ID or attribute (subtype, text, etc.)
roku_get_focused_nodeGet the currently focused node with all its properties
roku_sleepWait for a specified duration (useful between navigation steps)

Screenshot

ToolDescription
roku_screenshotCapture a screenshot (returns base64 image and file path)

Debug Console

ToolDescription
roku_console_connectOpen a TCP connection to the BrightScript debug console (port 8085)
roku_console_readRead buffered console output and auto-disconnect
roku_console_sendSend a command to the debug console and auto-disconnect
roku_console_disconnectClose the console connection (safety net)

Requirements

  • Node.js 18+
  • A Roku device with Developer Mode enabled on the same network
  • For screenshots and deploy: a sideloaded dev channel must be running

License

MIT

Reviews

No reviews yet

Sign in to write a review