Skip to main content
Glama
mosandlt

Bosch Smart Home Camera MCP Server

by mosandlt

Bosch Smart Home Camera — MCP サーバー

Model Context Protocol (MCP) サーバー — Bosch Smart Home Camera クラウド API を MCP ツールとして公開します。Claude Code、Claude Desktop、および MCP 互換クライアントにそのまま組み込めます。姉妹プロジェクトである Python CLI ツール の実証済みリバースエンジニアリング API クライアントを再利用しています。

ステータス: v1.7.2 — ファミリーパリティ完了 (v1.7.0): モーションゾーン、プライバシーマスク、自動化ルール、カメラ共有/フレンド、ファームウェアインストール、サイレン持続時間、照明スケジュール、オーディオ通話 (listen-audio intercom)。さらに 2026-08-19 の画像/ビデオ調整 + カメラライフサイクルラウンド: タイムスタンプオーバーレイ、ステータス LED、レンズ仰角、暗闇しきい値、ホワイトバランス、上下 LED 輝度、ソフト/ハードリセット、名前変更。70 ツール + 3 リソース + 2 プロンプト、stdio/SSE/streamable-HTTP、pipx/uvx インストール対応

License Project Maintenance


目次


Related MCP server: 米家 MCP Server

免責事項

このプロジェクトは、独立したコミュニティ開発ツールです。Robert Bosch GmbH、Bosch Smart Home GmbH、またはその子会社や関連会社とは一切関係なく、承認も支援も受けておらず、公式には接続されていません。「Bosch」「Bosch Smart Home」および関連する名称とロゴは、Robert Bosch GmbH の登録商標です。

このツールは、リバースエンジニアリングされた、文書化されていない非公式 API と通信します。「現状のまま」提供され、いかなる保証もありません。使用は完全に自己責任で行ってください。

なぜ専用の MCP サーバーなのか?

姉妹プロジェクトは異なるランタイムを対象としています:

プロジェクト

バージョン

ランタイム

ユーザー向けインターフェース

HA 統合

v16.0.1

Home Assistant

UI エンティティ、Lovelace カード、自動化

Python CLI

v10.12.3

ターミナル

bosch_camera ... コマンド

ioBroker アダプター

v1.8.3

ioBroker

データポイント、VIS-2 ウィジェット (BoschCamera + BoschOverview)、JSON 設定管理 UI

Node-RED ノード

v0.4.2-alpha

Node-RED

自動化パイプライン用フローノード

フロントエンド (NiceGUI)

v0.4.2-alpha

スタンドアロン Web アプリ

ダッシュボード + カメラ詳細 + 設定 UI

MCP サーバー (このリポジトリ)

v1.7.1

Claude クライアント

LLM から呼び出し可能な MCP ツール

既存の姉妹プロジェクトがカバーしない 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 サーバーは、Python CLI の API レイヤーを薄くラップしたものです。OAuth、トークン更新、FCM プッシュ、RTSP、RCP を再実装するのではなく、それらをインポートします。

これは単なるドキュメント参照ではなく、実際のランタイム依存関係です。 サーバーは、通常の pip install 依存関係ではなく、sys.path インジェクション (adapters/cli_bridge.py) を使用して、プロセス起動時に bosch_camera.py を特定します。姉妹 Python CLI ツール リポジトリがディスク上にチェックアウトされている必要があり、MCP サーバーはその場所を知る必要があります。解決順序: BOSCH_CAMERA_CLI_PATH 環境変数が設定されている場合はそれを使用し、それ以外の場合はメンテナー自身のセットアップで使用される固定デフォルトパスを使用します (移植性はありません — 上書きしてください)。ほぼすべてのツール呼び出しは、呼び出し時にそのパスから bosch_camera をインポートすることになります (ensure_cli_importable())。そのため、パスが欠落または間違っていると、サーバー起動時ではなく、最初のツール呼び出しで ImportError として表面化します。実際には: 両方のリポジトリをクローンし、MCP サーバーが実行される環境で BOSCH_CAMERA_CLI_PATH=/path/to/Bosch-Smart-Home-Camera-Tool-Python を設定するか、adapters/cli_bridge.pyDEFAULT_CLI_PATH を編集してローカルに恒久的にインストールします。CLI ツールが bosch_camera login で生成するのと同じ bosch_config.json を、このサーバーは資格情報の読み取りに使用します — 認証モデル を参照してください。

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)

ツール

説明

戻り値

bosch_camera_list

設定されているすべてのカメラを一覧表示する

{id, name, model, hw_version, status}の配列

bosch_camera_status

1台のカメラのオンライン/オフラインとプライバシー状態を取得する

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_snapshot

LAN限定のJPEGキャプチャ(クラウドなし)— カメラIPへのHTTP Digest

