obsbotd
obsbotd
Демон MCP для Linux, предназначенный для камер серии OBSBOT Tiny. Один демон владеет камерой; каждый агент — Claude Code, LibreChat, пользовательские фреймворки или любой другой инструмент, способный отправлять POST-запросы с JSON, — подключается к нему через streamable-http.
MCP clients (any framework, or bare curl)
│ streamable-http http://127.0.0.1:8626/mcp
▼
obsbotd ──► V4L2/UVC ioctls (ctypes) gimbal, zoom, focus, status
──► vendor XU protocol wake/sleep, AI tracking, exposure
──► ffmpeg snapshots (validated), clips, previewЗачем это нужно
Пакет obsbot-mcp из репозитория npm выполнил сложную работу — обратную разработку вендорского протокола и калибровку оптики, — но его архитектура (stdio MCP-сервер для каждого сеанса агента, предварительно собранный вспомогательный бинарник, выбор единственного владельца через IPC между сеансами) вызывала хронические эксплуатационные проблемы на многоагентной Linux-машине: устаревшие процессы-владельцы, выполняющие код недельной давности, непроверенные усеченные кадры и закрытый бинарник, в котором жили баги.
obsbotd сохраняет знания о протоколе и отбрасывает архитектуру:
Один демон, много клиентов. Никаких выборов, никаких процессов на сеанс, никаких устаревших владельцев. Запускается как пользовательский сервис systemd.
Никакого нативного бинарника. Слой V4L2/UVC — это ~200 строк ctypes; номера ioctl вычисляются на основе размеров структур, так что ошибка в компоновке приводит к громкому сбою.
Поддержка горячего подключения бесплатна. Ни один дескриптор устройства не удерживается между вызовами — каждый вызов инструмента заново обнаруживает
/dev/video*(субмиллисекундно). Отключение камеры возвращает{"ok": false, "camera_present": false}как нормальный результат; следующий вызов после повторного подключения просто работает.Кадры проверяются. Камера спорадически выдает усеченные кадры MJPEG, особенно сразу после пробуждения. Каждый снимок — это скопированный потоком сырой кадр, проверенный на наличие полного SOI..EOI, с повторными попытками до 4 раз, а затем опционально масштабированный (по умолчанию 640 px — пиксели снимка — это токены LLM).
Честные ошибки. Каждый сбой — это структурированный ответ
{ok: false, error}, на который агент может реагировать, — никогда не непрозрачное исключение инструмента. Сообщения об отказе объясняют, что делать вместо этого.Атомарные панорамирование и наклон. Обе оси в одном вызове
VIDIOC_S_EXT_CTRLS— в противном случае периодическое чтение-модификация-запись uvcvideo отменяет половину движения.Измеренная оптика.
obsbot_aim_at_pixel/obsbot_zoom_to_fitвыполняют визуальное сервирование с использованием модели поля зрения (67° широкое горизонтальное поле, 0.957 вертикальная коррекция, magnification = 3·ratio − 2) и прицеливания с составным вращением, унаследованного от калибровочной работы вышестоящего проекта.
Поддержка оборудования
Разработано и проверено на оборудовании с OBSBOT Tiny 2 Lite на Linux (ядро uvcvideo). Tiny 2 использует тот же вендорский протокол и должен работать без изменений; другие модели OBSBOT не тестировались. Одна камера на хост.
Известное ограничение ядра: uvcvideo кэширует CT_PANTILT_ABSOLUTE, поэтому
обратное чтение карданного подвеса — это последняя скомандованная поза, а не
текущая — инструменты помечены соответствующим образом, и предполагаемый
рабочий процесс проверяет наводку визуально.
Установка
Требуется Python ≥ 3.12, ffmpeg (и ffplay для окна предварительного
просмотра), а также права на чтение и запись к узлу /dev/video* камеры
(группа video).
git clone https://github.com/LumenPrima/obsbotd ~/obsbotd
cd ~/obsbotd
uv venv && uv pip install -e . # or: python3 -m venv .venv && .venv/bin/pip install -e .
.venv/bin/python -m obsbotd.server # listens on 127.0.0.1:8626Как сервис:
cp systemd/obsbotd.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now obsbotd
loginctl enable-linger $USER # optional: run without an active loginOBSBOTD_HOST / OBSBOTD_PORT переопределяют адрес привязки. По умолчанию
используется только localhost, и аутентификация отсутствует — не привязывайте
его к доступному интерфейсу, если вы не понимаете, что любой, кто может
добраться до порта, может управлять камерой и делать снимки.
Подключение агента
Конфигурация для MCP (Claude Code, большинство фреймворков):
{ "mcpServers": { "obsbot": { "type": "http", "url": "http://127.0.0.1:8626/mcp" } } }Нет библиотеки MCP? Сервер отвечает на простые POST-запросы JSON-RPC обычным
JSON — наивный агент может управлять им с помощью curl.
docs/AGENT-GUIDE.md содержит полное руководство по
интеграции, справочник по 18 инструментам и правила взаимодействия (никаких
ожиданий, проверяйте движение визуально, относитесь к отказам как к инструкциям).
Инструменты (18)
obsbot_snapshot · obsbot_status · obsbot_wake · obsbot_sleep ·
obsbot_gimbal_move · obsbot_gimbal_recenter · obsbot_gimbal_position ·
obsbot_zoom · obsbot_aim_at_pixel · obsbot_zoom_to_fit ·
obsbot_ai_track · obsbot_ai_track_speed · obsbot_focus ·
obsbot_exposure · obsbot_image_adjust · obsbot_image_mode ·
obsbot_record_clip · obsbot_preview
Документация протокола
docs/spec-*.md — это полная письменная спецификация вендорского проводного
протокола (60-байтовые кадры V3, CRC-16/USB, таблицы кодов операций,
60-байтовый блок состояния, карта селекторов) и измеренная оптика — извлечено
из исходного кода вышестоящего проекта в качестве эталона для повторной
реализации и полезно само по себе для всех, кто управляет этими камерами.
Проводной уровень проходит золотое тестирование на точных байтах кадров
вышестоящего проекта (tests/).
Тесты
tests/ не требуют оборудования: .venv/bin/python -m pytest tests/ -q
Благодарности
Обратная разработка вендорского протокола, каталог аппаратных особенностей и оптическая калибровка взяты из obsbot-mcp (MIT, © 2026 Michael Jordan). obsbotd — это независимая нативная для Linux повторная реализация серверной архитектуры на основе этих знаний.
Лицензия
MIT — см. LICENSE.
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
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
MCP server for Producer/Riffusion AI music generation
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
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/LumenPrima/obsbotd'
If you have feedback or need assistance with the MCP directory API, please join our Discord server