roku-dev-mcp
Roku Development MCP Server (roku-dev-mcp)
AIコーディングエージェント(Antigravity、Claude、Cursorなど)がRoku BrightScriptおよびSceneGraphアプリケーションの開発、デプロイ、ナビゲーション、検査、デバッグを実行できるようにする自律型Model Context Protocol(MCP)サーバーです。
1. 概要
Roku OSは開発用APIを4つの異なるネットワークプロトコルに分離し、それぞれ異なるポートで提供しています。roku-dev-mcpは、エージェントの構造化されたJSONツールコールインターフェースと、Rokuの断片的な開発者APIサーフェスを橋渡しするミドルウェアコントローラーとして機能します。
┌──────────────────────────────────────────────────────────────────┐
│ 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. ポートアーキテクチャマトリクス
ポート | プロトコル | 認証 | 接続 | 目的 |
80 | HTTP | Digest( | リクエストごと | サイドロード( |
8060 | HTTP REST | なし* | リクエストごと | リモートキー操作、ディープリンク、デバイス/メディア状態のクエリ |
8080 | Telnet (TCP) | なし | オンデマンド(直列化) | SceneGraphライブノードツリーダンプ( |
8085 | Telnet (TCP) | なし | 永続バックグラウンド | BrightScriptコンソールログ、リアルタイムクラッシュキャプチャ、対話型デバッガー |
*Roku OS 14.1以降で「モバイルアプリによる制御」を有効にする必要があります。
3. 前提条件
3.1 Rokuデバイスの設定
開発者モードを有効にする:
リモコン操作:
ホーム ×3 → 上 ×2 → 右 → 左 → 右 → 左 → 右。開発者パスワードを設定します(
ROKU_DEV_PASSWORDとして使用)。
「モバイルアプリによる制御」を有効にする:
設定 → システム → 詳細システム設定 → モバイルアプリによる制御→ **「有効」**を選択。
ローカルネットワーク接続:
MCPサーバーを実行しているホストマシンがRokuデバイスと同じサブネットにあることを確認します。
ポート
80、8060、8080、8085にアクセスできる必要があります。
3.2 ホスト環境
Node.js:
≥ 20.0.0(LTS推奨)npmまたはpnpm
4. 設定と環境変数
プロジェクトルートに.envファイルを作成するか、MCPクライアントで環境変数を設定します:
変数 | 必須 | デフォルト | 説明 |
| はい | — | 開発者モード有効化時に設定した開発者パスワード。 |
| いいえ | SSDPディスカバリ | 対象RokuデバイスのIPv4アドレス(例: |
| いいえ |
| BrightScriptリングバッファの最大行数。 |
| いいえ |
| 連続キー操作間の遅延(ミリ秒)。 |
| いいえ |
| TelnetソケットのTCP接続タイムアウト。 |
| いいえ |
| Telnetコマンド実行タイムアウト。 |
5. MCPクライアントのセットアップ
5.1 Antigravity / Claude Desktopの設定
MCPクライアント設定にサーバーを追加します(例:claude_desktop_config.jsonのmcpServers、またはAntigravityのMCP設定):
{
"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"
}
}
}
}Antigravity、Claude CLI / Claude Desktop、Codex、Opencodeの詳細な設定手順については、docs/INSTALL.mdを参照してください。
6. 利用可能なMCPツール
1. roku_build_and_deploy
BrightScript/SceneGraphプロジェクトディレクトリをZIP圧縮し、Rokuデバイスにサイドロードします。
入力:
source_dir(string):プロジェクトルートへの絶対パス(manifestを含む必要があります)。action("Install" | "Replace"、デフォルト:"Install"):Installは既存のサイドロードアプリを置き換えます。exclude_patterns(string[]、オプション):除外する追加のグロブパターン。
戻り値:デプロイ結果、起動ログ、インストール時間、クラッシュステータス。
2. roku_send_keys
設定可能なキー間遅延で、連続的なECPキー操作コマンドを送信します。
入力:
keys(string[]):順序付きECPキーリスト(例:["Home", "Down", "Select", "Lit_a"])。delay_ms(number、オプション):キー操作間の遅延(ミリ秒)。
戻り値:送信されたキー数、実行時間、エラー(存在する場合)。
3. roku_get_ui_tree
ライブのSceneGraphノードツリーを検査し、JSONツリー構造に解析します。
入力:
filter_id(string、オプション):サブツリールートのノードID。include_fields(boolean、デフォルト:true):ノードフィールドのキーと値を含めるかどうか。max_depth(number、オプション):最大ツリー深度。
戻り値:参照カウントとフィールドデータを含む解析済みノードツリー。
4. roku_capture_state
デバイス状態の複合マルチモーダルスナップショットを生成します。
入力:
log_lines(number、デフォルト:50):最近のBrightScriptログエントリ。include_screenshot(boolean、デフォルト:true):Base64スクリーンショット画像。include_ui_tree(boolean、デフォルト:false):SceneGraphツリースナップショット。
戻り値:複合JSON状態と、マルチモーダルエージェント用のインライン画像ペイロード。
5. roku_assert_playback
ECPメディアプレーヤーにクエリを実行し、ビデオ再生状態とメトリクスを検証します。
入力:なし。
戻り値:
is_playing、is_buffering、progress_percent、再生時間、ストリームビットレート、オーディオ/ビデオ形式。
6. roku_wait_for_condition
ハードコードされたスリープタイマーを避けるための、決定的な条件ベースのポーリング。
入力:
condition(string):条件式(node_exists: {id}、node_field: {id}.{field}={val}、playback_state: {state}、app_active: {id}、log_contains: {pattern}、crash_detected)。timeout_seconds(number、デフォルト:10):最大待機時間。poll_interval_ms(number、デフォルト:500):ポーリング間隔。
戻り値:条件充足フラグ、経過時間、ポーリング回数、一致したスナップショット。
7. roku_launch
サイドロードされたアプリケーション内の特定のコンテンツアイテムにディープリンクします。
入力:
content_id(string、オプション):ターゲットコンテンツID。media_type(string、オプション):メディアタイプのヒント(movie、seriesなど)。params(Record<string, string>、オプション):追加のクエリパラメータ。
戻り値:起動確認とアクティブアプリの検証。
7. 開発とテスト
# 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 build完全なテストドキュメントとステップバイステップの検証手順については、docs/TESTING.mdを参照してください。
8. ライセンス
このプロジェクトはUnlicenseの下でライセンスされています — パブリックドメインです。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Run, build, and validate firmware on virtual hardware from your AI agent. Hardware knowledge corpus.
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.174MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to interact with a running Roblox game client to execute Lua code, inspect scripts, spy on remotes, and more.95216MIT
- AlicenseAqualityCmaintenanceAll-in-one developer tool and MCP Server for Roku development, featuring ECP device control, automated channel sideloading, BrightScript debugging, and real-time log monitoring.3528MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/voidxela/roku-dev-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server