{path, method, timestamp}

bosch_camera_stream_url

LAN限定のRTSPSストリームURL(クラウド中継なし)— ffmpeg/VLC/go2rtcで利用可能

{camera, rtsps_url, note}

bosch_camera_events

最近のモーション/人/音声イベントを一覧表示する

{event_id, type, tags, timestamp_iso, has_clip, clip_status}の配列

bosch_camera_privacy_set

プライバシーモードをオン/オフにする。prefer_local=True の場合は先にLAN RCPを使用する

{name, status, privacy_mode, ...}

bosch_camera_light_set

スポットライトをオン/オフにする。prefer_local=True の場合は先にLAN RCPを使用する

{name, status, light_on, ...}

bosch_camera_pan

360°カメラをパン操作する(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

プッシュ通知を切り替える

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_lan_ping

LANポート443でカメラにTCPプローブを実行する(タイムアウト1.5秒)

{reachable, ip, latency_ms}

bosch_camera_maintenance_status

コミュニティRSSフィードから現在のクラウドメンテナンスのお知らせを取得する

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

bosch_camera_audio_get

マイクレベル、スピーカーレベル、インターホンフラグを取得する(Gen2のみ)

{microphone_level, speaker_level, intercom_enabled}

bosch_camera_audio_set

マイクレベルおよび/またはスピーカーレベルを0〜100で設定する(Gen2のみ)

{microphone_level, speaker_level, intercom_enabled}

bosch_camera_intrusion_get

侵入検知設定を取得する: モード、感度0〜7、距離1〜8 m(Gen2のみ)

{mode, sensitivity, distance}

bosch_camera_intrusion_set

侵入検知のモード/感度/距離を更新する(Gen2のみ)

{mode, sensitivity, distance}

bosch_camera_audio_detection_get

ガラス破壊+煙/火災警報の音検知設定を取得する(Gen2 Audio-Plusのみ)

{glass_break, fire_alarm}

bosch_camera_audio_detection_set

ガラス破壊および/または火災警報の音検知を更新する(Gen2 Audio-Plusのみ)

{glass_break, fire_alarm}

bosch_camera_wifi

WiFiのRSSI、SSID、および導出された信号品質0〜100%を取得する

{rssi, ssid, signal_strength}

bosch_camera_mjpeg_snapshot

RTSP inst=3 経由の直接LAN MJPEGスナップショット(Gen2のみ、ffmpeg、クラウド往復なし)

{path, method, timestamp, camera}

bosch_camera_onvif_scopes

カメラのLAN RCP 0x0a98からONVIFデバイススコープを読み取る(Gen2のみ)

{name, hardware, profiles, raw_scopes}

bosch_camera_rcp_version

カメラのLANオペコード0xff00 + 0xff04からRCPライブラリバージョンを読み取る

{primary, secondary, raw_primary_hex, raw_secondary_hex}

bosch_camera_feature_flags

アカウントレベルのBoschクラウド機能フラグを取得する(カメラパラメータなし)

{FLAG_NAME: bool, ...}

bosch_camera_siren_trigger

屋内サイレンをトリガーする(Gen2 Indoor IIのみ)。stop=True でキャンセル

{name, status, privacy_mode, light_on, last_event_at}

bosch_camera_motion_get

モーション検知の有効状態+感度を取得する

{enabled, sensitivity}

bosch_camera_motion_set

モーション検知の有効/無効および/または感度を設定する

{enabled, sensitivity}

bosch_camera_recording_get

クラウド録画の音声設定を取得する

{sound_on}

bosch_camera_recording_set

クラウド録画の音声を設定する

{sound_on}

bosch_camera_autofollow_get

360°自動追尾状態を取得する(Gen1 Indoorのみ)

{enabled}

bosch_camera_autofollow_set

360°自動追尾を設定する(Gen1 Indoorのみ)

{enabled}

bosch_camera_privacy_sound_get

可聴のプライバシー通知音(チャイム)状態を取得する

{enabled}

bosch_camera_privacy_sound_set

可聴のプライバシー通知音(チャイム)状態を設定する

{enabled}

bosch_camera_unread_get

カメラの未読イベント数を取得する

{count}

bosch_camera_health_check_all

全カメラの一括ヘルスサマリー(ステータス+WiFi+プライバシー+最終イベント+未読)

カメラごとのヘルスディクショナリの配列

bosch_camera_token_status

ローカルJWTパース — 有効性、有効期限、メールを返す(ネットワーク呼び出しなし)

{valid, expires_in_min, email}

bosch_camera_motion_zones_get

モーション検知ゾーンの長方形を一覧表示する(正規化0.0〜1.0)

{x, y, w, h}の配列

bosch_camera_motion_zones_set

すべてのモーションゾーンを置き換える(全置換、マージではない)

{x, y, w, h}の配列

bosch_camera_motion_zones_clear

すべてのモーションゾーンを削除する

[]

bosch_camera_privacy_masks_get

プライバシーマスクのゾーン長方形を一覧表示する(正規化0.0〜1.0)

{x, y, w, h}の配列

bosch_camera_privacy_masks_set

すべてのプライバシーマスクを置き換える(全置換、マージではない)

{x, y, w, h}の配列

bosch_camera_privacy_masks_clear

すべてのプライバシーマスクを削除する

[]

bosch_camera_rules_list

1台のカメラの自動化(時間スケジュール)ルールを一覧表示する

{id, name, active, start, end, days}の配列

bosch_camera_rules_add

新しいスケジュールルールを作成する

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

bosch_camera_rules_edit

既存のルールを更新する(部分更新)

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

bosch_camera_rules_delete

ルールを削除する

{deleted, rule_id}

bosch_camera_friends_list

カメラ共有のフレンド/招待を一覧表示する(アカウントレベル)

{id, email, nickname, status, shared_cameras}の配列

bosch_camera_friends_invite

メールでフレンドを招待する(アカウントレベル)

{id, email, nickname, status, shared_cameras}

bosch_camera_friends_share

既存のフレンドと1台のカメラを共有する(既存の共有とマージされる)

{shared, friend_id, camera}

bosch_camera_friends_unshare

フレンドからすべてのカメラ共有を撤回する

{unshared, friend_id}

bosch_camera_friends_remove

フレンドを完全に削除する

{removed, friend_id}

bosch_camera_firmware_status

現在/最新のファームウェアバージョン+更新の有無を取得する

{camera, current, up_to_date, update_available, installing}

bosch_camera_firmware_install

保留中のファームウェアアップデートをインストールする(カメラは3〜7分で再起動)

{camera, current, up_to_date, update_available, installing}

bosch_camera_siren_duration_set

サイレン警報の持続時間を設定する、10〜300秒(Gen2 Indoor IIのみ)

{alarm_delay_seconds}

bosch_camera_lighting_schedule_get

LED照明スケジュールを取得する(屋外Eyesカメラ)

{on_time, off_time, light_on_motion, darkness_threshold, schedule_status}

bosch_camera_lighting_schedule_set

LED照明スケジュールを更新する(屋外Eyesカメラ)

{on_time, off_time, light_on_motion, darkness_threshold, schedule_status}

bosch_camera_intercom_open

音声聴取セッションを開く(カメラのマイク→発信者)。RTSPS URLを返す、聴取専用

{camera, rtsps_url, duration, speaker_level_set}

bosch_camera_timestamp_overlay_get

日時オーバーレイが動画に焼き込まれているかどうかを取得する

{enabled}

bosch_camera_timestamp_overlay_set

日時ビデオオーバーレイをオン/オフにする

{enabled}

bosch_camera_status_led_get

カメラのステータスLEDのオン/オフ状態を取得する(Gen2のみ)

{enabled}

bosch_camera_status_led_set

カメラのステータスLEDをオン/オフにする(Gen2のみ)

{enabled}

bosch_camera_lens_elevation_get

レンズの取り付け高さをメートルで取得する(Gen2のみ)

{meters}

bosch_camera_lens_elevation_set

レンズの取り付け高さを設定する、0.5〜5.0 m(Gen2のみ)

{meters}

bosch_camera_darkness_threshold_get

昼夜の照明しきい値+フェーディングモードを取得する(Gen2のみ)

{threshold_percent, soft_light_fading}

bosch_camera_darkness_threshold_set

昼夜の照明しきい値および/またはフェーディングモードを設定する(Gen2のみ)

{threshold_percent, soft_light_fading}

bosch_camera_white_balance_get

フロントライトのホワイトバランスを取得する、-1.0寒色 .. 1.0暖色(Gen2のみ)

{value}

bosch_camera_white_balance_set

フロントライトのホワイトバランスを設定する(Gen2のみ)

{value}

bosch_camera_led_brightness_get

上部または下部のLED輝度0〜100%を取得する(Gen2のみ)

{position, brightness_percent}

bosch_camera_led_brightness_set

上部または下部のLED輝度0〜100%を設定する(Gen2のみ)

{position, brightness_percent}

bosch_camera_soft_reset

1台のカメラを再起動する(ソフトリセット)

{camera, rebooting}

bosch_camera_hard_reset

1台のカメラを工場出荷時リセット — 破壊的操作、カメラのペアリングを解除します。confirm=True が必要

{camera, factory_reset}

bosch_camera_rename

クラウドAPI経由でカメラの名前を変更する

{camera, new_name}

LLMに意図的に公開しないツール(書き込みリスクが高い/時間がかかるもの):

  • トークン更新(基盤となるクライアントが静かに処理)

  • クラウドクリップダウンロード(大きなペイロード)

  • 双方向通話(発信者のマイク→カメラのスピーカー):BoschクラウドAPIではまったく公開されていない(姉妹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サーバー)— 同じ理由:長時間実行されるサーバープロセスが必要だが、このステートレスなツールサーフェスにはない。

  • delete_event / send_event_webhook — どちらもHA自身のローカルディスク上のイベントファイルキャッシュと webhook_url / enable_webhook_delivery 設定を操作するが、このツールにはそのようなインフラがない(ここでのイベントはBoschクラウドからオンデマンドで取得され、ローカルに保存されることはない)。

  • AIアラート履歴の読み戻し — HAの ai_alert_store.py はHA自身のストレージレイアウト内の hass.config.path 相対ファイルから読み取る。それに結合するのは脆弱であり、MCPクライアント自体が通常は分析を行うLLMである場合、明確に有用とは言えない。

  • video_quality / stream_mode セレクタと image_rotation_180 — これらはすべてHAにおけるクライアント側のみの設定(BoschクラウドAPI呼び出しは一切ない:品質はRTSPSの inst= パラメータを選択し、stream_modeはLOCALとREMOTEを選択し、回転は表示専用のCSS/PIL変換)であり、ここでそれらを紐付ける永続的なセッションごとの状態がない。pan_preset はすでにカバーされている — bosch_camera_pan(preset=...) はv1.xから提供されている。

信頼性 — 透過的な資格情報ローテーション

prefer_local=True のLAN-RCP書き込みパス(bosch_camera_privacy_setbosch_camera_light_set)は、bosch_config.json から新しいDigest資格情報を再取得した後、HTTP 401で自動的に1回再試行します。ユーザーに見えるAPI変更はありません — 再試行は静かで、ローテーションが必要かどうかに関係なくツールの結果は同じです。これにより、キャッシュされたDigest nonceが期限切れになったときのコールドスタート失敗が解消されます。bosch_camera_pan は現在 prefer_local パラメータを受け取りません — panは常にBoschクラウド経由です。

MCPリソース

リソースURI

説明

bosch://cameras

すべてのカメラのJSONリスト(id、name、model、status、firmware、mac、description)

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

最新のキャッシュされたJPEG、またはキャッシュが空の場合は新しいキャプチャ

bosch://cameras/{name}/events

最新50件のイベント(motion、person、audio)をJSONリストとして

bosch://cameras は静的リソースです。{name} バリアントはリソーステンプレートです。

MCPプロンプト

プロンプト

引数

説明

daily-camera-summary

hours: int = 24

多段階レポート:カメラごとのイベント、タイプ別内訳、時間分布、異常ハイライト

pre-leave-check

(なし)

すべてのカメラのスナップショット、シーンを説明、異常をフラグ、屋内プライバシーモードを推奨

プライバシー方針 — メディア操作はLANのみ

スナップショットとストリームURLは、MCPホストからLAN経由でカメラに直接送信されます — Boschクラウドリレーはありません。残りのツール(status、events、privacy/light/pan/notifications)は、これらのエンドポイントに対してローカルAPIが現在公開されていないため、依然としてクラウドを使用します。

ツール

パス

bosch_camera_snapshot

LANのみ — カメラIPへのHTTP Digest

bosch_camera_stream_url

LANのみ — ローカルBosch TLSプロキシ経由のRTSPS

bosch_camera_lan_ping

LANのみ — カメラのポート443へのTCP接続

bosch_camera_list / status / events

Boschクラウド(ローカルAPIはまだない)

bosch_camera_privacy_set / light_set(デフォルト)

Boschクラウド

bosch_camera_privacy_set / light_setprefer_local=True

LAN-RCP優先、クラウドフォールバック — Gen2のみ

bosch_camera_pan / notifications_set

Boschクラウド(ローカルAPIはまだない)

メディアツールが機能するには、MCPホストがカメラと同じネットワーク上にある必要があります。そうでない場合、スナップショット/ストリームツールはクラウドにフォールバックせず、local_unavailable を表示します — 設計によるものです。

認証モデル

サーバーは、姉妹Python CLIツールからのユーザーの既存の bosch_config.json を使用して実行されます — 別のOAuthフローはなく、このリポジトリが資格情報を保存することもありません。CLIの bosch_camera login(ブラウザベースのOAuth2 PKCE)で一度生成し、MCPサーバーをそのファイルに向けます:

  • --config <path> / BOSCH_CAMERA_CONFIG=<path> 環境変数:bosch_config.json への明示的なパス。

  • どちらも設定されていない場合、ブリッジは get_session_and_cameras() のデフォルト解決が姉妹CLIチェックアウトの隣で見つけるものにフォールバックします(アーキテクチャを参照 — 姉妹CLIの場所自体は BOSCH_CAMERA_CLI_PATH または固定のデフォルトパスで解決されます)。

MCPサーバーは、CLIツールがすでに行う以上の資格情報の読み書きは一切行いません(401でのトークン更新、アトミック保存)— cli_bridge インポートを介してCLI自身のセッション/設定コードを直接呼び出します。

トランスポートモード

--transport フラグで3つのトランスポートモードがサポートされています:

モード

フラグ

ユースケース

stdio

--transport stdio(デフォルト)

Claude Code / Claude Desktop — ローカルサブプロセス

streamable-http

--transport http

HTTP経由のリモート/マルチクライアントデプロイ

sse

--transport sse

レガシー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 — 公式MCP Python SDK

  • pydantic(すでに mcp の推移的依存)をツールスキーマに使用

  • 再利用:姉妹CLIリポジトリの bosch_camera.py。実行時に 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公開は自動化されています — v*.*.* タグをプッシュすると、 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(macOSでは通常 ~/Library/Application Support/Claude/claude_desktop_config.json、Windowsでは %APPDATA%\Claude\claude_desktop_config.json)に以下を追加します:

{
  "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インジェクション(オプションC)経由で実装 ✅

  • v0.4.0 — リソース(bosch://camerasbosch://cameras/{name}/snapshot.jpgbosch://cameras/{name}/events)+ プロンプト(daily-camera-summarypre-leave-check) ✅

  • v0.5.0 — ストリーミング可能なHTTPトランスポート(--transport http|sse|stdio)、pipx/uvx用パッケージング、新規テスト24件 ✅

  • v1.0.0 — 初の安定版リリース: テスト106件、GitHub Releasesにwheel + sdistを公開、PyPI公開は保留中 ✅

  • v1.1.0 — LAN限定メディアパス(プライバシー強化): bosch_camera_snapshotと新規のbosch_camera_stream_urlがLAN経由でカメラに直接アクセスし、メディアのBoschクラウド中継を使用しない。テスト113件。 ✅

  • v1.2.0bosch_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ツール(LAN上の任意のカメラをTCPプローブ)、bosch_camera_privacy_set / bosch_camera_light_setprefer_local=True(RCP-LAN書き込みパス、Gen2、失敗時はクラウドにフォールバック)、bosch_camera_maintenance_statusrecommended_actionフィールド(アクティブ時は"check_lan"、スケジュール時は"wait")。テスト173件。 ✅

  • v1.3.3 — オーディオの取得/設定、侵入検知の取得/設定、WiFi情報(HA v12.7.0からクロスポート)。ツール16個。 ✅

  • v1.3.4 — PTZ名前付きプリセット(bosch_camera_pan preset=home / left / right / back-left / back-rightを受け付け)。LAN-RCPツールの401時の透過的な認証情報ローテーション(サイレントリトライ、API変更なし)。 ✅

  • v1.3.6 — 2026-05-24のライブ監査による9件のバグ修正(カメラリストは常にクラウドからライブ取得、Gen1/Gen2のhw_version、UUID解決、イベントフィールドマッピング、オーディオのcamelCase、侵入検知のGen2ゲート、エラーコード、スナップショットのタイムスタンプ、requirements-test.txtのミラー)。 ✅

  • v1.4.0 — 新規ツール4個: bosch_camera_mjpeg_snapshotbosch_camera_onvif_scopesbosch_camera_rcp_versionbosch_camera_feature_flags_fetch_rcp_lan非同期ヘルパー。ツール合計20個。 ✅

  • v1.5.0 — ライブカメラ監査(4台のハードウェア、全4世代)による新規ツール11個+バグ修正8件: サイレン起動、モーションの取得/設定、録画の取得/設定、オートフォローの取得/設定、プライバシーサウンドの取得/設定、未読数、全項目ヘルスチェック、トークンステータス。 ✅

  • v1.5.1_fetch_rcp_lanを修正(存在しないaiohttp.DigestAuthを使用していたためonvif_scopes / rcp_versionがLAN上で常に失敗していた。現在はhttpx.DigestAuthを使用)。テストカバレッジ83→98%、フィクスチャをサニタイズ、CIをNode-24ネイティブのアクションメジャーに更新。 ✅

  • v1.5.2 — 依存関係の衛生管理: 未使用のaiohttpランタイム依存を削除(現在はテスト専用)、pyjwt>=2.13.0 / starlette>=1.0.1のセキュリティ下限を追加(pip-auditクリーン)、誤ったHTTPスタックをモックしていたテストを修正。 ✅

  • v1.5.3 — セキュリティパッチ: MCPクラウドセッション用にBoschクラウドCAを固定(CWE-295、GHSA-6qh5-x5m5-vj6v)。OAuthトークンに対する隣接ネットワークからのMITMを封鎖。ローカルのTOFUピン留めは変更なし。 ✅

  • v1.5.4 — イベントのタイムスタンプがタイムゾーンオフセットを失わなくなった: /v11/eventsはオフセット付きタイムスタンプ(例: +02:00[Europe/Berlin])を返す。サーバーは19文字に切り詰める代わりに末尾の[zone]サフィックスのみを除去し、明示的なUTCオフセットを保持する。 ✅

  • v1.5.5camera_eventsリソースが正しいイベント分類のためにeventType + eventTagsを使用するようになった。 ✅

  • v1.6.0 — 新規ツール2個: bosch_camera_audio_detection_get / bosch_camera_audio_detection_set — Gen2 Audio-Plusカメラ向けのガラス破壊+煙/火災警報音検知(HA統合v14.2.0からクロスポート)。ツール合計34個。 ✅

  • v1.7.0 — ファミリーパリティ完了(docs/family-parity-plan.md §2b): MCPとHA/CLIの機能ギャップを埋める新規ツール21個 — モーションゾーンの取得/設定/クリア、プライバシーマスクの取得/設定/クリア、オートメーションルールの一覧/追加/編集/削除、カメラ共有/フレンド一覧/招待/共有/共有解除/削除、ファームウェアの状態/インストール(HAのasync_install_firmwareガードをミラー)、サイレン持続時間、LED照明スケジュールの取得/設定、およびリスンオーディオインターコムツール(カメラマイク→発信者、RTSPS URL。双方向通話はBoschのクラウドAPIではまったく公開されておらず、姉妹CLIと同じ制限)。CI強化: カバレッジゲート(--cov-fail-under=96)、pip-audit(ランタイム依存のみ)、pylintcodespell、CodeQL、gitleaksシークレットスキャン、および依存関係レビューワークフロー — HA統合の品質ゲートとのゴールドティアパリティ。ツール合計55個。 ✅

  • v1.7.2 — ドキュメントのみ: このリポジトリのIntegration ComparisonテーブルのLogin行を修正。機能変更なし。 ✅

Releases

最新: v1.7.2 — 完全なノートはGitHubリリースページを参照: v1.7.2 リリースノート →

全リリース

GitHub Releasesページ — ノート付きの全タグ付きバージョン+ダウンロード可能なアセット

全履歴

CHANGELOG.md — 同じノートをリポジトリ内で閲覧可能

Integration Comparison

Bosch Smart Home CameraのリバースエンジニアリングされたAPIは、5つの姉妹プロジェクトを通じて公開されています。お使いのプラットフォームに合うものを選択してください。

機能

Home Assistant Integration

Python CLI Tool

ioBroker Adapter

MCP Server

Frontend (NiceGUI)

Node-RED

成熟度

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)

スタンドアロン Python 3.10+ CLI

ioBroker (npm)

Python 3.10+ · pipx / uvx · MCPクライアント向け stdio + streamable-HTTP (Claude Desktop、Claude Code、カスタム)

NiceGUI Webアプリ · Python 3.10+

Node-REDパレット · npm

ログイン

OAuth2 PKCE (ブラウザ)

OAuth2 PKCE (ブラウザ)

OAuth2 PKCE (ブラウザ)

◑ CLI bosch_config.json を共有

◑ CLI bosch_config.json を共有

◑ CLIからリフレッシュトークン

スナップショット

✅ ネイティブ Camera.image

snapshot コマンド

✅ ファイルストア + base64 DP

bosch_camera_snapshot (LANのみ)

✅ ライブ + イベントフォールバック

snapshot ノード

ライブRTSPストリーム (LAN)

✅ HA Streamコンポーネント経由

✅ ffmpeg/RTSPS出力

✅ TLSプロキシ → ローカルRTSP

bosch_camera_stream_url (LANのみ、クラウド中継なし)

◑ 内部 (go2rtc)

stream-url ノード (URLのみ)

WebRTC (サブ秒レイテンシー)

✅ 統合go2rtc経由

(v10.6.0) live --webrtc

✅ go2rtc経由 (それ以外はスナップショット)

デュアルストリームURL (メイン + サブ)

sensor.bosch_<n>_stream_url + _sub (v12.4.0、カメラごとにオプトイン)

info で両方表示 · live --sub (v10.5.0)

stream_url + stream_url_sub (v0.5.3 実験的)

bosch_camera_stream_url — メインストリームのみ

(サブストリームのみ)

◑ URLのみ — サブオプションなし

外部レコーダー (BlueIris、Frigate)

✅ go2rtc経由

✅ stdoutパイプ

✅ Digest認証URL + LANバインドオプション

✅ URLを返し、ffmpeg / go2rtc に引き渡し

stream-url → 下流に配線

プライバシーモード

✅ スイッチエンティティ

✅ コマンド

✅ DP

bosch_camera_privacy_set (prefer_local によるLANフォールバック)

✅ トグル

privacy ノード

前面スポットライト (Gen1/Gen2)

✅ ライトエンティティ

✅ コマンド

✅ DP

bosch_camera_light_set (LANフォールバック)

(フェーズ2スタブ)

bosch-camera-light ノード (v0.3.0-alpha)

RGBウォールウォッシャー (Gen2 Outdoor II)

✅ RGB対応ライト

◑ オン/オフのみ — RGBなし

✅ 色 + 明るさDP

(オン/オフのみ — RGB非公開)

◑ オン/オフ + 強度のみ — RGBなし (v0.3.0-alpha)

パニック警報サイレン

✅ ボタンエンティティ (Gen2 Indoor II)

✅ コマンド (Gen2 Indoor IIのみ)

✅ DP

bosch_camera_siren_trigger (Gen2 Indoor IIのみ)

✅ トリガー + 継続時間 (Gen2 Indoor IIのみ)

ファームウェア更新

✅ 更新エンティティ + Repairs修正フロー、インストールボタン (v14.4.10)

✅ ステータス + インストール (v10.11.0)

✅ ファームウェア状態 + インストールトリガー、書き込みロックガード (v1.8.0)

✅ ステータス + インストールツール (v1.7.0)

◑ 読み取り専用ステータス表示、インストール操作なし

✅ ステータス + インストールノード (v0.4.0-alpha)

画像180°回転

✅ スイッチ

✅ DP

動体 / 人物 / 音声イベント

✅ FCMプッシュ + ポーリングフォールバック

watch コマンドのみ (イベントコマンドは削除)

✅ FCMプッシュ + ポーリングフォールバック

bosch_camera_events (オンデマンド取得)

◑ 取得専用イベントテーブル

event ノード (ポーリング)

動体エッジトリガー状態

binary_sensor.motion

n/a

motion_active DP (v0.5.3)

n/a (リクエスト/レスポンス、サブスクリプションなし)

動体検知時の自動スナップショット

✅ Cameraエンティティを更新

n/a

last_event_image base64を書き込み (v0.5.3)

n/a (バックグラウンドループなし)

合成動体トリガー (外部センサー)

✅ サービス

n/a

✅ DP

動体検知ゾーン / プライバシーマスク

✅ 読み取り + 書き込み

✅ 読み取り + 書き込み

✅ 読み取り + 書き込み (v1.8.0)

✅ 取得 / 設定 / クリア (v1.7.0)

(ビジュアルエディターは未対応)

自動化ルール / スケジュール

✅ 読み取り + 書き込み

✅ 読み取り + 書き込み

✅ 完全CRUD (v1.8.0)

✅ 一覧 / 追加 / 編集 / 削除 (v1.7.0)

✅ 完全CRUD (一覧/追加/編集/削除)

照明スケジュール

✅ 読み取り (サービス経由で書き込み、Gen1 Eyes Outdoorのみ)

✅ 読み取り + 書き込み

✅ 読み取り (Gen1のみ、v1.2.0)

✅ 取得 / 設定 (v1.7.0)

✅ 読み取り + 書き込み (屋外Eyesカメラ)

クラウドクリップダウンロード (履歴約30日)

✅ メディアブラウザ経由

(保留中 — コミュニティからの要望なし)

(意図的に非公開 — ペイロードが大きいため)

(CLIを使用)

◑ イベントペイロード内の clip_url

Mini-NVR (ローカル録画)

✅ 連続 + イベントバッファ、リングバッファプリロール (v11.2.0 BETA → v14.7.0 モード)

◑ イベントトリガーセグメント多重化、プリロールリングなし (v10.7.0 BETA)

(認証不要のRTSPエンドポイント経由で外部レコーダーに委任)

(NVRの概念なし)

◑ 連続のみ、イベントバッファなし (v0.4.0-alpha)

bosch-camera-nvr-record ノード経由で連続のみ (v0.4.0-alpha)

SMB / NASクリップアップロード

(v10.7.0 BETA)

カメラ共有 (友達)

✅ サービス (共有 / 招待 / 一覧)

✅ コマンド

✅ 共有 / 招待 / 削除 (Gen2のみ、v1.8.0)

✅ 一覧 / 招待 / 共有 / 共有解除 / 削除 (v1.7.0)

✅ 一覧/招待/削除/共有/共有解除

パン / チルト (360° Gen1)

✅ サービス

✅ コマンド

pan_position DP

bosch_camera_pan

✅ ライブAPIに接続されたスライダー

名前付きパンプリセット (ホーム / 左 / 右 / 左後方 / 右後方)

✅ オプトイン選択エンティティ

pan --preset フラグ

pan_preset DP

bosch_camera_pan preset=

双方向音声 / インターコム

✅ コマンド

◑ 聴取専用 bosch_camera_intercom_open (v1.7.0)

イベント時のWebhook配信

✅ サービス + オプトインオプション

watch --webhook URL

✅ MQTTブリッジ経由

(リクエスト/レスポンスモデル)

MQTTイベントブリッジ (動体 / 音声 / 人物)

n/a (HAイベントバスネイティブ)

n/a (単回実行)

✅ 管理者設定

n/a

Apple HomeKit (HA Coreブリッジ経由)

✅ ドキュメント化済み

n/a

n/a

n/a

n/a

n/a

スナップショットスケジューラー / タイムラプス

✅ examples/ YAML

✅ cron + ffmpegの例

✅ Blocklyの例

n/a

ネイティブダッシュボードカード / ウィジェット

✅ Lovelaceカード2種 (シングル + グリッド)

n/a

✅ vis-2ウィジェット2種 — BoschCamera + BoschOverview マルチカム

n/a

(それ自体がWebダッシュボード)

バックグラウンドタブでもPiPが維持される

hass-suspend-when-hidden キープアライブ (v14.0.0)

n/a (UIなし)

✅ 独自PiP + フリーズ復旧、Web-Workerハートビート (v1.7.2/v1.7.3)

n/a (UIなし)

✅ 再接続タイムアウト + フリーズ復旧 (v0.4.0-alpha)

n/a (UIなし)

クラウド中継REMOTEフォールバック

✅ LAN到達不能時に自動切替

✅ リモートモード

(設計上LOCALのみ)

(メディアはLANのみ、ステータス/イベントはクラウド経由)

◑ CLIを継承

◑ REMOTEオプション (手動)

ブラウザベースの管理 / 設定UI

✅ HA Config Flow

n/a (CLI)

✅ JSON設定タブ

n/a (LLM仲介、CLI / MCPクライアント経由で設定)

✅ 設定ページ

◑ エディター設定ノード

UI言語

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 (UIなし — LLMがフロントエンド)

◑ バックエンドi18n · UIは主に英語

n/a (英語のみ)

凡例: ✅ 対応 · ❌ 非対応 / 予定なし · n/a このプラットフォームには該当なし

4つのプロジェクトはすべて、同じリバースエンジニアリングされたCloud API + RCPプロトコルの研究成果を共有していますが、それぞれ独立して進化しています。Home Assistant統合は最も機能が充実したリファレンス実装であり、Python CLIは最も低レベル/スクリプト可能なインターフェース、ioBrokerアダプターはVISダッシュボードとBlockly自動化を対象とし、MCPサーバーは厳選されたLAN優先のツールサーフェスをMCPクライアント(Claude Desktop、Claude Code、カスタム)に公開し、自然言語によるカメラ制御を可能にします。


関連プロジェクト

Bosch Smart Home Cameras向け5つの実装ファミリーの一部(アルファ版フロントエンドを含む):

実装

リポジトリ

ステータス

🏆 Home Assistant統合

Bosch-Smart-Home-Camera-Tool-HomeAssistant

v16.0.1 · HA品質スケール Platinum · 本番対応

🐍 Python CLI

Bosch-Smart-Home-Camera-Tool-Python

v10.12.3 · Mini-NVR + SMBアップロード(BETA) · LANフォールバック(ping / --local) · PTZプリセット · webhook配信 · キャプチャ / 調査 / スタンドアロン

🟢 ioBrokerアダプター

ioBroker.bosch-smart-home-camera

v1.8.3 · 安定版 · npm · プライバシートグルDigestローテーション · MQTTブリッジ · PTZプリセット · VIS-2ウィジェット(BoschCamera + BoschOverview)

🤖 MCPサーバー(このリポジトリ)

Bosch-Smart-Home-Camera-Tool-MCP

v1.7.2 · 認証情報ローテーション · PTZプリセット · TOFU証明書ピン留め · クラウドCAピン留め(CWE-295) · LAN-ping + prefer_local · ゾーン/マスク/ルール/フレンド/ファームウェアインストール · Claude Code / Claude Desktop統合

🔴 Node-REDノード(アルファ版)

Bosch-Smart-Home-Camera-Tool-NodeRED

v0.4.2-alpha · イベント / スナップショット / プライバシー / 設定 / その他のノード

関連: Bosch Smart Home Camera — Pythonフロントエンド(NiceGUI) — v0.4.2-alpha(ダッシュボード + カメラ詳細 + 設定)— コミュニティの関心歓迎

HAはリファレンス実装であり続けます — 機能はまずHAに実装され、Python CLI、ioBrokerアダプター、MCPサーバーは時間をかけて追従します。


ライセンス

MIT — 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