Skip to main content
Glama
mosandlt

Bosch Smart Home Camera MCP Server

by mosandlt

Bosch Smart Home Camera — MCP Server

Model Context Protocol (MCP) server, der die Cloud-API der Bosch Smart Home Camera als MCP-Tools bereitstellt. Als Drop-in für Claude Code, Claude Desktop und jeden MCP-kompatiblen Client einsetzbar. Verwendet den bewährten, per Reverse Engineering gewonnenen API-Client des Schwesterprojekts Python CLI tool.

Status: v1.7.2 — Abschluss der Familien-Parität (v1.7.0): Bewegungszonen, Privatsphäre-Masken, Automatisierungsregeln, Kamera-Freigabe/Freunde, Firmware-Installation, Sirenendauer, Beleuchtungszeitplan, Audio-Gegensprechen. Dazu die Bild-/Video-Optimierungs- und Kamera-Lebenszyklus-Runde vom 2026-08-19: Zeitstempel-Overlay, Status-LED, Objektiv-Neigung, Dunkelheitsschwelle, Weißabgleich, Helligkeit der oberen/unteren LED, Soft-/Hard-Reset, Umbenennen. 70 Tools + 3 Ressourcen + 2 Prompts, stdio/SSE/streamable-HTTP, per pipx/uvx installierbar

License Project Maintenance


Inhaltsverzeichnis


Related MCP server: 米家 MCP Server

Haftungsausschluss

Dieses Projekt ist ein unabhängiges, von der Community entwickeltes Tool. Es ist weder mit der Robert Bosch GmbH, der Bosch Smart Home GmbH noch mit deren Tochtergesellschaften oder verbundenen Unternehmen verbunden, noch wird es von diesen unterstützt, gesponsert oder steht es in irgendeiner offiziellen Verbindung zu ihnen. „Bosch", „Bosch Smart Home" sowie die zugehörigen Namen und Logos sind eingetragene Marken der Robert Bosch GmbH.

Das Tool kommuniziert mit einer per Reverse Engineering gewonnenen, undokumentierten, inoffiziellen API. Bereitgestellt „wie besehen", ohne jegliche Gewährleistung. Die Nutzung erfolgt vollständig auf eigenes Risiko.

Warum ein separater MCP-Server?

Die Schwesterprojekte zielen auf unterschiedliche Laufzeitumgebungen ab:

Projekt

Version

Laufzeitumgebung

Benutzeroberfläche

HA Integration

v16.0.1

Home Assistant

UI-Entitäten, Lovelace-Karte, Automatisierungen

Python CLI

v10.12.3

Terminal

bosch_camera ...-Befehle

ioBroker Adapter

v1.8.3

ioBroker

Datenpunkte, VIS-2-Widgets (BoschCamera + BoschOverview), JSON-Config-Admin-UI

Node-RED nodes

v0.4.2-alpha

Node-RED

Flow-Knoten für Automatisierungspipelines

Frontend (NiceGUI)

v0.4.2-alpha

eigenständige Web-App

Dashboard + Kamera-Detail + Einstellungen-UI

MCP Server (dieses Repository)

v1.7.1

Claude-Clients

MCP-Tools, die von LLMs aufgerufen werden können

LLM-Anwendungsfälle, die die bestehenden Schwesterprojekte nicht abdecken:

  • „Mach einen Schnappschuss von der Gartenkamera und beschreibe, was du siehst."

  • „Was war das letzte Bewegungsereignis auf der Terrasse, und um welche Uhrzeit?"

  • „Aktiviere den Privatsphäre-Modus an der Innenkamera bis 22:00 Uhr und deaktiviere ihn danach."

  • „Schwenke die 360°-Kamera nach links und mach einen Schnappschuss."

  • „Fasse die heutigen Bewegungsereignisse über alle Kameras hinweg zusammen."

Diese Abläufe erfordern ein LLM im Loop — genau dafür ist MCP gedacht.


Architektur

┌─────────────────────────┐      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)    │
                                                                  └─────────────────────────┘

Der MCP-Server ist ein dünner Wrapper um die API-Schicht der Python-CLI. Er implementiert OAuth, Token-Erneuerung, FCM-Push, RTSP und RCP nicht neu — er importiert sie.

Dies ist eine echte Laufzeitabhängigkeit, keine reine Dokumentationsreferenz. Der Server findet bosch_camera.py beim Prozessstart über sys.path-Injektion (adapters/cli_bridge.py) und nicht über eine normale pip install-Abhängigkeit — das Repo des Schwesterprojekts Python CLI tool muss auf der Festplatte ausgecheckt sein, und der MCP-Server muss wissen, wo. Auflösungsreihenfolge: die Umgebungsvariable BOSCH_CAMERA_CLI_PATH, sofern gesetzt, andernfalls ein fester Standardpfad, der in der eigenen Umgebung des Maintainers verwendet wird (nicht portabel — überschreiben). Nahezu jeder Tool-Aufruf importiert bosch_camera zur Aufrufzeit aus diesem Pfad (ensure_cli_importable()), sodass ein fehlender oder falscher Pfad beim ersten Tool-Aufruf als ImportError auftritt und nicht beim Serverstart. In der Praxis: Klone beide Repos und setze dann entweder BOSCH_CAMERA_CLI_PATH=/path/to/Bosch-Smart-Home-Camera-Tool-Python in der Umgebung, in der der MCP-Server läuft, oder bearbeite DEFAULT_CLI_PATH in adapters/cli_bridge.py für eine dauerhafte lokale Installation. Die bosch_config.json, die das CLI-Tool über bosch_camera login erzeugt, ist dieselbe Datei, die dieser Server für die Anmeldedaten liest — siehe Auth-Modell.

LAN-Fallback-Tool-Routing

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-Tool-Ablauf

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-Tools (insgesamt 70, v1.7.2)

Tool

Beschreibung

Rückgabe

bosch_camera_list

Alle konfigurierten Kameras auflisten

