Skip to main content
Glama
dominick253

roku-debug-mcp

by dominick253

roku-debug-mcp

CI Python License MCP

MCP-сервер, дающий AI-агентам полный опыт отладки Roku из VS Code.

Предоставляет возможности отладки BrightScript на Roku в виде MCP-инструментов, чтобы AI-агенты могли читать журналы, просматривать граф сцены, выполнять код по шагам, читать переменные и устанавливать точки останова — ту же информацию, которую разработчик видит в расширении Roku для VS Code.

Архитектура

graph TB
    subgraph "AI Agent (Hermes, VS Code, etc.)"
        MCP[<b>MCP Client</b><br/>stdio JSON-RPC]
    end

    subgraph "roku-debug-mcp (MCP Server)"
        Server[<b>MCP Server</b><br/>21 tools]
        Config[<b>Config</b><br/>ROKU_* env vars]
        Server --> Config
    end

    subgraph "Roku Device"
        direction LR

        subgraph "Port 80 — HTTP"
            Installer[<b>Sideloader</b><br/>Digest auth<br/>Expect: 100-continue]
        end

        subgraph "Port 8060 — ECP"
            ECP[<b>ECP Client</b><br/>Device info<br/>Scene graph<br/>Postback/keys]
        end

        subgraph "Port 8081 — Binary Debug"
            Debug[<b>Debug Client</b><br/>Binary protocol<br/>BSDBG magic]
        end

        subgraph "Port 8085 — Telnet"
            Console[<b>Text Console</b><br/>Fallback logs]
        end
    end

    MCP --> Server
    Server --> Installer
    Server --> ECP
    Server --> Debug
    Server --> Console

Слои протоколов

Порт

Протокол

Аутентификация

Назначение

80

HTTP

Digest + Expect: 100-continue

Загрузка каналов

8060

ECP HTTP

Нет

Информация об устройстве, граф сцены, скриншоты

8081

Binary

Нет

Основной протокол отладки (используется VS Code)

8085

Telnet

Нет

Текстовая консоль (запасной вариант)

Двоичный протокол отладки (порт 8081)

sequenceDiagram
    participant C as Client (roku-debug-mcp)
    participant R as Roku Device (port 8081)

    C->>R: Handshake<br/>[magic(8)][protocol_version(4)]
    R-->>C: [magic(8)][protocol_version(4)][packet_len(4)][revision]

    Note over C,R: Request/Response Format:<br/>[packet_length(4)][request_id(4)][cmd_code(4)][payload]

    C->>R: GET_THREADS (cmd=3)
    R-->>C: THREADS response

    C->>R: STACKTRACE (cmd=4, thread_index)
    R-->>C: Stack frames

    C->>R: ADD_BREAKPOINTS (cmd=7)
    R-->>C: Confirmation

    Note over C,R: Update notifications (request_id=0):<br/>CONNECT_IO_PORT, ALL_THREADS_STOPPED, etc.

Магическое число рукопожатия: 0x0067756564657362 (b"bsdebug\0" little-endian)

Процесс загрузки каналов (порт 80)

sequenceDiagram
    participant C as Client
    participant R as Roku (port 80)

    C->>R: POST /plugin_package (Expect: 100-continue)
    R-->>C: 401 Unauthorized (WWW-Authenticate: Digest)
    C->>C: Compute digest hash
    C->>R: POST /plugin_package (Authorization: Digest)
    R-->>C: 100 Continue
    C->>R: [ZIP payload]
    R-->>C: 200 OK [chunked response with Dev Kit HTML]

Related MCP server: Node.js Debugger MCP

Что AI может делать с этим

  • Читать информацию об устройстве — модель, версию, текущее приложение

  • Просматривать граф сцены — полную иерархию узлов запущенного приложения

  • Читать журналы консоли — stdout запущенного канала BrightScript

  • Список потоков — видеть все потоки выполнения и их состояния остановки

  • Читать стек вызовов — покадровый стек вызовов для любого остановленного потока

  • Просматривать переменные — локальные, глобальные и состояние компонентов графа сцены

  • Выполнять код — запускать произвольный BrightScript в остановленном кадре

  • Управлять точками останова — добавлять, перечислять, удалять точки останова по файлу/строке

  • Шагать по коду — шаг с обходом, шаг с заходом, шаг с выходом или продолжить

  • Загружать каналы — загружать и устанавливать тестовые каналы с удалённой отладкой

Быстрый старт

1. Установка

cd /home/dom/src/roku-debug-mcp
pip install -e .

2. Настройка окружения

export ROKU_DEVICE_IP=192.168.1.10      # Roku device IP
export ROKU_DEV_USER=rokudev            # Dev channel username
export ROKU_DEV_PASSWORD=your-password  # Dev channel password

3. Регистрация в Hermes

