Bosch Smart Home Camera MCP Server
Bosch Smart Home Camera — MCP-сервер
Сервер Model Context Protocol (MCP), который предоставляет облачный API Bosch Smart Home Camera в виде MCP-инструментов. Подходит для Claude Code, Claude Desktop и любого MCP-совместимого клиента. Использует проверенный API-клиент, созданный на основе обратной разработки, из родственного Python CLI-инструмента.
Статус: v1.7.2 — завершение паритета семейства (v1.7.0): зоны движения, маски конфиденциальности, правила автоматизации, общий доступ к камере/друзья, установка прошивки, длительность сирены, расписание освещения, аудио-интерком. Плюс раунд настройки изображения/видео и жизненного цикла камеры от 2026-08-19: наложение временной метки, светодиод состояния, угол наклона объектива, порог темноты, баланс белого, яркость верхнего/нижнего светодиода, мягкий/жёсткий сброс, переименование. 70 инструментов + 3 ресурса + 2 промпта, stdio/SSE/streamable-HTTP, установка через pipx/uvx
Содержание
Сравнение интеграций — выберите подходящий проект для вашей платформы
Related MCP server: 米家 MCP Server
Отказ от ответственности
Этот проект — независимый инструмент, разработанный сообществом. Он не связан с Robert Bosch GmbH, Bosch Smart Home GmbH или любыми их дочерними компаниями или филиалами, не одобрен и не спонсируется ими. «Bosch», «Bosch Smart Home» и связанные с ними названия и логотипы являются зарегистрированными товарными знаками Robert Bosch GmbH.
Инструмент взаимодействует с API, созданным на основе обратной разработки, недокументированным и неофициальным. Предоставляется «как есть», без каких-либо гарантий. Используйте полностью на свой страх и риск.
Зачем отдельный MCP-сервер?
Родственные проекты нацелены на разные среды выполнения:
Проект | Версия | Среда выполнения | Пользовательский интерфейс |
v16.0.1 | Home Assistant | Сущности UI, карточка Lovelace, автоматизации | |
v10.12.3 | терминал | команды | |
v1.8.3 | ioBroker | точки данных, виджеты VIS-2 (BoschCamera + BoschOverview), JSON-конфигурация в админ-UI | |
v0.4.2-alpha | Node-RED | узлы потоков для конвейеров автоматизации | |
v0.4.2-alpha | автономное веб-приложение | панель управления + детали камеры + настройки UI | |
MCP-сервер (этот репозиторий) | v1.7.1 | клиенты Claude | MCP-инструменты, вызываемые из LLM |
Сценарии использования LLM, которые не покрывают существующие родственные проекты:
«Сделай снимок садовой камеры и опиши, что ты видишь».
«Какое было последнее событие движения на террасе и во сколько?»
«Включи режим конфиденциальности на внутренней камере до 22:00, затем выключи его».
«Поверни 360° камеру влево и сделай снимок».
«Суммируй сегодняшние события движения по всем камерам».
Эти сценарии требуют LLM в цикле — именно для этого и предназначен MCP.
Архитектура
┌─────────────────────────┐ stdio / SSE / streamable HTTP ┌─────────────────────────┐
│ Claude Code / Desktop │ ←─────────────────────────────────────→ │ bosch-smart-home- │
│ (MCP host) │ MCP protocol │ camera-mcp server │
└─────────────────────────┘ └────────────┬────────────┘
│
imports / shared API client
│
▼
┌─────────────────────────┐
│ bosch_camera.py │
│ (sister Python CLI tool)│
└────────────┬────────────┘
│ HTTPS (OAuth2 PKCE)
▼
┌─────────────────────────┐
│ residential.cbs.bosch- │
│ security.com (cloud) │
└─────────────────────────┘MCP-сервер — это тонкая обёртка над API-слоем Python CLI. Он не реализует заново OAuth, обновление токенов, FCM push, RTSP или RCP — он их импортирует.
Это реальная зависимость времени выполнения, а не просто ссылка в документации. Сервер находит bosch_camera.py при запуске процесса через внедрение sys.path (adapters/cli_bridge.py), а не через обычную зависимость pip install — репозиторий родственного Python CLI-инструмента должен быть склонирован на диск, и MCP-серверу нужно знать, где он находится. Порядок разрешения: переменная окружения BOSCH_CAMERA_CLI_PATH, если она задана, в противном случае — фиксированный путь по умолчанию, используемый в собственной настройке сопровождающего (не переносимый — переопределите его). Почти каждый вызов инструмента в итоге импортирует bosch_camera из этого пути во время вызова (ensure_cli_importable()), поэтому отсутствующий или неправильный путь проявится как ImportError при первом вызове инструмента, а не при запуске сервера. Практически: клонируйте оба репозитория, затем либо установите BOSCH_CAMERA_CLI_PATH=/path/to/Bosch-Smart-Home-Camera-Tool-Python в окружении, в котором работает MCP-сервер, либо отредактируйте DEFAULT_CLI_PATH в adapters/cli_bridge.py для постоянной локальной установки. Тот же bosch_config.json, который CLI-инструмент создаёт через bosch_camera login, этот сервер читает для получения учётных данных — см. Модель аутентификации.
Маршрутизация инструментов с резервным вариантом LAN
flowchart LR
Agent["LLM / Claude Code"] -->|tool call| MCP[MCP Server]
MCP -->|prefer_local=False| Cloud[Bosch CBS API]
MCP -->|prefer_local=True| RCP["Camera LAN RCP\n192.168.x.y:443\nHTTPS Digest"]
RCP -->|success| Done["return {status, method: local}"]
RCP -->|fail| Cloud
Cloud --> Done2["return {status, method: cloud}"]
style RCP fill:#d4f1c4,color:#000
style Cloud fill:#dce8fb,color:#000Поток инструмента bosch_camera_lan_ping
sequenceDiagram
participant Agent as LLM Agent
participant Tool as bosch_camera_lan_ping
participant TCP as TCP connect :443
Agent->>Tool: {camera_name: "Outdoor"}
Tool->>Tool: resolve LAN IP from bosch_config.json
Tool->>TCP: connect 192.168.x.y:443 (1.5 s timeout)
TCP-->>Tool: connected / timeout
Tool-->>Agent: {reachable: true, ip: "...", latency_ms: 12}MCP-инструменты (всего 70, v1.7.2)
Инструмент | Описание | Возвращает |
| Список всех настроенных камер | массив |
| Получить состояние онлайн/офлайн + конфиденциальность для одной камеры |
|
| Захват JPEG только по LAN (без облака) — HTTP Digest к IP камеры |
|
| URL потока RTSPS только по LAN (без облачного ретранслятора) — доступен для ffmpeg/VLC/go2rtc |
|
| Список последних событий движения/человека/аудио | массив |
| Включить/выключить режим конфиденциальности; |
|
| Включить/выключить прожектор; |
|
| Панорамирование 360° камеры (только Gen1 CAMERA_360); |
|
| Переключить push-уведомления |
|
| TCP-проверка камеры на LAN-порту 443 (таймаут 1,5 с) |
|
| Получить текущее объявление об облачном обслуживании из RSS-ленты сообщества |
|
| Получить уровень микрофона, уровень динамика, флаг интеркома (только Gen2) |
|
| Установить уровень микрофона и/или уровень динамика 0-100 (только Gen2) |
|
| Получить конфигурацию обнаружения вторжений: режим, чувствительность 0-7, расстояние 1-8 м (только Gen2) |
|
| Обновить режим/чувствительность/расстояние обнаружения вторжений (только Gen2) |
|
| Получить конфигурацию обнаружения звука разбития стекла + дыма/пожарной сигнализации (только Gen2 Audio-Plus) |
|
| Обновить обнаружение звука разбития стекла и/или пожарной сигнализации (только Gen2 Audio-Plus) |
|
| Получить WiFi RSSI, SSID и производное качество сигнала 0-100 % |
|
| Прямой снимок MJPEG по LAN через RTSP inst=3 (только Gen2, ffmpeg, без облачного обхода) |
|
| Чтение областей устройства ONVIF из LAN RCP камеры 0x0a98 (только Gen2) |
|
| Чтение версии библиотеки RCP из LAN-опкодов камеры 0xff00 + 0xff04 |
|
| Получить флаги функций облака Bosch на уровне аккаунта (без параметра камеры) |
|
| Запустить встроенную сирену (только Gen2 Indoor II); |
|
| Получить состояние обнаружения движения + чувствительность |
|
| Установить включение обнаружения движения и/или чувствительность |
|
| Получить настройку звука облачной записи |
|
| Установить звук облачной записи |
|
| Получить состояние автослежения 360° (только Gen1 Indoor) |
|
| Установить автослежение 360° (только Gen1 Indoor) |
|
| Получить состояние звукового сигнала конфиденциальности |
|
| Установить состояние звукового сигнала конфиденциальности |
|
| Получить количество непрочитанных событий для камеры |
|
| Сводка состояния для всех камер (статус + WiFi + конфиденциальность + последнее событие + непрочитанные) | массив словарей состояния для каждой камеры |
| Локальный разбор JWT — возвращает действительность, срок действия, email (без сетевого вызова) |
|
| Список прямоугольников зон обнаружения движения (нормализованные 0.0-1.0) | массив |
| Заменить все зоны движения (полная замена, не слияние) | массив |
| Удалить все зоны движения |
|
| Список прямоугольников зон маски конфиденциальности (нормализованные 0.0-1.0) | массив |
| Заменить все маски конфиденциальности (полная замена, не слияние) | массив |
| Удалить все маски конфиденциальности |
|
| Список правил автоматизации (расписания) для одной камеры | массив |
| Создать новое правило расписания |
|
| Обновить существующее правило (частичное обновление) |
|
| Удалить правило |
|
| Список друзей/приглашений для совместного доступа к камерам (на уровне аккаунта) | массив |
| Пригласить друга по email (на уровне аккаунта) |
|
| Поделиться одной камерой с существующим другом (объединяется с их существующими общими доступами) |
|
| Отозвать все общие доступы к камерам у друга |
|
| Полностью удалить друга |
|
| Получить текущую/последнюю версию прошивки + доступность обновления |
|
| Установить ожидающее обновление прошивки (камера перезагружается 3-7 мин) |
|
| Установить продолжительность сигнала сирены, 10-300 с (только Gen2 Indoor II) |
|
| Получить расписание LED-освещения (уличные камеры Eyes) |
|
| Обновить расписание LED-освещения (уличные камеры Eyes) |
|
| Открыть сеанс прослушивания аудио (микрофон камеры → вызывающий); возвращает URL RTSPS, только прослушивание |
|
| Получить, встроена ли накладка даты/времени в видео |
|
| Включить/выключить накладку даты/времени на видео |
|
| Получить состояние светодиода состояния камеры вкл/выкл (только Gen2) |
|
| Включить/выключить светодиод состояния камеры (только Gen2) |
|
| Получить высоту установки объектива в метрах (только Gen2) |
|
| Установить высоту установки объектива, 0.5-5.0 м (только Gen2) |
|
| Получить порог освещения день/ночь + режим затухания (только Gen2) |
|
| Установить порог освещения день/ночь и/или режим затухания (только Gen2) |
|
| Получить баланс белого переднего света, -1.0 холодный .. 1.0 тёплый (только Gen2) |
|
| Установить баланс белого переднего света (только Gen2) |
|
| Получить яркость верхнего или нижнего светодиода 0-100 % (только Gen2) |
|
| Установить яркость верхнего или нижнего светодиода 0-100 % (только Gen2) |
|
| Перезагрузить одну камеру (мягкий сброс) |
|
| Сброс до заводских настроек одной камеры — РАЗРУШИТЕЛЬНО, отвязывает камеру; требует |
|
| Переименовать камеру через облачный API |
|
Инструменты, намеренно НЕ предоставляемые LLM (рискованные для записи / затратные по времени):
Обновление токена (обрабатывается незаметно базовым клиентом)
Загрузка облачных клипов (большие объёмы данных)
Двусторонняя связь (микрофон вызывающего → динамик камеры): вообще не предоставляется облачным API Bosch (то же ограничение, что и у родственного CLI) —
bosch_camera_intercom_openработает только на прослушивание
Перенесено из интеграции HA, но намеренно НЕ добавлено (несоответствие архитектуре — см. аудит docs/family-parity-plan.md от 2026-08-19 для полного обоснования):
open_live_connection(явное открытие сессии / поддержание активности) — инструменты MCP представляют собой одноразовые запросы/ответы без фонового процесса, который мог бы удерживать сессию между вызовами;bosch_camera_stream_urlуже создаёт свежий, сразу пригодный к использованию URL при каждом вызове — это эквивалент в стиле MCP.«Передняя дверь» Frigate / внешний RTSP (постоянный RTSP-сервер без учётных данных) — по той же причине: требует длительно работающего серверного процесса, которого нет в этом stateless-интерфейсе.
delete_event/send_event_webhook— оба работают с собственным локальным кэшем файлов событий HA и конфигурациейwebhook_url/enable_webhook_delivery; этой инфраструктуры у данного инструмента нет (события здесь извлекаются по запросу из облака Bosch и никогда не хранятся локально).Чтение истории AI-оповещений —
ai_alert_store.pyиз HA читает файлы относительноhass.config.pathв собственной структуре хранения HA; связывание с этим было бы хрупким и не имеет явной пользы, когда MCP-клиент сам обычно является LLM, выполняющим анализ.Выборы
video_quality/stream_modeиimage_rotation_180— все три являются только клиентскими предпочтениями в HA (вообще без вызова облачного API Bosch: качество выбирает параметр RTSPSinst=, stream_mode выбирает LOCAL vs REMOTE, поворот — это только отображаемое CSS/PIL-преобразование) без постоянного состояния сессии, к которому их можно было бы привязать здесь.pan_presetуже покрыт —bosch_camera_pan(preset=...)доступен с версии v1.x.
Надёжность — прозрачная ротация учётных данных
Путь записи LAN-RCP с prefer_local=True (bosch_camera_privacy_set, bosch_camera_light_set) автоматически повторяет попытку один раз при HTTP 401 после повторного получения свежих Digest-учётных данных из bosch_config.json. Никаких видимых пользователю изменений API — повтор незаметен, и результат инструмента идентичен независимо от того, потребовалась ли ротация. Это устраняет сбои холодного старта, когда кэшированный nonce Digest истёк. bosch_camera_pan в настоящее время не принимает параметр prefer_local — панорамирование всегда идёт через облако Bosch.
Ресурсы MCP
URI ресурса | Описание |
| JSON-список всех камер (id, name, model, status, firmware, mac, description) |
| Последний кэшированный JPEG или свежий снимок, если кэш пуст |
| Последние 50 событий (motion, person, audio) в виде JSON-списка |
bosch://cameras — статический ресурс. Варианты с {name} — шаблоны ресурсов.
Промпты MCP
Промпт | Аргументы | Описание |
|
| Многошаговый отчёт: события по каждой камере, разбивка по типам, распределение по времени, выделение аномалий |
| (нет) | Снимок каждой камеры, описание сцены, отметка аномалий, рекомендация включить локальный режим конфиденциальности |
Позиция по конфиденциальности — медиа-операции только через LAN
Снимки и URL потоков идут напрямую от MCP-хоста к камере по LAN — без ретрансляции через облако Bosch. Остальные инструменты (статус, события, конфиденциальность/свет/панорамирование/уведомления) по-прежнему используют облако, поскольку для этих конечных точек локальный API в настоящее время не предоставлен.
Инструмент | Путь |
| Только LAN — HTTP Digest к IP камеры |
| Только LAN — RTSPS через локальный TLS-прокси Bosch |
| Только LAN — TCP-подключение к порту 443 камеры |
| Облако Bosch (локального API пока нет) |
| Облако Bosch |
| Сначала LAN-RCP, затем облако — только Gen2 |
| Облако Bosch (локального API пока нет) |
MCP-хост должен находиться в той же сети, что и камеры, для работы медиа-инструментов. Если это не так, инструменты снимков/потоков возвращают local_unavailable, а не переключаются на облако — это сделано намеренно.
Модель аутентификации
Сервер работает с существующим bosch_config.json пользователя из родственного Python CLI-инструмента — без отдельного потока OAuth, без хранения учётных данных этим репозиторием. Сгенерируйте его один раз через bosch_camera login в CLI (браузерный OAuth2 PKCE), затем укажите MCP-серверу путь к нему:
--config <путь>/ переменная окруженияBOSCH_CAMERA_CONFIG=<путь>: явный путь кbosch_config.json.Если ни то, ни другое не задано, мост использует то, что найдёт разрешение по умолчанию в
get_session_and_cameras()рядом с checkout родственного CLI (см. Архитектура — расположение самого родственного CLI определяется черезBOSCH_CAMERA_CLI_PATHили фиксированный путь по умолчанию).
MCP-сервер никогда не читает и не записывает учётные данные сверх того, что уже делает CLI-инструмент (обновление токена при 401, атомарное сохранение) — он напрямую вызывает код сессии/конфигурации CLI через импорт cli_bridge.
Режимы транспорта
Поддерживаются три режима транспорта через флаг --transport:
Режим | Флаг | Сценарий использования |
|
| Claude Code / Claude Desktop — локальный подпроцесс |
|
| Удалённые / многоклиентские развёртывания по HTTP |
|
| Устаревшие SSE-клиенты |
Режимы HTTP и SSE по умолчанию привязываются к 127.0.0.1:8765 (безопасно, только локально).
Передавайте --http-host 0.0.0.0 только в доверенных сетевых средах с брандмауэром.
# stdio (default) — used by Claude Code / Claude Desktop
bosch-smart-home-camera-mcp --config ~/.config/bosch-camera/bosch_config.json
# streamable-HTTP — local port for multi-client use
bosch-smart-home-camera-mcp --transport http --http-port 8765
# streamable-HTTP — expose to LAN (ensure firewall rules!)
bosch-smart-home-camera-mcp --transport http --http-host 0.0.0.0 --http-port 8765Технологический стек
Python 3.10+
mcp— официальный Python SDK MCPpydantic(уже транзитивная зависимостьmcp) для схем инструментовПереиспользование:
bosch_camera.pyиз родственного CLI-репозитория, расположение определяется во время выполнения черезsys.path(BOSCH_CAMERA_CLI_PATHили настраиваемый путь по умолчанию) — не зависимость, устанавливаемая черезpip, см. Архитектура
Установка
# via pipx (recommended for end users — isolated environment, PATH entry)
pipx install bosch-smart-home-camera-mcp
# via uvx (zero-install, one-shot — no persistent env needed)
uvx bosch-smart-home-camera-mcp --help
# from source (for development)
pip install -e .[test]Мейнтейнерам: публикация на PyPI автоматизирована — push тега
v*.*.*запускает workflow publish-pypi через OIDC Trusted Publisher. Не запускайтеtwine uploadвручную.
Добавление в Claude Code — stdio (локально, рекомендуется)
claude mcp add bosch-camera -- bosch-smart-home-camera-mcp \
--config ~/.config/bosch-camera/bosch_config.jsonДобавление в Claude Code — streamable-HTTP (удалённый сервер)
# Start server first:
bosch-smart-home-camera-mcp --transport http --http-port 8765
# Then register the HTTP endpoint:
claude mcp add bosch-camera --transport http http://127.0.0.1:8765/mcpДобавление в Claude Desktop
Добавьте следующее в ваш claude_desktop_config.json (обычно ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows):
{
"mcpServers": {
"bosch-camera": {
"command": "bosch-smart-home-camera-mcp",
"args": [
"--config",
"/path/to/bosch_config.json"
]
}
}
}Замените /path/to/bosch_config.json на фактический путь к вашему bosch_config.json (сгенерированному родственным Python CLI-инструментом через bosch_camera login). Сервер запускается как локальный подпроцесс stdio — сетевой порт для Claude Desktop не нужен.
Структура репозитория
Bosch-Smart-Home-Camera-Tool-MCP/
├── README.md this file
├── CHANGELOG.md full version history
├── LICENSE MIT
├── pyproject.toml build + tool config
├── requirements.txt runtime pins (mcp, etc.)
├── requirements-test.txt pytest, pytest-asyncio, mocks
├── src/
│ └── bosch_camera_mcp/
│ ├── __init__.py
│ ├── server.py FastMCP server + all 70 MCP tools
│ ├── adapters/
│ │ ├── cli_bridge.py sys.path bridge to the sister Python CLI for cloud ops
│ │ └── __init__.py
│ ├── lan_rcp.py direct LAN HTTPS+Digest for RCP writes
│ ├── cloud_ssl.py pinned Bosch cloud CA / SSL context (CWE-295)
│ ├── time_utils.py Bosch timestamp cleanup helpers
│ ├── maintenance.py cloud maintenance RSS feed fetcher
│ ├── errors.py shared error types (MCPError)
│ ├── resources.py MCP resources (bosch://cameras/…)
│ └── prompts.py MCP prompts (daily-summary, pre-leave)
├── tests/ 30+ test modules — tool behavior, LAN-RCP/cred-rotation,
│ cert pinning, transports, resources, prompts, packaging
├── docs/
│ ├── architecture.md
│ └── release-process.md
└── .gitignoreИстория версий
v0.1.0 — концепт-документ + сервер-скелет, все инструменты определены, но ещё не реализованы (возвращают
NotImplementedError) ✅v0.2.0 — все 8 инструментов подключены: инструменты чтения (list, status, events, snapshot) + инструменты записи (privacy, light, pan, notifications) через инъекцию sys.path (Option C) ✅
v0.4.0 — ресурсы (
bosch://cameras,bosch://cameras/{name}/snapshot.jpg,bosch://cameras/{name}/events) + промпты (daily-camera-summary,pre-leave-check) ✅v0.5.0 — транспорт streamable-HTTP (
--transport http|sse|stdio), упаковка дляpipx/uvx, 24 новых теста ✅v1.0.0 — первый стабильный релиз: 106 тестов, опубликованы wheel + sdist на GitHub Releases, публикация на PyPI ожидается ✅
v1.1.0 — медиа-путь только через LAN (усиленная конфиденциальность):
bosch_camera_snapshotи новыйbosch_camera_stream_urlидут напрямую к камере по LAN, без облачного ретранслятора Bosch для медиа. 113 тестов. ✅v1.2.0 — инструмент
bosch_camera_maintenance_status: получает облачные объявления о техническом обслуживании из RSS-лент сообщества; возвращает состояние (active/scheduled/past/recent/unknown/idle), заголовок, временное окно, ссылку. ✅v1.3.0 — набор функций с запасным вариантом через LAN (перенесено из HA-интеграции v12.4.10/v12.4.11): инструмент
bosch_camera_lan_ping(TCP-проба любой камеры в LAN);prefer_local=Trueдляbosch_camera_privacy_set/bosch_camera_light_set(путь записи RCP-LAN, Gen2, облачный запасной вариант при сбое); полеrecommended_actionуbosch_camera_maintenance_status("check_lan"при активном статусе,"wait"при запланированном). 173 теста. ✅v1.3.3 — аудио get/set, обнаружение вторжений get/set, информация о WiFi (кросс-порт из HA v12.7.0). 16 инструментов. ✅
v1.3.4 — именованные пресеты PTZ (
bosch_camera_pan preset=принимаетhome / left / right / back-left / back-right); прозрачная ротация учётных данных при 401 для LAN-RCP инструментов (тихий повтор, без изменения API). ✅v1.3.6 — 9 исправлений ошибок по итогам live-аудита 2026-05-24 (список камер всегда актуален из облака, hw_version для Gen1/Gen2, разрешение UUID, сопоставление полей событий, audio camelCase, шлюз intrusion для Gen2, коды ошибок, временная метка снимка, зеркало requirements-test.txt). ✅
v1.4.0 — 4 новых инструмента:
bosch_camera_mjpeg_snapshot,bosch_camera_onvif_scopes,bosch_camera_rcp_version,bosch_camera_feature_flags. Асинхронный помощник_fetch_rcp_lan. Всего 20 инструментов. ✅v1.5.0 — 11 новых инструментов + 8 исправлений ошибок по итогам live-аудита камер (4 аппаратных устройства, все 4 поколения): запуск сирены, motion get/set, recording get/set, autofollow get/set, privacy-sound get/set, unread-count, health-check-all, token-status. ✅
v1.5.1 — исправлен
_fetch_rcp_lan(использовался несуществующийaiohttp.DigestAuth→onvif_scopes/rcp_versionвсегда падали по LAN; теперьhttpx.DigestAuth). Покрытие тестами 83→98%, фикстуры очищены, CI обновлён до мажорных версий экшенов, нативных для Node-24. ✅v1.5.2 — гигиена зависимостей: убрана неиспользуемая runtime-зависимость
aiohttp(теперь только для тестов), добавлены минимальные версии безопасностиpyjwt>=2.13.0/starlette>=1.0.1(pip-auditчист), исправлен тест, который мокал не тот HTTP-стек. ✅v1.5.3 — патч безопасности: закреплён облачный CA Bosch для MCP-облачной сессии (CWE-295, GHSA-6qh5-x5m5-vj6v); закрывает MITM из соседней сети для OAuth-токенов. Локальный TOFU-пиннинг без изменений. ✅
v1.5.4 — временные метки событий больше не теряют смещение часового пояса:
/v11/eventsвозвращает метки со смещением (например,+02:00[Europe/Berlin]); сервер теперь отрезает только завершающий суффикс[zone]вместо обрезания до 19 символов, сохраняя явное смещение UTC. ✅v1.5.5 — ресурс
camera_eventsтеперь используетeventType + eventTagsдля корректной классификации событий. ✅v1.6.0 — 2 новых инструмента:
bosch_camera_audio_detection_get/bosch_camera_audio_detection_set— обнаружение звука разбитого стекла и дымовой/пожарной сирены для камер Gen2 Audio-Plus (кросс-порт из HA integration v14.2.0). Всего 34 инструмента. ✅v1.7.0 — завершение family-parity (
docs/family-parity-plan.md§2b): 21 новый инструмент закрывает разрыв возможностей MCP vs HA/CLI — зоны движения get/set/clear, приватные маски get/set/clear, правила автоматизации list/add/edit/delete, общий доступ к камере и список друзей: invite/share/unshare/remove, статус/установка прошивки (зеркалирует защитуasync_install_firmwareиз HA), длительность сирены, расписание LED-подсветки get/set и инструмент аудиосвязи listen-audio (микрофон камеры → вызывающий, RTSPS URL; двусторонняя связь вообще не представлена в облачном API Bosch — то же ограничение, что и у родственного CLI). Усиление CI: порог покрытия (--cov-fail-under=96),pip-audit(только runtime-зависимости),pylint,codespell, CodeQL, gitleaks secret-scan и workflow dependency-review — паритет уровня Gold с гейтами качества HA-интеграции. Всего 55 инструментов. ✅v1.7.2 — только документация: исправлена строка Login в таблице Integration Comparison для этого репозитория, без функциональных изменений. ✅
Релизы
Последняя версия: v1.7.2 — полные примечания см. на странице релизов GitHub: Примечания к релизу v1.7.2 →
Все релизы | Страница GitHub Releases — каждая тегнутая версия с примечаниями и загружаемыми файлами |
Полная история |
|
Сравнение интеграций
API камер Bosch Smart Home, восстановленный в результате реверс-инжиниринга, доступен через пять родственных проектов. Выберите тот, который подходит для вашей платформы.
Функция | ||||||
Зрелость | v15.0+ — шкала качества HA Platinum | v10.12+ стабильная (Mini-NVR BETA) | v1.8+ стабильная · npm | v1.7+ стабильная · PyPI | v0.4.0 альфа · PyPI | v0.4.0 альфа · npm |
Платформа | Home Assistant (HACS) | Автономный CLI на Python 3.10+ | ioBroker (npm) | Python 3.10+ · pipx / uvx · stdio + streamable-HTTP для MCP-клиентов (Claude Desktop, Claude Code, пользовательских) | Веб-приложение NiceGUI · Python 3.10+ | Палитра Node-RED · npm |
Вход | OAuth2 PKCE (браузер) | OAuth2 PKCE (браузер) | OAuth2 PKCE (браузер) | ◑ использует CLI | ◑ использует CLI | ◑ refresh-токен из CLI |
Снимки | ✅ Встроенный | ✅ команда | ✅ Файловое хранилище + base64 DP | ✅ | ✅ живой + резервный по событиям | ✅ узел |
Живой RTSP-поток (LAN) | ✅ через компонент HA Stream | ✅ вывод ffmpeg/RTSPS | ✅ TLS-прокси → локальный RTSP | ✅ | ◑ внутренний (go2rtc) | ◑ узел |
WebRTC (задержка менее секунды) | ✅ через встроенный go2rtc | ✅ (v10.6.0) | ❌ | ❌ | ✅ через go2rtc (иначе снимок) | ❌ |
URL двойного потока (основной + дополнительный) | ✅ | ✅ | ✅ | ◑ | ❌ (только дополнительный поток) | ◑ только URL — без опции дополнительного потока |
Внешний рекордер (BlueIris, Frigate) | ✅ через go2rtc | ✅ конвейер stdout | ✅ URL с Digest-учётными данными + опция привязки к LAN | ✅ возвращается URL, передача в ffmpeg / go2rtc ниже по цепочке | ❌ | ◑ |
Режим конфиденциальности | ✅ сущность-переключатель | ✅ команда | ✅ DP | ✅ | ✅ переключатель | ✅ узел |
Передний прожектор (Gen1/Gen2) | ✅ сущность-свет | ✅ команда | ✅ DP | ✅ | ❌ (заглушка фазы 2) | ✅ узел |
RGB-подсветка стены (Gen2 Outdoor II) | ✅ свет с RGB | ◑ только вкл/выкл — без RGB | ✅ DP цвета + яркости | ❌ (только вкл/выкл — RGB не доступен) | ❌ | ◑ только вкл/выкл + интенсивность — без RGB (v0.3.0-alpha) |
Сирена тревоги | ✅ сущность-кнопка (Gen2 Indoor II) | ✅ команда (только Gen2 Indoor II) | ✅ DP | ✅ | ✅ триггер + длительность (только Gen2 Indoor II) | ❌ |
Обновление прошивки | ✅ сущность обновления + поток исправлений Repairs, кнопка установки (v14.4.10) | ✅ статус + установка (v10.11.0) | ✅ состояния прошивки + триггер установки, защита от записи (v1.8.0) | ✅ статус + инструменты установки (v1.7.0) | ◑ отображение статуса только для чтения, без установки | ✅ узлы статуса + установки (v0.4.0-alpha) |
Поворот изображения на 180° | ✅ переключатель | ❌ | ✅ DP | ❌ | ❌ | ❌ |
События движения / человека / аудио | ✅ FCM push + резервный опрос | ◑ только команда | ✅ FCM push + резервный опрос | ✅ | ◑ таблица событий только для извлечения | ✅ узел |
Состояние срабатывания по фронту движения | ✅ | н/д | ✅ | н/д (запрос-ответ, без подписки) | ❌ | ❌ |
Автоснимок при движении | ✅ обновляет сущность Camera | н/д | ✅ записывает | н/д (без фонового цикла) | ❌ | ❌ |
Синтетический триггер движения (внешний датчик) | ✅ сервис | н/д | ✅ DP | ❌ | ❌ | ❌ |
Зоны движения / маски конфиденциальности | ✅ чтение + запись | ✅ чтение + запись | ✅ чтение + запись (v1.8.0) | ✅ get / set / clear (v1.7.0) | ❌ (пока нет визуального редактора) | ❌ |
Правила автоматизации / расписания | ✅ чтение + запись | ✅ чтение + запись | ✅ полный CRUD (v1.8.0) | ✅ list / add / edit / delete (v1.7.0) | ✅ полный CRUD (list/add/edit/delete) | ❌ |
Расписание освещения | ✅ чтение (запись через сервис, только Gen1 Eyes Outdoor) | ✅ чтение + запись | ✅ чтение (только Gen1, v1.2.0) | ✅ get / set (v1.7.0) | ✅ чтение + запись (уличные камеры Eyes) | ❌ |
Загрузка облачных клипов (история ~30 дней) | ✅ через Media Browser | ❌ | ❌ (отложено — пока нет запросов сообщества) | ❌ (намеренно не реализовано — большие объёмы данных) | ❌ (используйте CLI) | ◑ |
Mini-NVR (локальная запись) | ✅ непрерывная + буферизованная по событиям, кольцевой буфер с предзаписью (v11.2.0 BETA → v14.7.0 modes) | ◑ мультиплексирование сегментов по событиям, без кольцевого буфера предзаписи (v10.7.0 BETA) | ❌ (передаёт внешнему рекордеру через RTSP-конечную точку без учётных данных) | ❌ (нет концепции NVR) | ◑ только непрерывная, без буферизации по событиям (v0.4.0-alpha) | ◑ только непрерывная через узел |
Загрузка клипов на SMB / NAS | ✅ | ✅ (v10.7.0 BETA) | ❌ | ❌ | ❌ | ❌ |
Общий доступ к камере (друзья) | ✅ сервисы (share / invite / list) | ✅ команда | ✅ share / invite / remove (только Gen2, v1.8.0) | ✅ list / invite / share / unshare / remove (v1.7.0) | ✅ list/invite/remove/share/unshare | ❌ |
Панорамирование / наклон (360° Gen1) | ✅ сервисы | ✅ команда | ✅ | ✅ | ✅ ползунок, подключённый к живому API | ❌ |
Именованные пресеты панорамирования (home / left / right / back-left / back-right) | ✅ сущность-селектор по выбору | ✅ флаг | ✅ | ✅ | ❌ | ❌ |
Двустороннее аудио / домофон | ❌ | ✅ команда | ❌ | ◑ только прослушивание | ❌ | ❌ |
Доставка вебхуков по событиям | ✅ сервис + опции по выбору | ✅ | ✅ через MQTT-мост | ❌ (модель запрос-ответ) | ❌ | ❌ |
MQTT-мост событий (движение / аудио / человек) | н/д (встроенная шина событий HA) | н/д (однократный запуск) | ✅ настраивается администратором | н/д | ❌ | ❌ |
Apple HomeKit (через мост HA Core) | ✅ задокументировано | н/д | н/д | н/д | н/д | н/д |
Планировщик снимков / таймлапс | ✅ примеры/ YAML | ✅ примеры cron + ffmpeg | ✅ пример Blockly | н/д | ❌ | ❌ |
Встроенная карточка / виджет панели | ✅ 2 карточки Lovelace (одиночная + сетка) | н/д | ✅ 2 виджета vis-2 — BoschCamera + BoschOverview multi-cam | н/д | ✅ (сам является веб-панелью) | ❌ |
Картинка-в-картинке переживает фоновую вкладку | ✅ | н/д (нет интерфейса) | ✅ собственный PiP + восстановление после зависания, Web-Worker heartbeat (v1.7.2/v1.7.3) | н/д (нет интерфейса) | ✅ reconnect-timeout + восстановление после зависания (v0.4.0-alpha) | н/д (нет интерфейса) |
Облачный ретранслятор REMOTE (резервный) | ✅ автоматическое переключение при недоступности LAN | ✅ удалённый режим | ❌ (только LOCAL по дизайну) | ❌ (медиа только через LAN; статус/события через облако) | ◑ наследует CLI | ◑ опция REMOTE (вручную) |
Веб-интерфейс администрирования / настройки | ✅ HA Config Flow | н/д (CLI) | ✅ вкладки JSON-конфигурации | н/д (через LLM; конфигурация через CLI / MCP-клиент) | ✅ страница настроек | ◑ узел конфигурации редактора |
Языки интерфейса | EN · DE · FR · ES · IT · NL · PL · PT · RU · UK · ZH-Hans (v12.4.0) | EN · DE · FR · ES · IT · NL · PL · PT · RU · UK · ZH-Hans (v10.3.0) | EN · DE · FR · ES · IT · NL · PL · PT · RU · UK · ZH-CN | н/д (нет интерфейса — LLM является фронтендом) | ◑ i18n на бэкенде · интерфейс в основном EN | н/д (только английский) |
Легенда: ✅ поддерживается · ❌ не поддерживается / не запланировано · n/a неприменимо для этой платформы.
Все четыре проекта используют одну и ту же исследовательскую базу по обратному проектированию Cloud API и протокола RCP, но развиваются независимо. Интеграция Home Assistant — самая функционально полная эталонная реализация; Python CLI — низкоуровневый / скриптуемый интерфейс; адаптер ioBroker ориентирован на дашборды VIS и автоматизации Blockly; MCP-сервер предоставляет MCP-клиентам (Claude Desktop, Claude Code, кастомным) курируемый набор инструментов, ориентированный в первую очередь на LAN, для управления камерами на естественном языке.
Связанные проекты
Часть семейства из пяти реализаций для камер Bosch Smart Home Cameras (плюс альфа-фронтенд):
Реализация | Репозиторий | Статус |
🏆 Home Assistant Integration | v16.0.1 · HA Quality Scale Platinum · готов к продакшену | |
🐍 Python CLI | v10.12.3 · Mini-NVR + SMB-загрузка (BETA) · запасной вариант LAN (ping / --local) · пресеты PTZ · доставка вебхуков · захват / исследование / автономный | |
🟢 ioBroker Adapter | v1.8.3 · стабильная версия · npm · переключатель приватности, ротация Digest · MQTT-мост · пресеты PTZ · виджеты VIS-2 (BoschCamera + BoschOverview) | |
🤖 MCP Server (этот репозиторий) | v1.7.2 · ротация учётных данных · пресеты PTZ · закрепление сертификатов TOFU · закрепление облачного CA (CWE-295) · LAN-ping + prefer_local · zones/masks/rules/friends/firmware-install · интеграция с Claude Code / Claude Desktop | |
🔴 Node-RED nodes (alpha) | v0.4.2-alpha · узлы для событий / снимков / приватности / конфигурации и др. |
Также: Bosch Smart Home Camera — Python Frontend (NiceGUI) — v0.4.2-alpha (дашборд + детали камеры + настройки) — приветствуется интерес сообщества
HA остаётся эталонной реализацией — функции сначала появляются там; Python CLI, ioBroker Adapter и MCP Server со временем догоняют.
Лицензия
MIT — см. LICENSE.
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 controlling and querying Home Assistant devices and services via natural language. Supports state retrieval, listing states, and calling any Home Assistant service.132765MIT
- AlicenseNot gradedqualityAmaintenanceEnables natural language control of Xiaomi smart home devices through MCP, focusing on homes, rooms, device names, and scenes without requiring protocol details.65MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language control of Loxone smart home systems, including lighting, audio, climate, and environmental monitoring, through MCP-compatible clients.152AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceEnables control of local Xiaomi smart home devices via MCP, allowing reading real-time status and setting properties through natural language, without relying on the Xiaomi cloud.MIT
Related MCP Connectors
Official Microsoft MCP Server to query Microsoft Entra data using natural language
MCP server wrapping the Tesla Fleet API and TeslaMate API
MCP server exposing the AceDataCloud Fish Audio API (text-to-speech with voice conditioning)
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/mosandlt/Bosch-Smart-Home-Camera-Tool-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server