Atlas / MCP servers / paramount-engineering / Roku Dev Studio

Roku Dev StudioBLOCK

mcp/paramount-engineering/roku-dev-studio

Cross-platform Electron desktop studio for Roku developers: remote control, device queries, sideload, telnet console, RALE/App Connector, BrightScript Fiddle, JSON Action Scripts, an `rds` CLI, an MCP server for AI agents, and an internet relay.

Verdict
BLOCK
Grade
F
Trust score
55 /100
Exposed tools
11 10r · 1w · 0d
Transport
—
License
MIT
Stars
32
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Roku Dev Studio

[](https://glama.ai/mcp/servers/paramount-engineering/roku-dev-studio)

Roku Developer Tools for macOS, Windows, and Linux — Remote Control, App Side-loading, ECP automation, RALE / App Connector, Network Inspector, Action Scripts, MCP server for AI agents (Cursor, Claude, VS Code), and a rds CLI. Supports both local network and internet-bridged devices.

A comprehensive cross-platform desktop application for controlling and developing on Roku devices over your local network or via remote server using the External Control Protocol (ECP).

Why Roku Dev Studio? (vs. official Roku tools)

Roku development is normally split across a pile of separate, single-purpose official tools — the Roku Remote Tool, the browser-based sideload installer, raw telnet, RALE, sca-cmd — that don't talk to each other. Roku Dev Studio doesn't replace Roku's own protocols (ECP, RALE, telnet, sca-cmd) — it wraps all of them in one GUI, one CLI (rds), and one MCP server:

Read from source at commit 38193bed2431OBSERVED · 2026-10-09
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add roku-dev-studio-remote-server --env RDS_RELAY_TOKEN=${RDS_RELAY_TOKEN} --env ROKU_DEV_PASSWORD=${ROKU_DEV_PASSWORD} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "roku-dev-studio-remote-server": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "RDS_RELAY_TOKEN": "${RDS_RELAY_TOKEN}",
        "ROKU_DEV_PASSWORD": "${ROKU_DEV_PASSWORD}"
      }
    }
  }
}
03

Exposed tools (11)

10 read · 1 write · 0 destructive.