Array von {id, name, model, hw_version, status}

bosch_camera_status

Online-/Offline- und Datenschutzstatus einer Kamera abrufen

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_snapshot

Nur-LAN-JPEG-Aufnahme (keine Cloud) — HTTP Digest an Kamera-IP

{path, method, timestamp}

bosch_camera_stream_url

Nur-LAN-RTSPS-Stream-URL (keine Cloud-Weiterleitung) — nutzbar mit ffmpeg/VLC/go2rtc

{camera, rtsps_url, note}

bosch_camera_events

Letzte Bewegungs-/Personen-/Audio-Ereignisse auflisten

Array von {event_id, type, tags, timestamp_iso, has_clip, clip_status}

bosch_camera_privacy_set

Datenschutzmodus ein-/ausschalten; prefer_local=True routet zuerst über LAN RCP

{name, status, privacy_mode, ...}

bosch_camera_light_set

Scheinwerfer ein-/ausschalten; prefer_local=True routet zuerst über LAN RCP

{name, status, light_on, ...}

bosch_camera_pan

Die 360°-Kamera schwenken (nur Gen1 CAMERA_360); preset: home (0°) / left (-60°) / right (+60°) / back-left (-120°) / back-right (+120°)

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_notifications_set

Push-Benachrichtigungen umschalten

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_lan_ping

Kamera per TCP auf LAN-Port 443 prüfen (1.5 s Timeout)

{reachable, ip, latency_ms}

bosch_camera_maintenance_status

Aktuelle Cloud-Wartungsankündigung aus dem Community-RSS-Feed abrufen

{state, title, link, pub_date, summary, …, recommended_action}

bosch_camera_audio_get

Mikrofonpegel, Lautsprecherpegel und Intercom-Flag abrufen (nur Gen2)

{microphone_level, speaker_level, intercom_enabled}

bosch_camera_audio_set

Mikrofonpegel und/oder Lautsprecherpegel einstellen (0-100) (nur Gen2)

{microphone_level, speaker_level, intercom_enabled}

bosch_camera_intrusion_get

Konfiguration der Eindringungserkennung abrufen: Modus, Empfindlichkeit 0-7, Entfernung 1-8 m (nur Gen2)

{mode, sensitivity, distance}

bosch_camera_intrusion_set

Modus/Empfindlichkeit/Entfernung der Eindringungserkennung aktualisieren (nur Gen2)

{mode, sensitivity, distance}

bosch_camera_audio_detection_get

Konfiguration der Geräuscherkennung für Glasbruch und Rauch-/Feueralarm abrufen (nur Gen2 Audio-Plus)

{glass_break, fire_alarm}

bosch_camera_audio_detection_set

Geräuscherkennung für Glasbruch und/oder Feueralarm aktualisieren (nur Gen2 Audio-Plus)

{glass_break, fire_alarm}

bosch_camera_wifi

WiFi-RSSI, SSID und abgeleitete Signalqualität 0-100 % abrufen

{rssi, ssid, signal_strength}

bosch_camera_mjpeg_snapshot

Direkter MJPEG-Schnappschuss über LAN per RTSP inst=3 (nur Gen2, ffmpeg, kein Cloud-Roundtrip)

{path, method, timestamp, camera}

bosch_camera_onvif_scopes

ONVIF-Geräte-Scopes aus Kamera-LAN-RCP 0x0a98 lesen (nur Gen2)

{name, hardware, profiles, raw_scopes}

bosch_camera_rcp_version

RCP-Bibliotheksversion aus Kamera-LAN-Opcodes 0xff00 + 0xff04 lesen

{primary, secondary, raw_primary_hex, raw_secondary_hex}

bosch_camera_feature_flags

Bosch-Cloud-Feature-Flags auf Kontenebene abrufen (kein Kamera-Parameter)

{FLAG_NAME: bool, ...}

bosch_camera_siren_trigger

Die Innensirene auslösen (nur Gen2 Indoor II); stop=True zum Abbrechen

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_motion_get

Aktivierungsstatus der Bewegungserkennung und Empfindlichkeit abrufen

{enabled, sensitivity}

bosch_camera_motion_set

Aktivierung der Bewegungserkennung und/oder Empfindlichkeit einstellen

{enabled, sensitivity}

bosch_camera_recording_get

Toneinstellung für Cloud-Aufnahmen abrufen

{sound_on}

bosch_camera_recording_set

Ton für Cloud-Aufnahmen einstellen

{sound_on}

bosch_camera_autofollow_get

Status der 360°-Autoverfolgung abrufen (nur Gen1 Indoor)

{enabled}

bosch_camera_autofollow_set

360°-Autoverfolgung einstellen (nur Gen1 Indoor)

{enabled}

bosch_camera_privacy_sound_get

Status des akustischen Datenschutz-Signaltons abrufen

{enabled}

bosch_camera_privacy_sound_set

Akustischen Datenschutz-Signalton ein-/ausschalten

{enabled}

bosch_camera_unread_get

Anzahl ungelesener Ereignisse einer Kamera abrufen

{count}

bosch_camera_health_check_all

Gesundheitsübersicht für alle Kameras (Status + WiFi + Datenschutz + letztes Ereignis + ungelesen)

Array von Dicts pro Kamera

bosch_camera_token_status

Lokales JWT-Parsing – liefert Gültigkeit, Ablaufzeit, E-Mail (kein Netzwerkaufruf)

{valid, expires_in_min, email}

bosch_camera_motion_zones_get

Rechtecke der Bewegungserkennungszonen auflisten (normalisiert 0.0-1.0)

Array von {x, y, w, h}

bosch_camera_motion_zones_set

Alle Bewegungszonen ersetzen (vollständiges Ersetzen, kein Zusammenführen)

Array von {x, y, w, h}

bosch_camera_motion_zones_clear

Alle Bewegungszonen entfernen

[]

bosch_camera_privacy_masks_get

Rechtecke der Datenschutzmasken-Zonen auflisten (normalisiert 0.0-1.0)

