roku-dev-mcp
Roku Development MCP Server (roku-dev-mcp)
Автономный сервер Model Context Protocol (MCP), который предоставляет AI-агентам кодирования (таким как Antigravity, Claude и Cursor) возможность разрабатывать, развертывать, навигировать, инспектировать и отлаживать приложения Roku BrightScript и SceneGraph.
1. Обзор
Roku OS разделяет API разработки на четыре различных сетевых протокола на четырех разных портах. roku-dev-mcp действует как контроллер-посредник, который связывает структурированный интерфейс вызова инструментов JSON агента с фрагментированной поверхностью API разработчика Roku.
┌──────────────────────────────────────────────────────────────────┐
│ 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
Включен режим разработчика:
Последовательность на пульте:
Home ×3 → Up ×2 → Right → Left → Right → Left → Right.Установите пароль разработчика (используется как
ROKU_DEV_PASSWORD).
Включена опция «Управление мобильными приложениями»:
Settings → System → Advanced system settings → Control by mobile apps→ выберите "Enabled".
Сетевое подключение:
Убедитесь, что хост-машина, на которой запущен MCP-сервер, находится в той же подсети, что и устройство Roku.
Порты
80,8060,8080и8085должны быть доступны.
3.2 Среда хоста
Node.js:
≥ 20.0.0(рекомендуется LTS)npm или pnpm
4. Конфигурация и переменные окружения
Создайте файл .env в корне проекта или настройте переменные окружения в вашем MCP-клиенте:
Переменная | Обязательна | По умолчанию | Описание |
| Да | — | Пароль разработчика, установленный при активации режима разработчика. |
| Нет | SSDP discovery | IPv4-адрес целевого устройства Roku (например, |
| Нет |
| Максимальное количество строк в кольцевом буфере BrightScript. |
| Нет |
| Задержка в миллисекундах между последовательными нажатиями клавиш. |
| Нет |
| Тайм-аут TCP-соединения для Telnet-сокетов. |
| Нет |
| Тайм-аут выполнения Telnet-команд. |
5. Настройка MCP-клиента
5.1 Конфигурация Antigravity / Claude Desktop
Добавьте сервер в конфигурацию вашего MCP-клиента (например, mcpServers в claude_desktop_config.json или настройки MCP в Antigravity):
{
"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[], необязательно): Дополнительные glob-шаблоны для исключения.
Возвращает: Результат развертывания, журналы запуска, длительность установки и статус сбоя.
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