ToolRiskDescription
YourFunctionNamereadDescription of what it does
actionreadWhat the agent should do on the device, in one sentence (e.g.
action-script-contractreadCanonical shape for validate_script / send_script_to_builder inputs (root, appFunction params, wait / if conditions).
authoring-rulesreadConstraints the agent must obey when generating Action Scripts (version, password handling, wait vs delay, ...).
capability-bundlereadEvery static catalog the agent needs in one JSON: actions, presets, vocabularies, RALE built-ins, authoring rules, op directory, and the agent contract.
devicereadOptional target device (IP or serial). Omit to use the focused Dev Studio tab.
goalreadWhat the Action Script should accomplish on the device (one or two sentences). Use this prompt only when the task needs ordering, conditions, polling waits, variables, or Builder review.
quick-startwriteOne-page primer: bridge probe, capability loading, device selection, and the validate → send workflow. Read first.
roku-action-script-quickstartreadPrimes the agent to author an Action Script for multi-step / conditional / saved-or-reviewed flows (bridge probe → capability load → validate → send to Builder). For single actions, prefer
roku-debug-devicereadPrimes the agent to inspect a Roku using read-only tools (probe_bridge → list_devices → get_selected_device → ecp_query / rale_get_node_by_id).
roku-one-shot-actionreadPrimes the agent to perform a single deterministic action (keypress, launch, ecp_query/post, rale_command, screenshot, ...) via a direct op — **not** by authoring an Action Script.
04

Trust audit

BLOCKgrade F · trust 55/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (11 observation(s))
Network
declared (20 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
apps/roku-dev-studio/renderer/components/modals/fragments/dev-mode-modal.html:22
<li data-i18n="modals.devMode.step6">Your Roku will restart with Developer Mode enabled</li>
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
apps/roku-dev-studio/renderer/components/modals/fragments/help-modal.html:32
<p data-i18n-html="modals.helpModal.deviceDiscoveryScanHtml">Click <strong>Scan</strong> to automatically discover Roku devices on your network. Devices with Developer Mode enabled will show a green "
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
apps/roku-dev-studio/renderer/components/modals/fragments/help-modal.html:95
<p data-i18n="modals.helpModal.devAppIntro">For Developer Mode enabled devices:</p>
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
apps/roku-dev-studio/renderer/components/modals/fragments/help-modal.html:116
<p data-i18n="modals.helpModal.consoleNote">Requires Developer Mode enabled. Only one telnet connection can be active at a time per device.</p>
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
apps/roku-dev-studio/renderer/components/modals/fragments/help-modal.html:273
<p data-i18n-html="modals.helpModal.sideloadRelayFooterHtml">Requires the targeted devices to have Developer Mode enabled. See <strong>Remote Locations</strong> above for targeting devices at another
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/roku-dev-studio/assets/icon.icns
icon.icns
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
apps/roku-dev-studio/main/sideload-relay/debug-endpoints.ts:245
this.broadcast('[beacon.signal] |AppCompileComplete --- Sideload Relay dev channel ready');
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
apps/roku-dev-studio/main/sideload-relay/debug-endpoints.ts:298
this.broadcast('[beacon.report] |AppExitComplete --- Sideload Relay session ended');
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
apps/roku-dev-studio/main/sideload-relay/service.ts:58
const LAUNCH_COMPLETE_RE = /\[beacon\.signal\]\s*\|AppLaunchChainComplete|\[scrpt\.ctx\.run\.enter\]/i;
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
apps/roku-dev-studio/renderer/modules/console-log/console-analytics-modal.ts:153
of static cards. A brand-new finding/crash/beacon card also slides+fades in on top of the flash;
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
apps/roku-dev-studio/renderer/modules/console-log/console-analytics-modal.ts:203
.telnet-an-beacon-avg { flex: 0 0 auto; margin-left: auto; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--text-secondary); font-family: var(--font-mono, ui-monospace, monospace); }
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/roku-dev-studio/main.ts:342
win.loadURL('http://127.0.0.1:5173/').catch((err: unknown) => {
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/roku-dev-studio/main.ts:344
'[Roku Dev Studio] Vite dev server not reachable at http://127.0.0.1:5173/. Run `npm run dev:solid` in apps/roku-dev-studio (or `npm run start:solid` from repo root).',
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/roku-dev-studio/main/mcp-bridge.ts:514
origin === 'http://127.0.0.1' ||
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/roku-dev-studio/main/mcp-bridge.ts:515
origin.startsWith('http://127.0.0.1:')
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/roku-dev-studio/scripts/verify-rce-account-prune.ts:12
{ id: 'loc-1', name: 'QA Lab', serverUrl: 'http://10.0.0.5:4951', host: '10.0.0.5', port: 4951 }, // relay: no account
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
apps/roku-dev-studio/shared/strings/uk/app.ts:226
appTileTitle: (name: string, id: string): string => `${name}\nID: ${id}\nНатисніть, щоб запустити`,
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
apps/roku-dev-studio/shared/strings/uk/network-inspector.ts:131
`CONNECT ${host}${port} (HTTPS — зашифровано)\n\nЗахоплення через точку доступу бачить лише рукостискання TLS (SNI + IP), а не тіла JSON.\n\nУвімкніть MITM у Налаштуваннях і спрямуйте канал через Roku
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
apps/roku-dev-studio/shared/strings/uk/queries.ts:28
`Видалити плагін «${appId}»?\n\nЦе видалить програму з цього пристрою та з усіх пристроїв, прив’язаних до того самого облікового запису Roku.`,
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/roku-dev-studio-api/lib/digest-server.ts:22
return createHash('md5').update(value).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/roku-dev-studio-api/lib/http-digest.ts:44
return createHash('md5').update(value).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/roku-dev-studio-remote-server/roku-remote-server.ts:784
.createHash('sha1')
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/roku-dev-studio/main/ipc/bs-fiddle-handlers.ts:13
import { IPC } from '../../shared/ipc/channels';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/roku-dev-studio/main/ipc/bs-fiddle-handlers.ts:14
import { S } from '../../shared/strings/index';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/roku-dev-studio/main/ipc/debugger-handlers.ts:14
import { IPC } from '../../shared/ipc/channels';

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-09 · audit v0.4.1 · source sha 38193bed2431full audit observations/trust-audit/mcp-server/paramount-engineering__roku-dev-studio.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-0938193bed2431BLOCKF55first audit
06

Questions

What is the Roku Dev Studio MCP server?

Cross-platform Electron desktop studio for Roku developers: remote control, device queries, sideload, telnet console, RALE/App Connector, BrightScript Fiddle, JSON Action Scripts, an `rds` CLI, an MCP server for AI agents, and an internet relay.

What tools does Roku Dev Studio expose?

11 in total: 10 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Roku Dev Studio safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (55/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Roku Dev Studio need?

It reads RDS_RELAY_TOKEN and ROKU_DEV_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

The grade is for one exact copy of the source (38193bed2431), read on 2026-10-09. The repository is watched and re-audited when it changes.

Advertisement