roku-dev-mcp
Roku Development MCP Server (roku-dev-mcp)
Ein autonomer Model Context Protocol (MCP)-Server, der KI-Codierungsagenten (wie Antigravity, Claude und Cursor) befähigt, Roku BrightScript- und SceneGraph-Anwendungen zu entwickeln, bereitzustellen, zu navigieren, zu inspizieren und zu debuggen.
1. Übersicht
Roku OS trennt die Entwicklungs-APIs über vier verschiedene Netzwerkprotokolle auf vier verschiedenen Ports. roku-dev-mcp fungiert als Middleware-Controller, der die strukturierte JSON-Tool-Call-Schnittstelle des Agenten mit der fragmentierten Entwickler-API-Oberfläche von Roku verbindet.
┌──────────────────────────────────────────────────────────────────┐
│ MCP Client (Agent) │
│ (Antigravity / Claude / etc.) │
└──────────────────────────┬───────────────────────────────────────┘
│ MCP Protocol (stdio)
▼
┌──────────────────────────────────────────────────────────────────┐
│ roku-dev-mcp Server │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────────────┐ │
│ │ Tool Router │ │ Log Buffer │ │ Connection Manager │ │
│ │ (Zod Schemas│ │ (Ring Buffer │ │ (Mutex, Reconnect, │ │
│ │ & Handlers)│ │ & Crash Det)│ │ Timeouts) │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬─────────────────┘ │
│ │ │ │ │
│ ┌──────┴─────────────────┴──────────────────┴─────────────────┐ │
│ │ Roku Interface Adapters │ │
│ │ ┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │ │
│ │ │ Port 80 │ │ Port │ │ Port │ │ Port 8085 │ │ │
│ │ │ Installer │ │ 8060 ECP │ │ 8080 SG │ │ BS Console │ │ │
│ │ │ (HTTP/ │ │ (HTTP │ │ Debug │ │ (Telnet / │ │ │
│ │ │ Digest) │ │ REST) │ │ (Telnet) │ │ Persistent)│ │ │
│ │ └──────┬──────┘ └────┬─────┘ └────┬─────┘ └──────┬──────┘ │ │
│ └─────────┼─────────────┼────────────┼──────────────┼──────────┘ │
└────────────┼─────────────┼────────────┼──────────────┼────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────┐
│ Roku Device (TV / Stick) │
│ :80 Installer :8060 ECP :8080 SG Debug :8085 BS Debug │
└──────────────────────────────────────────────────────────────────┘Related MCP server: roku-mcp
2. Port-Architektur-Matrix
Port | Protokoll | Authentifizierung | Verbindung | Zweck |
80 | HTTP | Digest ( | Pro Anfrage | Sideloading ( |
8060 | HTTP REST | Keine* | Pro Anfrage | Fernbedienungstasten, Deep Linking, Geräte-/Medienstatusabfragen |
8080 | Telnet (TCP) | Keine | On-Demand (Serialisiert) | SceneGraph-Live-Knotenbaum-Dumps ( |
8085 | Telnet (TCP) | Keine | Dauerhafter Hintergrund | BrightScript-Konsolenprotokolle, Echtzeit-Crash-Erfassung, interaktiver Debugger |
*Erfordert, dass „Control by mobile apps“ in Roku OS 14.1+ aktiviert ist.
3. Voraussetzungen
3.1 Roku-Gerätekonfiguration
Entwicklermodus aktiviert:
Fernbedienungssequenz:
Home ×3 → Up ×2 → Right → Left → Right → Left → Right.Legen Sie ein Entwicklerpasswort fest (wird als
ROKU_DEV_PASSWORDverwendet).
„Control by mobile apps“ aktiviert:
Einstellungen → System → Erweiterte Systemeinstellungen → Steuerung durch mobile Apps→ wählen Sie „Aktiviert“.
Lokale Netzwerkverbindung:
Stellen Sie sicher, dass der Host, auf dem der MCP-Server läuft, sich im selben Subnetz wie das Roku-Gerät befindet.
Die Ports
80,8060,8080und8085müssen erreichbar sein.
3.2 Host-Umgebung
Node.js:
≥ 20.0.0(LTS empfohlen)npm oder pnpm
4. Konfiguration & Umgebungsvariablen
Erstellen Sie eine .env-Datei im Projektstamm oder konfigurieren Sie Umgebungsvariablen in Ihrem MCP-Client:
Variable | Erforderlich | Standard | Beschreibung |
| Ja | — | Entwicklerpasswort, das bei der Aktivierung des Entwicklermodus festgelegt wurde. |
| Nein | SSDP-Erkennung | IPv4-Adresse des Ziel-Roku-Geräts (z. B. |
| Nein |
| Maximale Zeilen im BrightScript-Ringpuffer. |
| Nein |
| Verzögerung in Millisekunden zwischen aufeinanderfolgenden Tastendrücken. |
| Nein |
| TCP-Verbindungszeitüberschreitung für Telnet-Sockets. |
| Nein |
| Zeitüberschreitung für die Ausführung von Telnet-Befehlen. |
5. MCP-Client-Einrichtung
5.1 Antigravity / Claude Desktop-Konfiguration
Fügen Sie den Server zu Ihrer MCP-Client-Konfiguration hinzu (z. B. mcpServers in claude_desktop_config.json oder Antigravity-MCP-Einstellungen):
{
"mcpServers": {
"roku-dev": {
"command": "node",
"args": ["/absolute/path/to/roku-dev-mcp/dist/index.js"],
"env": {
"ROKU_DEV_PASSWORD": "your_roku_dev_password",
"ROKU_DEVICE_IP": "192.168.1.50"
}
}
}
}Detaillierte Konfigurationsanweisungen für Antigravity, Claude CLI / Claude Desktop, Codex und Opencode finden Sie in docs/INSTALL.md.
6. Verfügbare MCP-Tools
1. roku_build_and_deploy
Zippt ein BrightScript/SceneGraph-Projektverzeichnis und lädt es auf das Roku-Gerät (Sideloading).
Eingaben:
source_dir(string): Absoluter Pfad zum Projektstamm (mussmanifestenthalten).action("Install" | "Replace", Standard:"Install"): Installieren ersetzt eine vorhandene Sideload-App.exclude_patterns(string[], optional): Zusätzliche Glob-Muster zum Ausschließen.
Rückgabe: Bereitstellungsergebnis, Startprotokolle, Installationsdauer und Absturzstatus.
2. roku_send_keys
Sendet sequenzielle ECP-Tastendruckbefehle mit konfigurierbaren Verzögerungen zwischen den Tasten.
Eingaben:
keys(string[]): Geordnete Liste von ECP-Tasten (z. B.["Home", "Down", "Select", "Lit_a"]).delay_ms(number, optional): Verzögerung zwischen Tastendrücken in Millisekunden.
Rückgabe: Anzahl gesendeter Tasten, Ausführungsdauer und ggf. Fehler.
3. roku_get_ui_tree
Inspiziert und analysiert den Live-SceneGraph-Knotenbaum in eine JSON-Baumstruktur.
Eingaben:
filter_id(string, optional): Knoten-ID der Teilbaumwurzel.include_fields(boolean, Standard:true): Knotenfeld-Schlüssel-Werte einbeziehen.max_depth(number, optional): Maximale Baumtiefe.
Rückgabe: Analysierter Knotenbaum mit Referenzzählern und Felddaten.
4. roku_capture_state
Erstellt eine zusammengesetzte multimodale Momentaufnahme des Gerätezustands.
Eingaben:
log_lines(number, Standard:50): Letzte BrightScript-Protokolleinträge.include_screenshot(boolean, Standard:true): Base64-Screenshot-Bild.include_ui_tree(boolean, Standard:false): SceneGraph-Baum-Momentaufnahme.
Rückgabe: Zusammengesetzter JSON-Zustand plus Inline-Bild-Payload für multimodale Agenten.
5. roku_assert_playback
Fragt den ECP-Mediaplayer ab, um den Videowiedergabestatus und Metriken zu überprüfen.
Eingaben: Keine.
Rückgabe:
is_playing,is_buffering,progress_percent, Dauer, Stream-Bitrate sowie Audio-/Videoformate.
6. roku_wait_for_condition
Deterministisches, bedingungsbasiertes Polling, um fest codierte Schlaf-Timer zu vermeiden.
Eingaben:
condition(string): Bedingungsausdruck (node_exists: {id},node_field: {id}.{field}={val},playback_state: {state},app_active: {id},log_contains: {pattern},crash_detected).timeout_seconds(number, Standard:10): Maximale Wartedauer.poll_interval_ms(number, Standard:500): Abfrageintervall.
Rückgabe: Erfüllungsflag, verstrichene Zeit, Anzahl der Abfragen und passende Momentaufnahme.
7. roku_launch
Stellt Deep-Links zu bestimmten Inhaltselementen in der sideloadeten Anwendung her.
Eingaben:
content_id(string, optional): Ziel-Inhalts-ID.media_type(string, optional): Medientyp-Hinweis (movie,series, usw.).params(Record<string, string>, optional): Zusätzliche Abfrageparameter.
Rückgabe: Startbestätigung und Überprüfung der aktiven App.
7. Entwicklung & Testen
# Install dependencies
npm install
# Run unit tests (uses built-in MockRokuDevice)
npm test
# Run unit tests specifically
npm run test:unit
# Run integration tests against a real Roku TV
npm run test:integration
# Run all tests (unit + integration)
ROKU_INTEGRATION_TEST=1 npm test
# Run build
npm run buildDie vollständige Testdokumentation und Schritt-für-Schritt-Verifizierungsanweisungen finden Sie in docs/TESTING.md.
8. Lizenz
Dieses Projekt ist unter der Unlicense lizenziert — Public Domain.
This server cannot be deployed
Maintenance
Related MCP Connectors
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Connect AI assistants to authorized Windows and macOS devices for files, commands, and management.
Let AI agents control Android and iOS devices on Mobilerun Cloud: screen, input, apps, workflows.
Give your AI agent a real cloud Android phone: push APKs, drive it, get screenshots and logs.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to develop, test, and certify Roku applications by providing direct control over device functions like app deployment, remote input, and SceneGraph inspection. It supports automated workflows including real-time log collection, media monitoring, and certification verification.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to inspect and control Roku devices—query UI elements, send remote input, launch channels, and run tests—using the Model Context Protocol or a CLI.27 npm6MIT
- AlicenseBqualityCmaintenanceBuild, deploy, and debug Smart TV web apps on Samsung Tizen and LG webOS TVs from any AI agent.39 npm4MIT
- AlicenseAqualityCmaintenanceProvides AI agents with Roku BrightScript debugging tools, including log reading, scene graph inspection, breakpoint management, variable inspection, and execution control.211Apache 2.0