Array von {x, y, w, h}

bosch_camera_privacy_masks_set

Alle Datenschutzmasken ersetzen (vollständiges Ersetzen, kein Zusammenführen)

Array von {x, y, w, h}

bosch_camera_privacy_masks_clear

Alle Datenschutzmasken entfernen

[]

bosch_camera_rules_list

Automatisierungsregeln (Zeitpläne) für eine Kamera auflisten

Array von {id, name, active, start, end, days}

bosch_camera_rules_add

Eine neue Zeitplanregel erstellen

{id, name, active, start, end, days}

bosch_camera_rules_edit

Eine vorhandene Regel aktualisieren (partielle Aktualisierung)

{id, name, active, start, end, days}

bosch_camera_rules_delete

Eine Regel löschen

{deleted, rule_id}

bosch_camera_friends_list

Freunde/Einladungen für die Kamerafreigabe auflisten (auf Kontenebene)

Array von {id, email, nickname, status, shared_cameras}

bosch_camera_friends_invite

Einen Freund per E-Mail einladen (auf Kontenebene)

{id, email, nickname, status, shared_cameras}

bosch_camera_friends_share

Eine Kamera mit einem vorhandenen Freund teilen (wird mit dessen vorhandenen Freigaben zusammengeführt)

{shared, friend_id, camera}

bosch_camera_friends_unshare

Alle Kamerafreigaben von einem Freund widerrufen

{unshared, friend_id}

bosch_camera_friends_remove

Einen Freund vollständig entfernen

{removed, friend_id}

bosch_camera_firmware_status

Aktuelle/neueste Firmware-Version und Update-Verfügbarkeit abrufen

{camera, current, up_to_date, update_available, installing}

bosch_camera_firmware_install

Ausstehendes Firmware-Update installieren (Kamera startet in 3-7 Minuten neu)

{camera, current, up_to_date, update_available, installing}

bosch_camera_siren_duration_set

Sirenen-Alarmdauer einstellen, 10-300 s (nur Gen2 Indoor II)

{alarm_delay_seconds}

bosch_camera_lighting_schedule_get

LED-Beleuchtungszeitplan abrufen (Eyes-Außenkameras)

{on_time, off_time, light_on_motion, darkness_threshold, schedule_status}

bosch_camera_lighting_schedule_set

LED-Beleuchtungszeitplan aktualisieren (Eyes-Außenkameras)

{on_time, off_time, light_on_motion, darkness_threshold, schedule_status}

bosch_camera_intercom_open

Eine Audio-Sitzung zum Zuhören öffnen (Kamera-Mikrofon → Anrufer); gibt eine RTSPS-URL zurück, nur Zuhören

{camera, rtsps_url, duration, speaker_level_set}

bosch_camera_timestamp_overlay_get

Abrufen, ob eine Datums-/Zeit-Einblendung in das Video eingebrannt ist

{enabled}

bosch_camera_timestamp_overlay_set

Datums-/Zeit-Einblendung im Video ein-/ausschalten

{enabled}

bosch_camera_status_led_get

Ein-/Aus-Zustand der Status-LED der Kamera abrufen (nur Gen2)

{enabled}

bosch_camera_status_led_set

Status-LED der Kamera ein-/ausschalten (nur Gen2)

{enabled}

bosch_camera_lens_elevation_get

Montagehöhe des Objektivs in Metern abrufen (nur Gen2)

{meters}

bosch_camera_lens_elevation_set

Montagehöhe des Objektivs einstellen, 0.5-5.0 m (nur Gen2)

{meters}

bosch_camera_darkness_threshold_get

Tages-/Nacht-Beleuchtungsschwelle und Fading-Modus abrufen (nur Gen2)

{threshold_percent, soft_light_fading}

bosch_camera_darkness_threshold_set

Tages-/Nacht-Beleuchtungsschwelle und/oder Fading-Modus einstellen (nur Gen2)

{threshold_percent, soft_light_fading}

bosch_camera_white_balance_get

Weißabgleich des Frontlichts abrufen, -1.0 kalt .. 1.0 warm (nur Gen2)

{value}

bosch_camera_white_balance_set

Weißabgleich des Frontlichts einstellen (nur Gen2)

{value}

bosch_camera_led_brightness_get

Helligkeit der oberen oder unteren LED abrufen (0-100 %) (nur Gen2)

{position, brightness_percent}

bosch_camera_led_brightness_set

Helligkeit der oberen oder unteren LED einstellen (0-100 %) (nur Gen2)

{position, brightness_percent}

bosch_camera_soft_reset

Eine Kamera neu starten (Soft-Reset)

{camera, rebooting}

bosch_camera_hard_reset

Kamera auf Werkseinstellungen zurücksetzen – DESTRUKTIV, entkoppelt die Kamera; erfordert confirm=True

{camera, factory_reset}

bosch_camera_rename

Eine Kamera über die Cloud-API umbenennen

{camera, new_name}

Tools, die absichtlich NICHT für LLMs offengelegt werden (schreib-/risikobehaftet / zeitaufwendig):

  • Token-Refresh (wird vom zugrunde liegenden Client stillschweigend durchgeführt)

  • Cloud-Clip-Download (große Datenmengen)

  • Zwei-Wege-Sprechen (Mikrofon des Anrufers → Lautsprecher der Kamera): von der Bosch-Cloud-API überhaupt nicht bereitgestellt (gleiche Einschränkung wie die Schwester-CLI) — bosch_camera_intercom_open ist nur zum Zuhören (listen-only)

