Skip to main content
Glama
voidxela

roku-dev-mcp

by voidxela

Roku Development MCP Server (roku-dev-mcp)

License Node 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(rokudev / パスワード)

リクエストごと

サイドロード(/plugin_install)、スクリーンショット取得(/plugin_inspect

8060

HTTP REST

なし*

リクエストごと

リモートキー操作、ディープリンク、デバイス/メディア状態のクエリ

8080

Telnet (TCP)

なし

オンデマンド(直列化)

SceneGraphライブノードツリーダンプ(sgnodes all

8085

Telnet (TCP)

なし

永続バックグラウンド

BrightScriptコンソールログ、リアルタイムクラッシュキャプチャ、対話型デバッガー

*Roku OS 14.1以降で「モバイルアプリによる制御」を有効にする必要があります。


3. 前提条件

3.1 Rokuデバイスの設定

  1. 開発者モードを有効にする

    • リモコン操作:ホーム ×3 → 上 ×2 → 右 → 左 → 右 → 左 → 右

    • 開発者パスワードを設定します(ROKU_DEV_PASSWORDとして使用)。

  2. 「モバイルアプリによる制御」を有効にする

    • 設定 → システム → 詳細システム設定 → モバイルアプリによる制御**「有効」**を選択。

  3. ローカルネットワーク接続

    • MCPサーバーを実行しているホストマシンがRokuデバイスと同じサブネットにあることを確認します。

    • ポート80806080808085にアクセスできる必要があります。

3.2 ホスト環境

  • Node.js≥ 20.0.0(LTS推奨)

  • npmまたはpnpm


4. 設定と環境変数

プロジェクトルートに.envファイルを作成するか、MCPクライアントで環境変数を設定します:

変数

必須

デフォルト

説明

ROKU_DEV_PASSWORD

はい

開発者モード有効化時に設定した開発者パスワード。

ROKU_DEVICE_IP

いいえ

SSDPディスカバリ

対象RokuデバイスのIPv4アドレス(例:192.168.1.50)。

ROKU_LOG_BUFFER_SIZE

いいえ

500

BrightScriptリングバッファの最大行数。

ROKU_KEYPRESS_DELAY_MS

いいえ

100

連続キー操作間の遅延(ミリ秒)。

ROKU_CONNECT_TIMEOUT_MS

いいえ

5000

TelnetソケットのTCP接続タイムアウト。

ROKU_COMMAND_TIMEOUT_MS

いいえ

10000

Telnetコマンド実行タイムアウト。


5. MCPクライアントのセットアップ

5.1 Antigravity / Claude Desktopの設定

MCPクライアント設定にサーバーを追加します(例:claude_desktop_config.jsonmcpServers、または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"
      }
    }
  }
}

AntigravityClaude CLI / Claude DesktopCodexOpencodeの詳細な設定手順については、docs/INSTALL.mdを参照してください。


6. 利用可能なMCPツール

1. roku_build_and_deploy

BrightScript/SceneGraphプロジェクトディレクトリをZIP圧縮し、Rokuデバイスにサイドロードします。

  • 入力

    • source_dirstring):プロジェクトルートへの絶対パス(manifestを含む必要があります)。

    • action"Install" | "Replace"、デフォルト:"Install"):Installは既存のサイドロードアプリを置き換えます。

    • exclude_patternsstring[]、オプション):除外する追加のグロブパターン。

  • 戻り値:デプロイ結果、起動ログ、インストール時間、クラッシュステータス。

2. roku_send_keys

設定可能なキー間遅延で、連続的なECPキー操作コマンドを送信します。

  • 入力

    • keysstring[]):順序付きECPキーリスト(例:["Home", "Down", "Select", "Lit_a"])。

    • delay_msnumber、オプション):キー操作間の遅延(ミリ秒)。

  • 戻り値:送信されたキー数、実行時間、エラー(存在する場合)。

3. roku_get_ui_tree

ライブのSceneGraphノードツリーを検査し、JSONツリー構造に解析します。

  • 入力

    • filter_idstring、オプション):サブツリールートのノードID。

    • include_fieldsboolean、デフォルト:true):ノードフィールドのキーと値を含めるかどうか。

    • max_depthnumber、オプション):最大ツリー深度。

  • 戻り値:参照カウントとフィールドデータを含む解析済みノードツリー。

4. roku_capture_state

デバイス状態の複合マルチモーダルスナップショットを生成します。

  • 入力

    • log_linesnumber、デフォルト:50):最近のBrightScriptログエントリ。

    • include_screenshotboolean、デフォルト:true):Base64スクリーンショット画像。

    • include_ui_treeboolean、デフォルト:false):SceneGraphツリースナップショット。

  • 戻り値:複合JSON状態と、マルチモーダルエージェント用のインライン画像ペイロード。

5. roku_assert_playback

ECPメディアプレーヤーにクエリを実行し、ビデオ再生状態とメトリクスを検証します。

  • 入力:なし。

  • 戻り値is_playingis_bufferingprogress_percent、再生時間、ストリームビットレート、オーディオ/ビデオ形式。

6. roku_wait_for_condition

ハードコードされたスリープタイマーを避けるための、決定的な条件ベースのポーリング。

  • 入力

    • conditionstring):条件式(node_exists: {id}node_field: {id}.{field}={val}playback_state: {state}app_active: {id}log_contains: {pattern}crash_detected)。

    • timeout_secondsnumber、デフォルト:10):最大待機時間。

    • poll_interval_msnumber、デフォルト:500):ポーリング間隔。

  • 戻り値:条件充足フラグ、経過時間、ポーリング回数、一致したスナップショット。

7. roku_launch

サイドロードされたアプリケーション内の特定のコンテンツアイテムにディープリンクします。

  • 入力

    • content_idstring、オプション):ターゲットコンテンツID。

    • media_typestring、オプション):メディアタイプのヒント(movieseriesなど)。

    • paramsRecord<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の下でライセンスされています — パブリックドメインです。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

0Releases (12mo)
Commit activity

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    17
    4
    MIT

View all related MCP servers

Latest Blog Posts

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