DualStream MCP Server
DualStream MCP Server
Наш первый проект с открытым исходным кодом! Официальный сервер Model Context Protocol для DualStream — студии стриминга, которая одновременно создаёт потоки для десктопа (16:9) и мобильных устройств (9:16) из единого конвейера.
Этот сервер позволяет ИИ-ассистентам, таким как Claude, управлять вашей студией DualStream: переключать сцены, сохранять мгновенные повторы, создавать целые макеты сцен с нуля, изменять стиль ваших алертов и виджетов и реагировать на события в прямом эфире. Всё работает локально на вашем компьютере, с вашего явного согласия, и каждое изменение отображается как на десктопном, так и на мобильном холсте.
AI assistant (Claude Code, Claude Desktop, or any MCP client)
| MCP over stdio
v
DualStream MCP server (this package)
| JSON-RPC over WebSocket, 127.0.0.1 only
v
DualStream desktop appЧто можно попросить
После подключения вы общаетесь с ассистентом на обычном языке:
«Переключи на мою сцену BRB»
«Сохрани клип последних 30 секунд»
«Создай сцену под названием MAIN с моей веб-камерой в правом нижнем углу, обрезанной в круг, и моим основным дисплеем на весь экран позади»
«Сделай мне сцену "скоро начнём" для благотворительного стрима в моих фирменных цветах, на обоих холстах»
«Переоформи мои алерты под эту палитру»
«Подними камеру немного вверх и добавь мягкую тень»
Ассистент обнаруживает ваше реальное оборудование (камеры, дисплеи, окна, микрофоны), независимо составляет макеты для десктопного и мобильного холстов и итеративно работает с вами, пока всё не будет выглядеть правильно.
Related MCP server: ATEM MCP Server
Перед началом работы
Вам понадобятся три установленных компонента. Каждый — обычный установщик «скачай и запусти»:
Приложение DualStream (Windows или macOS): студия, которой управляет этот сервер.
Node.js: выберите большую зелёную кнопку LTS (версия 22 или новее). Это среда выполнения, в которой работает сервер; напрямую вы с ней взаимодействовать не будете.
ИИ-ассистент, поддерживающий MCP, например Claude Desktop или Claude CLI.
Установка
Шаг 1: Скачайте этот проект на свой компьютер
Нажмите зелёную кнопку Code в верхней части этой страницы GitHub и выберите Download ZIP, затем распакуйте архив в место, которое вы запомните, например в папку «Документы». (Если вы знакомы с git, подойдёт и git clone.)
Шаг 2: Соберите проект
Откройте терминал в распакованной папке:
Windows: откройте папку в проводнике, щёлкните по адресной строке, введите
cmdи нажмите Enter.macOS: щёлкните правой кнопкой мыши по папке и выберите New Terminal at Folder (или перетащите папку на значок Terminal).
Затем выполните эти две команды одну за другой:
npm install
npm run buildКаждая выводит текст и возвращает приглашение. Всё, сервер собран.
Шаг 3: Сообщите о нём своему ассистенту
Вам понадобится полный путь к папке из шага 1. В проводнике Windows щёлкните по адресной строке и скопируйте его (выглядит как C:\Users\you\Documents\DualStreamMCP). На macOS щёлкните правой кнопкой мыши по папке, удерживая Option, и выберите Copy as Pathname.
Claude Desktop: откройте Settings → Developer → Edit Config и добавьте следующее (замените путь на свой; в Windows используйте двойные обратные слэши, как показано):
{
"mcpServers": {
"dualstream": {
"command": "node",
"args": ["C:\\Users\\you\\Documents\\DualStreamMCP\\dist\\index.js"]
}
}
}Claude CLI: одна команда (замените путь на свой):
claude mcp add dualstream -- node "C:\Users\you\Documents\DualStreamMCP\dist\index.js"Любой другой MCP-клиент работает так же: запустите node <folder>/dist/index.js как stdio-сервер.
Шаг 4: Поздоровайтесь
Перезапустите ассистента, убедитесь, что DualStream запущен, и спросите: «На какой сцене я сейчас в прямом эфире в DualStream?» При первом подключении DualStream покажет запрос на подтверждение; это работает модель безопасности (см. ниже). Подтвердите — и готово.
Первое подключение и безопасность
Приложение DualStream запускает небольшой управляющий сервер, привязанный только к 127.0.0.1. Из сети ничего не доступно, и этот MCP-сервер должен работать на той же машине, что и приложение. Облачных компонентов нет: интеллект — это тот ИИ-ассистент, которого вы подключаете, а ваш стрим никогда не выходит из-под вашего контроля.
Сопряжение автоматическое. Приложение публикует токен сопряжения в своём каталоге конфигурации, и этот сервер подхватывает его сам; вам никогда не нужно вводить пароль. При первом подключении ассистента DualStream показывает запрос на согласие с указанием имени клиента. Вы выбираете «Разрешить», «Всегда разрешать» или «Запретить». Пока вы не одобрите, подключение не может ничего делать. Вы можете видеть каждого подключённого клиента, отключать любого из них и отзывать сохранённые разрешения в любой момент в разделе Settings, General, External Control приложения.
Если вы запрещаете подключение, сервер закрывает его. Если вы сбросите токен сопряжения в настройках приложения, все подключённые клиенты будут отключены и должны будут сопрягаться заново.
Инструменты
Сцены и клипы
Инструмент | Описание |
| Список всех сцен. |
| Текущая активная сцена или null. |
| Переключить живой выход на сцену по id или имени. |
| Полное состояние сцены одним вызовом; якорь для повторной синхронизации. |
| Сохранить последние N секунд как пару клипов (горизонтальный и вертикальный файлы). |
| Опрос буферизованных событий приложения (смена сцен, сохранённые клипы, ретранслированные события стрима) с порядковыми номерами. |
| Доступно ли приложение, версия приложения и состояние одобрения этого подключения. |
| Блокировать до прибытия следующего события (или немедленно вернуть буферизованные). Примитив живого реагирования для автоматизаций. |
Композиция сцен
Создавайте и редактируйте сцены источник за источником. Макеты на десктопном (1920x1080) и мобильном (1080x1920) холстах управляются независимо, поэтому маленькая круглая камера на десктопе может быть полноширинной квадратной камерой на мобильном.
Инструмент | Описание |
| Перечислить камеры, карты захвата, дисплеи, окна и аудиовходы, готовые к добавлению. |
| Создать новую сцену, при желании сразу переключившись на неё. |
| Источники в сцене с их макетом для каждого холста. |
| Добавить камеру, дисплей, окно или аудиоустройство в сцену. |
| Удалить источник. |
| Позиционировать и масштабировать источник, для каждого холста. |
| Обрезать пиксели с краёв источника. |
| Маскировать источник в круг, скруглённый квадрат или скруглённый прямоугольник. |
| Применить рамку, тень, свечение или размытие. |
| Изменить порядок слоёв (вперёд, назад, вверх, вниз). |
Рецепты
Рецепты — это распространяемые шаблоны сцен DualStream: фон плюс позиционированные источники для обоих холстов, сохранённые как JSON на диске.
Инструмент | Описание |
| Список установленных рецептов. |
| Создать живую сцену из рецепта или применить рецепт в существующую сцену. |
| Создать новый рецепт из манифеста и сохранить его в вашу библиотеку. |
Виджеты
Инструмент | Описание |
| Прочитать текущие настройки блока алертов, чата, трекера целей или трекера прогнозов. |
| Применить новые настройки. Чтение и запись используют одну и ту же структуру, поэтому ассистент может получить, изменить и отправить обратно. |
AI Card
Инструмент | Описание |
| Опубликовать короткую карточку в стриме (заголовок и необязательное сообщение), отображаемую системой алертов с настроенным вами стилем. Тип алерта AI Card по умолчанию выключен; включите его в инспекторе алертов, чтобы разрешить публикацию. |
Автоматизации
Автоматизации связывают триггер события стрима (рейд, крупный донат, завершение хайп-поезда) с постоянной инструкцией для вашего ассистента. Когда происходит подходящее событие, DualStream передаёт его ассистенту вместе с вашей инструкцией; ассистент составляет и публикует карточку. Только события, соответствующие включённой автоматизации, когда-либо покидают приложение, и ассистент слушает только пока у вас открыта сессия. Полный формат документа, словарь событий и процесс репетиции описаны в contract/automations-v1.md.
Инструмент | Описание |
| Ваши сохранённые автоматизации и их постоянные инструкции. |
| Создать или обновить автоматизацию; подходящие события начинают передаваться немедленно. |
| Удалить автоматизацию. |
Типичная живая сессия: сообщите ассистенту, что вы выходите в эфир; он читает ваши
автоматизации, затем зацикливается на wait_for_event; ожидание ничего не стоит, и каждое
обработанное событие — это один короткий обмен (поприветствовать рейдеров, поблагодарить кита,
опубликовать карточку).
Ошибки инструментов — это структурированный JSON с флагом retryable, поэтому ассистенты
понимают разницу между «попробуй ещё через секунду» (буфер повторов ещё прогревается,
подключение ждёт вашего одобрения) и «что-то действительно не так».
Конфигурация
Всё работает без какой-либо настройки, когда приложение и этот сервер запущены под одной учётной записью пользователя. Эти переменные окружения существуют для нестандартных ситуаций:
Переменная | Назначение | По умолчанию |
| Имя, отображаемое в запросе согласия и списке клиентов DualStream |
|
| Запасные учётные данные, если приложение не публикует токен сопряжения | не задано |
| Переопределить путь к файлу обнаружения | каталог конфигурации платформы |
|
|
|
Discovery читает ws-control.json из каталога конфигурации приложения (%APPDATA%\app.dualstream.io\ в Windows, ~/Library/Application Support/app.dualstream.io/ в macOS). Приложение записывает этот файл при каждом запуске, до того как сервер управления сообщит о готовности.
Устранение неполадок
Инструменты возвращают app_not_running. Приложение DualStream не открыто или ещё не завершило запуск. Запустите его; сервер переподключится сам, как только приложение поднимется.
Инструменты возвращают consent_pending. Соединение ожидает вашего подтверждения. Одобрите его в окне запроса согласия внутри DualStream (или в разделе Settings, General, External Control).
Инструменты возвращают authentication_required или authentication_failed. В приложении включена аутентификация, но этот сервер не смог получить токен. Убедитесь, что приложение и сервер запущены от имени одного пользователя. Если вы недавно сбросили парный токен, переподключение обработает это автоматически; устаревший DUALSTREAM_CONTROL_PASSWORD в вашем окружении также может вызывать эту ошибку.
Что-то ещё не так. Сначала вызовите get_connection_status; он различает «приложение не запущено», проблемы аутентификации, согласия и протокола. Сервер пишет однострочный JSON в stderr; установите DUALSTREAM_MCP_LOG_LEVEL=debug для подробностей.
Заметки по дизайну
Локальность по замыслу. Плоскость управления работает только через loopback. Удалённый или размещённый на хостинге коннектор не может до неё добраться — и не должен.
Событийная модель, без таймеров. Выполняющиеся запросы завершаются только по ответу сервера или закрытию сокета, никогда по таймауту настенных часов. Переподключение запускается наблюдением за файлом discovery, который приложение перезаписывает при старте; никаких циклов опроса.
stdout — это канал протокола. Вся запись журнала идёт в stderr в виде однострочного JSON.
Привязка к контракту. Ответы проверяются по вендоренному контракту управления (см.
contract/); приложение, говорящее на более новой версии протокола, громко завершается с сообщением об обновлении, а не тихо ведёт себя некорректно.Согласие обеспечивается на стороне сервера. Шлюз одобрения находится в приложении DualStream, а не в этом пакете; модифицированный клиент ничего не выигрывает.
Каталог contract/ также содержит справочные материалы для авторов, которыми ассистент может пользоваться напрямую: формат манифеста рецептов, руководство по композиции сцен (включая шаблоны раскладки для мобильного холста), формат автоматизаций и PROTOCOL.md — полный справочник методов, событий и кодов ошибок, сгенерированный из фикстуры контракта.
Разработка
npm run typecheck # strict TypeScript over src and tests
npm test # unit + full MCP round-trips against a wire-faithful mock of the app
npm run build # emit dist/
npm run smoke # live end-to-end against a running DualStream app
# (switches a scene and back, saves one 10-second clip pair)Мок-сервер управления в test/ реализует реальный сетевой протокол, включая рукопожатие пары и поток согласия, с независимой реализацией алгоритма аутентификации, так что набор тестов по-настоящему перекрёстно проверяет клиент.
О DualStream
DualStream — это стриминговое студийное приложение для авторов, которые выходят в эфир одновременно на десктопных и мобильных платформах: один конвейер, два холста, каждая сцена и каждый виджет отрисовываются нативно для обеих. Скачайте его для Windows или macOS на dualstream.gg.
Лицензия
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 Servers
- AlicenseAqualityFmaintenanceEnables management of multi-platform streaming through the Restream API, allowing control of streaming channels, stream settings, and access to analytics across platforms like YouTube, Twitch, and Facebook through natural language.9121MIT
- AlicenseAqualityDmaintenanceEnables natural language control of Blackmagic ATEM video switchers via the Model Context Protocol. It allows users to manage camera switching, transitions, audio mixing, macros, and streaming operations through AI assistants.325MIT

WAVE MCP Serverofficial
AlicenseBqualityBmaintenanceExposes WAVE streaming APIs as tools for AI assistants to manage live streams, studio productions, and real-time analytics. It enables users to control stream lifecycles, monitor health metrics, and access billing usage through the Model Context Protocol.182041Apache 2.0- FlicenseAqualityCmaintenanceEnables AI agents to read, control, and orchestrate Singular.live live broadcast graphics compositions, including filling control nodes, animating sub-compositions, and running a newsroom rundown-to-graphics workflow.25
Related MCP Connectors
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Create, test, publish, and manage Dreamlit notification workflows from AI clients.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
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/DualStream/DualStreamMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server