Aus der HA-Integration übernommen, aber bewusst NICHT hinzugefügt (Architektur-Konflikt — siehe Audit in docs/family-parity-plan.md vom 2026-08-19 für die vollständige Begründung):

  • open_live_connection (explizites Öffnen/Halten einer Sitzung) — MCP-Tools sind einmalige Anfrage-/Antwort-Aufrufe ohne dauerhaften Hintergrundprozess, der eine Sitzung zwischen Aufrufen offenhalten könnte; bosch_camera_stream_url erzeugt bereits pro Aufruf eine frische, sofort nutzbare URL, was das MCP-gerechte Äquivalent ist.

  • Frigate/externer RTSP-„front door“ (dauerhafter RTSP-Server ohne Zugangsdaten) — aus demselben Grund: er erfordert einen langlebigen Serverprozess, der dieser zustandslosen Tool-Oberfläche fehlt.

  • delete_event / send_event_webhook — beide arbeiten mit HAs eigenem lokalem Event-Datei-Cache auf der Festplatte und der webhook_url/enable_webhook_delivery-Konfiguration, Infrastruktur, über die dieses Tool nicht verfügt (Ereignisse werden hier bei Bedarf aus der Bosch-Cloud abgerufen und nie lokal gespeichert).

  • Rücklesen des AI-Alert-Verlaufs — HAs ai_alert_store.py liest aus Dateien relativ zu hass.config.path in HAs eigenem Speicherlayout; eine Kopplung daran wäre fragil und nicht klar nützlich, wenn der MCP-Client selbst typischerweise das LLM ist, das die Analyse durchführt.

  • Die Selects video_quality / stream_mode und image_rotation_180 — alle drei sind in HA reine Client-seitige Einstellungen (überhaupt kein Bosch-Cloud-API-Aufruf: Qualität wählt den RTSPS-inst=-Parameter, stream_mode wählt LOCAL vs. REMOTE, Rotation ist eine reine Anzeige-Transformation per CSS/PIL) und es gibt hier keinen persistenten Zustand pro Sitzung, an den sie angehängt werden könnten. pan_preset ist bereits abgedeckt — bosch_camera_pan(preset=...) ist seit v1.x verfügbar.

Zuverlässigkeit — transparente Zugangsdatenrotation

Der LAN-RCP-Schreibpfad mit prefer_local=True (bosch_camera_privacy_set, bosch_camera_light_set) wiederholt bei HTTP 401 automatisch einmal, nachdem frische Digest-Zugangsdaten aus bosch_config.json abgerufen wurden. Keine benutzersichtbare API-Änderung — der Wiederholungsversuch läuft still ab und das Tool-Ergebnis ist identisch, egal ob eine Rotation nötig war oder nicht. Dadurch werden Kaltstart-Fehler beseitigt, wenn das zwischengespeicherte Digest-Nonce abgelaufen ist. bosch_camera_pan akzeptiert derzeit keinen prefer_local-Parameter — der Schwenk läuft immer über die Bosch-Cloud.

MCP-Ressourcen

Ressourcen-URI

Beschreibung

bosch://cameras

JSON-Liste aller Kameras (id, name, model, status, firmware, mac, description)

bosch://cameras/{name}/snapshot.jpg

Neuestes zwischengespeichertes JPEG oder frische Aufnahme, wenn der Cache leer ist

bosch://cameras/{name}/events

Die letzten 50 Ereignisse (Bewegung, Person, Audio) als JSON-Liste

bosch://cameras ist eine statische Ressource. Die {name}-Varianten sind Ressourcen-Templates.

MCP-Prompts

Prompt

Argumente

Beschreibung

daily-camera-summary

hours: int = 24

Mehrstufiger Bericht: Ereignisse pro Kamera, Verteilung nach Typ, zeitliche Verteilung, Anomalie-Highlights

pre-leave-check

(keine)

Schnappschuss von jeder Kamera erstellen, Szene beschreiben, Anomalien markieren, Indoor-Datenschutzmodus empfehlen

Datenschutz-Haltung — Medienoperationen nur über LAN

Schnappschüsse und Stream-URLs gehen direkt vom MCP-Host über das LAN an die Kamera — ohne Bosch-Cloud-Relay. Die übrigen Tools (status, events, privacy/light/pan/notifications) nutzen weiterhin die Cloud, weil für diese Endpunkte derzeit keine lokale API bereitgestellt ist.

Tool

Pfad

bosch_camera_snapshot

Nur LAN — HTTP Digest an Kamera-IP

bosch_camera_stream_url

Nur LAN — RTSPS über lokalen Bosch-TLS-Proxy

bosch_camera_lan_ping

Nur LAN — TCP-Verbindung zu Kamera-Port 443

bosch_camera_list / status / events

Bosch-Cloud (noch keine lokale API)

bosch_camera_privacy_set / light_set (default)

Bosch-Cloud

bosch_camera_privacy_set / light_set (prefer_local=True)

Zuerst LAN-RCP, Cloud-Fallback — nur Gen2

bosch_camera_pan / notifications_set

Bosch-Cloud (noch keine lokale API)

Der MCP-Host muss sich für die Funktion der Medien-Tools im selben Netzwerk wie die Kameras befinden. Ist das nicht der Fall, melden die Snapshot-/Stream-Tools local_unavailable, anstatt auf die Cloud zurückzugreifen — konstruktionsbedingt.

Auth-Modell

Der Server arbeitet mit der bereits vorhandenen bosch_config.json des Nutzers vom Schwester-Python-CLI-Tool — kein separater OAuth-Ablauf, keine von diesem Repo gespeicherten Zugangsdaten. Erzeugen Sie sie einmal über bosch_camera login der CLI (browserbasiertes OAuth2-PKCE) und richten Sie dann den MCP-Server darauf aus:

  • --config <path> / Umgebungsvariable BOSCH_CAMERA_CONFIG=<path>: expliziter Pfad zu bosch_config.json.

  • Wenn keines von beiden gesetzt ist, fällt die Bridge auf das zurück, was die Standardauflösung von get_session_and_cameras() neben dem Checkout der Schwester-CLI findet (siehe Architektur — der Speicherort der Schwester-CLI wird selbst über BOSCH_CAMERA_CLI_PATH oder einen festen Standardpfad aufgelöst).