Добавьте в ~/.hermes/mcp-servers.json:

{
  "roku-debug-mcp": {
    "command": "roku-debug-mcp",
    "args": []
  }
}

4. Использование в сессии Hermes

Теперь AI-агент получит доступ к 21 новому инструменту:

roku_device_info()
roku_scene_graph()
roku_debug_threads()
roku_debug_stacktrace(thread_index=0)
roku_debug_variables(thread_index=0, frame_index=0)
roku_debug_execute(thread_index=0, frame_index=0, code="x = 42")
roku_debug_breakpoints_add(breakpoints=[{...}])
roku_debug_console_output()

Доступные инструменты

Инструменты устройства / интерфейса (ECP — порт 8060)

Инструмент

Описание

roku_device_info

Модель устройства, версия и т.д.

roku_current_app

Текущее запущенное приложение

roku_scene_graph

Полная иерархия узлов графа сцены

roku_postback

Отправить postback в канал

roku_launch_uri

Запустить URI

roku_key

Отправить клавишу пульта

roku_screenshot

Сделать снимок экрана

Инструменты отладки (двоичный протокол — порт 8081)

Инструмент

Описание

roku_debug_threads

Список всех потоков

roku_debug_stacktrace

Получить кадры стека

roku_debug_variables

Читать переменные в кадре

roku_debug_execute

Выполнить код BrightScript

roku_debug_breakpoints_add

Добавить точки останова

roku_debug_breakpoints_list

Список активных точек останова

roku_debug_breakpoints_remove

Удалить конкретные точки останова

roku_debug_breakpoints_remove_all

Очистить все точки останова

roku_debug_continue

Возобновить выполнение

roku_debug_step

Шаг выполнения

roku_debug_stop

Приостановить выполнение

roku_debug_console_output

Получить строки stdout

roku_debug_protocol_info

Версия протокола отладки

Инструменты установки (HTTP — порт 80)

Инструмент

Описание

roku_install

Загрузить ZIP-архив канала

roku_launch_remote_debug

Запустить с включённой удалённой отладкой

Тестирование

Модульные тесты (имитация Roku-сервера)

# Run all tests (uses mock server on ephemeral ports)
pytest tests/ -v

# Mock server runs automatically via conftest fixtures
# No manual setup required

Интеграционные тесты (реальное устройство Roku)

# Requires env vars set
ROKU_DEV_IP=10.71.71.151 \
ROKU_DEV_PASSWORD=your-password \
pytest tests/test_integration_real_device.py -v

CI/CD

  • Модульные тесты выполняются на Ubuntu-раннерах GitHub Actions

  • Интеграционные тесты выполняются на self-hosted раннере (10.71.71.90) с доступом к реальному Roku через LAN

Структура проекта

src/rokumcp/
  config.py          # Environment-based configuration
  protocol.py        # Binary protocol constants and Stream I/O
  debug_client.py    # Synchronous binary debug client (port 8081)
  text_console.py    # Telnet text console client (port 8085)
  ecp.py             # ECP HTTP client (port 8060)
  installer.py       # HTTP Digest-auth sideloader (port 80)
  server.py          # MCP server entrypoint — 21 tools

tests/
  conftest.py                  # Pytest fixtures (mock server setup)
  mock_roku_server.py          # Mock Roku device simulator
  test_protocol.py             # Stream round-trips, ProtocolVersion
  test_config.py               # Config defaults, from_env
  test_ecp.py                  # ECP HTTP client
  test_text_console.py         # Telnet console client
  test_installer.py            # Digest auth + multipart
  test_debug_client.py         # Full E2E vs mock binary server
  test_integration_real_device.py  # Real device (gated on env vars)
  fixtures/                    # Test channel ZIP fixtures

Справочник по протоколу

Реализация основана на официальной документации Roku:

Полную спецификацию протокола и форматы передачи данных см. в AGENTS.md.

Разработка

Отладка протокола

# Run mock server manually
python tests/mock_roku_server.py

# Test specific protocol interaction
ROKU_DEVICE_IP=127.0.0.1 ROKU_DEBUG_PORT=8081 python -m rokumcp.server

Сборка

pip install -e .
roku-debug-mcp  # runs MCP server over stdio

Лицензия

Apache-2.0

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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 Servers

  • A
    license
    C
    quality
    A
    maintenance
    Enables AI agents to perform step-through debugging of Python, JavaScript/Node.js, and Rust programs using the Debug Adapter Protocol, with support for breakpoints, variable inspection, and stack traces.
    21
    159
    MIT
  • 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

View all related MCP servers

Related MCP Connectors

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

  • Agent Replay Debugger MCP — record every agent step + deterministic replay. Step-debugger for

  • Shared debugging memory for AI coding agents

View all MCP Connectors

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/dominick253/roku-debug-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server