Der MCP-Server liest oder schreibt niemals Zugangsdaten über das hinaus, was das CLI-Tool bereits tut (Token-Refresh bei 401, atomares Speichern) — er ruft über den cli_bridge-Import direkt den eigenen Sitzungs-/Konfigurationscode der CLI auf.

Transportmodi

Über das --transport-Flag werden drei Transportmodi unterstützt:

Modus

Flag

Anwendungsfall

stdio

--transport stdio (Standard)

Claude Code / Claude Desktop — lokaler Subprozess

streamable-http

--transport http

Remote-/Multi-Client-Bereitstellungen über HTTP

sse

--transport sse

Legacy-SSE-Clients

HTTP- und SSE-Modi binden standardmäßig an 127.0.0.1:8765 (aus Sicherheitsgründen nur lokal). Übergeben Sie --http-host 0.0.0.0 nur in vertrauenswürdigen, durch Firewalls geschützten Netzwerkumgebungen.

# 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

Tech-Stack

  • Python 3.10+

  • mcp — offizielles MCP-Python-SDK

  • pydantic (bereits eine transitive Abhängigkeit von mcp) für Tool-Schemas

  • Wiederverwendung: bosch_camera.py aus dem Repo der Schwester-CLI, zur Laufzeit über sys.path-Injection lokalisiert (BOSCH_CAMERA_CLI_PATH-Umgebungsvariable oder ein konfigurierbarer Standardwert) — keine per pip installierte Abhängigkeit, siehe Architektur

Installation

# 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]

Maintainer: Die PyPI-Veröffentlichung ist automatisiert — das Pushen eines v*.*.*-Tags löst den publish-pypi-Workflow über OIDC Trusted Publisher aus. Führen Sie twine upload nicht manuell aus.

Zu Claude Code hinzufügen — stdio (lokal, empfohlen)

claude mcp add bosch-camera -- bosch-smart-home-camera-mcp \
  --config ~/.config/bosch-camera/bosch_config.json

Zu Claude Code hinzufügen — streamable-HTTP (Remote-Server)

# 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

Zu Claude Desktop hinzufügen

Fügen Sie Folgendes zu Ihrer claude_desktop_config.json hinzu (normalerweise ~/Library/Application Support/Claude/claude_desktop_config.json unter macOS oder %APPDATA%\Claude\claude_desktop_config.json unter Windows):

{
  "mcpServers": {
    "bosch-camera": {
      "command": "bosch-smart-home-camera-mcp",
      "args": [
        "--config",
        "/path/to/bosch_config.json"
      ]
    }
  }
}

Ersetzen Sie /path/to/bosch_config.json durch den tatsächlichen Pfad zu Ihrer bosch_config.json (vom Schwester-Python-CLI-Tool über bosch_camera login erzeugt). Der Server läuft als lokaler stdio-Subprozess — für Claude Desktop wird kein Netzwerkport benötigt.

Repo-Struktur

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

Versionsverlauf

  • v0.1.0 — Konzeptdokument + Skeleton-Server, alle Tools definiert, aber noch nicht implementiert (gibt NotImplementedError zurück) ✅

  • v0.2.0 — alle 8 Tools angebunden: Lese-Tools (list, status, events, snapshot) + Schreib-Tools (privacy, light, pan, notifications) per sys.path-Injektion (Option C) ✅

  • v0.4.0 — Ressourcen (bosch://cameras, bosch://cameras/{name}/snapshot.jpg, bosch://cameras/{name}/events) + Prompts (daily-camera-summary, pre-leave-check) ✅

  • v0.5.0 — streamable-HTTP-Transport (--transport http|sse|stdio), Paketierung für pipx/uvx, 24 neue Tests ✅

  • v1.0.0 — erste stabile Version: 106 Tests, Wheel + sdist auf GitHub Releases veröffentlicht, PyPI-Veröffentlichung ausstehend ✅

  • v1.1.0 — Nur-LAN-Medienpfad (Privatsphäre-Härtung): bosch_camera_snapshot und das neue bosch_camera_stream_url gehen direkt über LAN zur Kamera, kein Bosch-Cloud-Relay für Medien. 113 Tests. ✅

  • v1.2.0bosch_camera_maintenance_status-Tool: ruft Cloud-Wartungsankündigungen aus Community-RSS-Feeds ab; gibt Zustand (active/scheduled/past/recent/unknown/idle), Titel, Zeitfenster und Link zurück. ✅

  • v1.3.0 — LAN-Fallback-Funktionsumfang (portiert aus HA-Integration v12.4.10/v12.4.11): bosch_camera_lan_ping-Tool (TCP-Probe für jede Kamera im LAN); prefer_local=True bei bosch_camera_privacy_set / bosch_camera_light_set (RCP-LAN-Schreibpfad, Gen2, Cloud-Fallback bei Fehler); recommended_action-Feld bei bosch_camera_maintenance_status ("check_lan" bei active, "wait" bei scheduled). 173 Tests. ✅

  • v1.3.3 — Audio Get/Set, Einbrucherkennung Get/Set, WLAN-Info (Portierung aus HA v12.7.0). 16 Tools. ✅

  • v1.3.4 — benannte PTZ-Voreinstellungen (bosch_camera_pan preset= akzeptiert home / left / right / back-left / back-right); transparente Anmeldedaten-Rotation bei 401 für LAN-RCP-Tools (stiller Wiederholungsversuch, keine API-Änderung). ✅

  • v1.3.6 — 9 Fehlerkorrekturen aus dem Live-Audit 2026-05-24 (Kamera-Liste immer live aus der Cloud, Gen1/Gen2 hw_version, UUID-Auflösung, Event-Feldzuordnung, Audio camelCase, Einbrucherkennung Gen2-Gate, Fehlercodes, Snapshot-Zeitstempel, requirements-test.txt-Mirror). ✅

  • v1.4.0 — 4 neue Tools: bosch_camera_mjpeg_snapshot, bosch_camera_onvif_scopes, bosch_camera_rcp_version, bosch_camera_feature_flags. _fetch_rcp_lan-Async-Helper. Insgesamt 20 Tools. ✅

  • v1.5.0 — 11 neue Tools + 8 Fehlerkorrekturen aus dem Live-Kamera-Audit (4 Hardware-Geräte, alle 4 Generationen): Sirenen-Auslösung, Bewegung Get/Set, Aufnahme Get/Set, Autofollow Get/Set, Privacy-Sound Get/Set, Unread-Count, Health-Check-All, Token-Status. ✅

  • v1.5.1_fetch_rcp_lan korrigiert (verwendete ein nicht existierendes aiohttp.DigestAuthonvif_scopes / rcp_version schlugen über LAN immer fehl; jetzt httpx.DigestAuth). Testabdeckung 83→98 %, Fixtures bereinigt, CI auf Node-24-native Action-Major-Versionen angehoben. ✅

  • v1.5.2 — Abhängigkeits-Hygiene: nicht verwendete aiohttp-Laufzeitabhängigkeit entfernt (jetzt nur noch Test), pyjwt>=2.13.0 / starlette>=1.0.1 als Sicherheitsuntergrenzen hinzugefügt (pip-audit sauber), einen Test korrigiert, der den falschen HTTP-Stack mockte. ✅

  • v1.5.3 — Sicherheitspatch: Bosch-Cloud-CA für die MCP-Cloud-Sitzung festgepinnt (CWE-295, GHSA-6qh5-x5m5-vj6v); schließt MITM über angrenzende Netzwerke bei OAuth-Tokens. Lokales TOFU-Pinning unverändert. ✅

  • v1.5.4 — Ereignis-Zeitstempel verlieren nicht mehr den Zeitzonen-Offset: /v11/events liefert Zeitstempel mit Offset (z. B. +02:00[Europe/Berlin]); der Server entfernt jetzt nur das nachgestellte [zone]-Suffix, anstatt auf 19 Zeichen zu kürzen, und bewahrt so den expliziten UTC-Offset. ✅

  • v1.5.5 — Die camera_events-Ressource verwendet jetzt eventType + eventTags für eine korrekte Ereignisklassifizierung. ✅

  • v1.6.0 — 2 neue Tools: bosch_camera_audio_detection_get / bosch_camera_audio_detection_set — Glasbruch- und Rauch-/Feueralarm-Tonerkennung für Gen2-Audio-Plus-Kameras (portiert aus HA-Integration v14.2.0). Insgesamt 34 Tools. ✅

  • v1.7.0 — Abschluss der Familien-Parität (docs/family-parity-plan.md §2b): 21 neue Tools schließen die Funktionslücke zwischen MCP und HA/CLI — Bewegungszonen Get/Set/Clear, Privacy-Masken Get/Set/Clear, Automationsregeln List/Add/Edit/Delete, Kamera-Freigabe/Freundesliste/Einladen/Teilen/Freigabe aufheben/Entfernen, Firmware-Status/Installation (entspricht der async_install_firmware-Absicherung aus HA), Sirenen-Dauer, LED-Beleuchtungszeitplan Get/Set und ein Audio-Listen-Intercom-Tool (Kamera-Mikrofon → Anrufer, RTSPS-URL; Gegensprechen wird von der Bosch-Cloud-API überhaupt nicht bereitgestellt, dieselbe Einschränkung wie beim Schwester-CLI). CI-Härtung: Coverage-Gate (--cov-fail-under=96), pip-audit (nur Laufzeitabhängigkeiten), pylint, codespell, CodeQL, Gitleaks-Secret-Scan und ein Dependency-Review-Workflow — Parität auf Gold-Niveau mit den Qualitäts-Gates der HA-Integration. Insgesamt 55 Tools. ✅

  • v1.7.2 — Nur Dokumentation: Login-Zeile dieses Repos in der Integrationsvergleich-Tabelle korrigiert, keine funktionalen Änderungen. ✅

Releases

Neueste Version: v1.7.2 — vollständige Hinweise auf der GitHub-Release-Seite: v1.7.2 Versionshinweise →

Alle Releases

GitHub-Releases-Seite — jede getaggte Version mit Hinweisen + herunterladbaren Assets

Gesamte Historie

CHANGELOG.md — gleiche Hinweise, im Repo durchsuchbar

Integrationsvergleich

Die reverse-engineerte API der Bosch Smart Home Camera wird über fünf Schwesterprojekte bereitgestellt. Wähle dasjenige, das zu deiner Plattform passt.

Funktion

Home Assistant Integration

Python CLI Tool

ioBroker Adapter

MCP Server

Frontend (NiceGUI)

Node-RED

Reifegrad

v15.0+ — HA-Qualitätsskala Platin

v10.12+ stabil (Mini-NVR BETA)

v1.8+ stabil · npm

v1.7+ stabil · PyPI

v0.4.0 alpha · PyPI

v0.4.0 alpha · npm

Plattform

Home Assistant (HACS)

Eigenständige Python-3.10+-CLI

ioBroker (npm)

Python 3.10+ · pipx / uvx · stdio + streamable-HTTP für MCP-Clients (Claude Desktop, Claude Code, benutzerdefinierte)

NiceGUI-Web-App · Python 3.10+

Node-RED-Palette · npm

Anmeldung

OAuth2 PKCE (Browser)

OAuth2 PKCE (Browser)

OAuth2 PKCE (Browser)

◑ teilt bosch_config.json mit der CLI

◑ teilt bosch_config.json mit der CLI

◑ Refresh-Token von der CLI

Schnappschüsse

✅ Natives Camera.image

snapshot-Befehl

✅ Datei-Store + base64-DP

bosch_camera_snapshot (nur LAN)

✅ Live + Ereignis-Fallback

snapshot-Knoten

Live-RTSP-Stream (LAN)

✅ über HA-Stream-Komponente

✅ ffmpeg/RTSPS-Ausgabe

✅ TLS-Proxy → lokales RTSP

bosch_camera_stream_url (nur LAN, kein Cloud-Relay)

◑ intern (go2rtc)

stream-url-Knoten (nur URL)

WebRTC (Subsekunden-Latenz)

✅ über integriertes go2rtc

(v10.6.0) live --webrtc

✅ über go2rtc (sonst Schnappschuss)

Dual-Stream-URL (Haupt- + Sub-Stream)

sensor.bosch_<n>_stream_url + _sub (v12.4.0, Opt-in pro Kamera)

info zeigt beide · live --sub (v10.5.0)

stream_url + stream_url_sub (v0.5.3 experimentell)

bosch_camera_stream_url — nur Haupt-Stream

(nur Sub-Stream)

◑ nur URL — keine Sub-Option

Externer Recorder (BlueIris, Frigate)

✅ über go2rtc

✅ stdout-Pipe

✅ Digest-Zugangsdaten-URL + LAN-Bind-Option

✅ URL wird zurückgegeben, Übergabe an ffmpeg / go2rtc nachgelagert

stream-url → downstream verbinden

Privatsphäre-Modus

✅ Schalter-Entität

✅ Befehl

✅ DP

bosch_camera_privacy_set (LAN-Fallback über prefer_local)

✅ Umschalter

privacy-Knoten

Front-Scheinwerfer (Gen1/Gen2)

✅ Licht-Entität

✅ Befehl

✅ DP

bosch_camera_light_set (LAN-Fallback)

(Phase-2-Platzhalter)

bosch-camera-light-Knoten (v0.3.0-alpha)

RGB-Wallwasher (Gen2 Outdoor II)

✅ Licht mit RGB

◑ nur ein/aus — kein RGB

✅ Farb- + Helligkeits-DPs

(nur ein/aus — RGB nicht verfügbar)

◑ nur ein/aus + Intensität — kein RGB (v0.3.0-alpha)

Panikalarm-Sirene

✅ Taster-Entität (Gen2 Indoor II)

✅ Befehl (nur Gen2 Indoor II)

✅ DP

bosch_camera_siren_trigger (nur Gen2 Indoor II)

✅ Auslösen + Dauer (nur Gen2 Indoor II)

Firmware-Update

✅ Update-Entität + Repairs-Fix-Flow, Installations-Schaltfläche (v14.4.10)

✅ Status + Installation (v10.11.0)

✅ Firmware-Status + Installations-Trigger, Schreibsperre-Schutz (v1.8.0)

✅ Status- + Installations-Tools (v1.7.0)

◑ schreibgeschützte Statusanzeige, keine Installationsaktion

✅ Status- + Installations-Knoten (v0.4.0-alpha)

Bildrotation 180°

✅ Schalter

✅ DP

Bewegungs- / Personen- / Audio-Ereignisse

✅ FCM-Push + Polling-Fallback

◑ nur watch-Befehl (events-Befehl entfernt)

✅ FCM-Push + Polling-Fallback

bosch_camera_events (Pull auf Abruf)

◑ Nur-Pull-Ereignistabelle

event-Knoten (Polling)

Bewegungsstatus (flankengetriggert)

binary_sensor.motion

n/a

motion_active DP (v0.5.3)

n/a (Anfrage-Antwort, kein Abonnement)

Automatischer Schnappschuss bei Bewegung

✅ aktualisiert die Kamera-Entität

n/a

✅ schreibt last_event_image als base64 (v0.5.3)

n/a (keine Hintergrundschleife)

Synthetischer Bewegungstrigger (externer Sensor)

✅ Dienst

n/a

✅ DP

Bewegungszonen / Datenschutzmasken

✅ lesen + schreiben

✅ lesen + schreiben

✅ lesen + schreiben (v1.8.0)

✅ abrufen / setzen / löschen (v1.7.0)

(noch kein visueller Editor)

Automatisierungsregeln / Zeitpläne

✅ lesen + schreiben

✅ lesen + schreiben

✅ vollständiges CRUD (v1.8.0)

✅ auflisten / hinzufügen / bearbeiten / löschen (v1.7.0)

✅ vollständiges CRUD (auflisten/hinzufügen/bearbeiten/löschen)

Beleuchtungszeitplan

✅ lesen (schreiben über Dienst, nur Gen1 Eyes Outdoor)

✅ lesen + schreiben

✅ lesen (nur Gen1, v1.2.0)

✅ abrufen / setzen (v1.7.0)

✅ lesen + schreiben (Outdoor-Eyes-Kameras)

Cloud-Clip-Download (Verlauf ~30 Tage)

✅ über Medien-Browser

(zurückgestellt — noch keine Community-Anfrage)

(bewusst nicht verfügbar — große Datenmengen)

(CLI verwenden)

clip_url in der Ereignis-Payload

Mini-NVR (lokale Aufnahme)

✅ kontinuierlich + ereignisgepuffert, Ringpuffer-Vorlauf (v11.2.0 BETA → v14.7.0-Modi)

◑ ereignisgesteuertes Segment-Muxing, kein Vorlauf-Ring (v10.7.0 BETA)

(delegiert an externen Recorder über RTSP-Endpunkt ohne Anmeldedaten)

(kein NVR-Konzept)

◑ nur kontinuierlich, nicht ereignisgepuffert (v0.4.0-alpha)

◑ nur kontinuierlich über bosch-camera-nvr-record-Knoten (v0.4.0-alpha)

SMB-/NAS-Clip-Upload

(v10.7.0 BETA)

Kamera-Freigabe (Freunde)

✅ Dienste (Freigeben / Einladen / Auflisten)

✅ Befehl

✅ Freigeben / Einladen / Entfernen (nur Gen2, v1.8.0)

✅ auflisten / einladen / freigeben / Freigabe aufheben / entfernen (v1.7.0)

✅ auflisten/einladen/entfernen/freigeben/Freigabe aufheben

Schwenken / Neigen (360° Gen1)

✅ Dienste

✅ Befehl

pan_position DP

bosch_camera_pan

✅ Schieberegler mit Live-API verbunden

Benannte Schwenk-Presets (Zuhause / links / rechts / hinten-links / hinten-rechts)

✅ Opt-in-Auswahl-Entität

pan --preset-Flag

pan_preset DP

bosch_camera_pan preset=

Zwei-Wege-Audio / Gegensprechanlage

✅ Befehl

◑ Nur-Zuhören bosch_camera_intercom_open (v1.7.0)

Webhook-Zustellung bei Ereignissen

✅ Dienst + Opt-in-Optionen

watch --webhook URL

✅ über MQTT-Brücke

(Anfrage-Antwort-Modell)

MQTT-Ereignisbrücke (Bewegung / Audio / Person)

n/a (nativ über HA-Ereignisbus)

n/a (Einzelausführung)

✅ Admin-Konfiguration

n/a

Apple HomeKit (über HA-Core-Brücke)

✅ dokumentiert

n/a

n/a

n/a

n/a

n/a

Schnappschuss-Planer / Zeitraffer

✅ examples/ YAML

✅ cron- + ffmpeg-Beispiele

✅ Blockly-Beispiel

n/a

Native Dashboard-Karte / Widget

✅ 2 Lovelace-Karten (einzeln + Raster)

n/a

✅ 2 vis-2-Widgets — BoschCamera + BoschOverview Multi-Kamera

n/a

(ist selbst ein Web-Dashboard)

Bild-im-Bild übersteht Tab im Hintergrund

hass-suspend-when-hidden Keep-alive (v14.0.0)

n/a (keine UI)

✅ eigenes PiP + Freeze-Wiederherstellung, Web-Worker-Heartbeat (v1.7.2/v1.7.3)

n/a (keine UI)

✅ Reconnect-Timeout + Freeze-Wiederherstellung (v0.4.0-alpha)

n/a (keine UI)

Cloud-Relay-REMOTE-Fallback

✅ automatische Umschaltung, wenn LAN nicht erreichbar

✅ Remote-Modus

(konzeptionell nur LOCAL)

(Medien nur LAN; Status/Ereignisse über Cloud)

◑ erbt von der CLI

◑ REMOTE-Option (manuell)

Browserbasierte Admin-/Konfigurations-UI

✅ HA-Config-Flow

n/a (CLI)

✅ JSON-Konfigurations-Tabs

n/a (LLM-vermittelt; Konfiguration über CLI / MCP-Client)

✅ Einstellungsseite

◑ Editor-Konfigurationsknoten

UI-Sprachen

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

n/a (keine UI — das LLM ist das Frontend)

◑ Backend-i18n · UI überwiegend EN

n/a (nur Englisch)

Legende: ✅ unterstützt · ❌ nicht unterstützt / nicht geplant · n/a nicht zutreffend für diese Plattform.

Alle vier Projekte teilen sich dieselbe reverse-engineerte Cloud-API- und RCP-Protokoll-Forschung, entwickeln sich aber unabhängig voneinander. Die Home-Assistant-Integration ist die funktionsreichste Referenzimplementierung; die Python-CLI ist die niedrigste / scriptbare Oberfläche; der ioBroker-Adapter zielt auf VIS-Dashboards und Blockly-Automationen; der MCP-Server bietet MCP-Clients (Claude Desktop, Claude Code, benutzerdefiniert) eine kuratierte, LAN-first Tool-Oberfläche für die Steuerung von Kameras in natürlicher Sprache.


Verwandte Projekte

Teil einer Familie von fünf Implementierungen für Bosch Smart Home Cameras (plus ein Alpha-Frontend):

Implementierung

Repo

Status

🏆 Home Assistant Integration

Bosch-Smart-Home-Camera-Tool-HomeAssistant

v16.0.1 · HA Quality Scale Platinum · produktionsreif

🐍 Python CLI

Bosch-Smart-Home-Camera-Tool-Python

v10.12.3 · Mini-NVR + SMB-Upload (BETA) · LAN-Fallback (ping / --local) · PTZ-Voreinstellungen · Webhook-Zustellung · Aufnahme / Forschung / eigenständig

🟢 ioBroker Adapter

ioBroker.bosch-smart-home-camera

v1.8.3 · stabil · npm · privacy-toggle Digest-Rotation · MQTT-Brücke · PTZ-Voreinstellungen · VIS-2-Widgets (BoschCamera + BoschOverview)

🤖 MCP Server (dieses Repo)

Bosch-Smart-Home-Camera-Tool-MCP

v1.7.2 · cred-rotation · PTZ-Voreinstellungen · TOFU-Zertifikats-Pinning · cloud CA gepinnt (CWE-295) · LAN-ping + prefer_local · Zonen/Masken/Regeln/Freunde/Firmware-Installation · Claude Code / Claude Desktop-Integration

🔴 Node-RED nodes (alpha)

Bosch-Smart-Home-Camera-Tool-NodeRED

v0.4.2-alpha · Knoten für Ereignis / Schnappschuss / Datenschutz / Konfiguration / mehr

Außerdem: Bosch Smart Home Camera — Python Frontend (NiceGUI) — v0.4.2-alpha (Dashboard + Kameradetails + Einstellungen) — Community-Interesse willkommen

HA bleibt die Referenzimplementierung — Funktionen landen zuerst dort; die Python-CLI, der ioBroker-Adapter und der MCP-Server holen im Laufe der Zeit auf.


Lizenz

MIT — siehe LICENSE.

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
4dRelease cycle
21Releases (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
    A
    quality
    F
    maintenance
    Enables controlling and querying Home Assistant devices and services via natural language. Supports state retrieval, listing states, and calling any Home Assistant service.
    13
    276
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables natural language control of Xiaomi smart home devices through MCP, focusing on homes, rooms, device names, and scenes without requiring protocol details.
    65
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language control of Loxone smart home systems, including lighting, audio, climate, and environmental monitoring, through MCP-compatible clients.
    15
    2
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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

View all related MCP servers

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)

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/mosandlt/Bosch-Smart-Home-Camera-Tool-MCP'

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