Bosch Smart Home Camera MCP Server
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 インストール対応
目次
リリース · 完全な変更ログ · GitHub リリース
統合比較 — プラットフォームに合ったプロジェクトを選ぶ
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 | スタンドアロン 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.py の DEFAULT_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:#000bosch_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)
ツール | 説明 | 戻り値 |
| 設定されているすべてのカメラを一覧表示する |
|
| 1台のカメラのオンライン/オフラインとプライバシー状態を取得する |
|
| LAN限定のJPEGキャプチャ(クラウドなし)— カメラIPへのHTTP Digest |
|
| LAN限定のRTSPSストリームURL(クラウド中継なし)— ffmpeg/VLC/go2rtcで利用可能 |
|
| 最近のモーション/人/音声イベントを一覧表示する |
|
| プライバシーモードをオン/オフにする。 |
|
| スポットライトをオン/オフにする。 |
|
| 360°カメラをパン操作する(Gen1 CAMERA_360のみ)。 |
|
| プッシュ通知を切り替える |
|
| LANポート443でカメラにTCPプローブを実行する(タイムアウト1.5秒) |
|
| コミュニティRSSフィードから現在のクラウドメンテナンスのお知らせを取得する |
|
| マイクレベル、スピーカーレベル、インターホンフラグを取得する(Gen2のみ) |
|
| マイクレベルおよび/またはスピーカーレベルを0〜100で設定する(Gen2のみ) |
|
| 侵入検知設定を取得する: モード、感度0〜7、距離1〜8 m(Gen2のみ) |
|
| 侵入検知のモード/感度/距離を更新する(Gen2のみ) |
|
| ガラス破壊+煙/火災警報の音検知設定を取得する(Gen2 Audio-Plusのみ) |
|
| ガラス破壊および/または火災警報の音検知を更新する(Gen2 Audio-Plusのみ) |
|
| WiFiのRSSI、SSID、および導出された信号品質0〜100%を取得する |
|
| RTSP inst=3 経由の直接LAN MJPEGスナップショット(Gen2のみ、ffmpeg、クラウド往復なし) |
|
| カメラのLAN RCP 0x0a98からONVIFデバイススコープを読み取る(Gen2のみ) |
|
| カメラのLANオペコード0xff00 + 0xff04からRCPライブラリバージョンを読み取る |
|
| アカウントレベルのBoschクラウド機能フラグを取得する(カメラパラメータなし) |
|
| 屋内サイレンをトリガーする(Gen2 Indoor IIのみ)。 |
|
| モーション検知の有効状態+感度を取得する |
|
| モーション検知の有効/無効および/または感度を設定する |
|
| クラウド録画の音声設定を取得する |
|
| クラウド録画の音声を設定する |
|
| 360°自動追尾状態を取得する(Gen1 Indoorのみ) |
|
| 360°自動追尾を設定する(Gen1 Indoorのみ) |
|
| 可聴のプライバシー通知音(チャイム)状態を取得する |
|
| 可聴のプライバシー通知音(チャイム)状態を設定する |
|
| カメラの未読イベント数を取得する |
|
| 全カメラの一括ヘルスサマリー(ステータス+WiFi+プライバシー+最終イベント+未読) | カメラごとのヘルスディクショナリの配列 |
| ローカルJWTパース — 有効性、有効期限、メールを返す(ネットワーク呼び出しなし) |
|
| モーション検知ゾーンの長方形を一覧表示する(正規化0.0〜1.0) |
|
| すべてのモーションゾーンを置き換える(全置換、マージではない) |
|
| すべてのモーションゾーンを削除する |
|
| プライバシーマスクのゾーン長方形を一覧表示する(正規化0.0〜1.0) |
|
| すべてのプライバシーマスクを置き換える(全置換、マージではない) |
|
| すべてのプライバシーマスクを削除する |
|
| 1台のカメラの自動化(時間スケジュール)ルールを一覧表示する |
|
| 新しいスケジュールルールを作成する |
|
| 既存のルールを更新する(部分更新) |
|
| ルールを削除する |
|
| カメラ共有のフレンド/招待を一覧表示する(アカウントレベル) |
|
| メールでフレンドを招待する(アカウントレベル) |
|
| 既存のフレンドと1台のカメラを共有する(既存の共有とマージされる) |
|
| フレンドからすべてのカメラ共有を撤回する |
|
| フレンドを完全に削除する |
|
| 現在/最新のファームウェアバージョン+更新の有無を取得する |
|
| 保留中のファームウェアアップデートをインストールする(カメラは3〜7分で再起動) |
|
| サイレン警報の持続時間を設定する、10〜300秒(Gen2 Indoor IIのみ) |
|
| LED照明スケジュールを取得する(屋外Eyesカメラ) |
|
| LED照明スケジュールを更新する(屋外Eyesカメラ) |
|
| 音声聴取セッションを開く(カメラのマイク→発信者)。RTSPS URLを返す、聴取専用 |
|
| 日時オーバーレイが動画に焼き込まれているかどうかを取得する |
|
| 日時ビデオオーバーレイをオン/オフにする |
|
| カメラのステータスLEDのオン/オフ状態を取得する(Gen2のみ) |
|
| カメラのステータスLEDをオン/オフにする(Gen2のみ) |
|
| レンズの取り付け高さをメートルで取得する(Gen2のみ) |
|
| レンズの取り付け高さを設定する、0.5〜5.0 m(Gen2のみ) |
|
| 昼夜の照明しきい値+フェーディングモードを取得する(Gen2のみ) |
|
| 昼夜の照明しきい値および/またはフェーディングモードを設定する(Gen2のみ) |
|
| フロントライトのホワイトバランスを取得する、-1.0寒色 .. 1.0暖色(Gen2のみ) |
|
| フロントライトのホワイトバランスを設定する(Gen2のみ) |
|
| 上部または下部のLED輝度0〜100%を取得する(Gen2のみ) |
|
| 上部または下部のLED輝度0〜100%を設定する(Gen2のみ) |
|
| 1台のカメラを再起動する(ソフトリセット) |
|
| 1台のカメラを工場出荷時リセット — 破壊的操作、カメラのペアリングを解除します。 |
|
| クラウドAPI経由でカメラの名前を変更する |
|
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_set、bosch_camera_light_set)は、bosch_config.json から新しいDigest資格情報を再取得した後、HTTP 401で自動的に1回再試行します。ユーザーに見えるAPI変更はありません — 再試行は静かで、ローテーションが必要かどうかに関係なくツールの結果は同じです。これにより、キャッシュされたDigest nonceが期限切れになったときのコールドスタート失敗が解消されます。bosch_camera_pan は現在 prefer_local パラメータを受け取りません — panは常に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クラウドリレーはありません。残りのツール(status、events、privacy/light/pan/notifications)は、これらのエンドポイントに対してローカルAPIが現在公開されていないため、依然としてクラウドを使用します。
ツール | パス |
| LANのみ — カメラIPへのHTTP Digest |
| LANのみ — ローカルBosch TLSプロキシ経由のRTSPS |
| LANのみ — カメラのポート443へのTCP接続 |
| Boschクラウド(ローカルAPIはまだない) |
| Boschクラウド |
| LAN-RCP優先、クラウドフォールバック — Gen2のみ |
| 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つのトランスポートモードがサポートされています:
モード | フラグ | ユースケース |
|
| 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— 公式MCP Python SDKpydantic(すでに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.jsonClaude 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/mcpClaude 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://cameras、bosch://cameras/{name}/snapshot.jpg、bosch://cameras/{name}/events)+ プロンプト(daily-camera-summary、pre-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.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ツール(LAN上の任意のカメラをTCPプローブ)、bosch_camera_privacy_set/bosch_camera_light_setのprefer_local=True(RCP-LAN書き込みパス、Gen2、失敗時はクラウドにフォールバック)、bosch_camera_maintenance_statusのrecommended_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_snapshot、bosch_camera_onvif_scopes、bosch_camera_rcp_version、bosch_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.5 —
camera_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(ランタイム依存のみ)、pylint、codespell、CodeQL、gitleaksシークレットスキャン、および依存関係レビューワークフロー — HA統合の品質ゲートとのゴールドティアパリティ。ツール合計55個。 ✅v1.7.2 — ドキュメントのみ: このリポジトリのIntegration ComparisonテーブルのLogin行を修正。機能変更なし。 ✅
Releases
最新: v1.7.2 — 完全なノートはGitHubリリースページを参照: v1.7.2 リリースノート →
全リリース | GitHub Releasesページ — ノート付きの全タグ付きバージョン+ダウンロード可能なアセット |
全履歴 |
|
Integration Comparison
Bosch Smart Home CameraのリバースエンジニアリングされたAPIは、5つの姉妹プロジェクトを通じて公開されています。お使いのプラットフォームに合うものを選択してください。
機能 | ||||||
成熟度 | 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 | ◑ CLI | ◑ CLIからリフレッシュトークン |
スナップショット | ✅ ネイティブ | ✅ | ✅ ファイルストア + base64 DP | ✅ | ✅ ライブ + イベントフォールバック | ✅ |
ライブRTSPストリーム (LAN) | ✅ HA Streamコンポーネント経由 | ✅ ffmpeg/RTSPS出力 | ✅ TLSプロキシ → ローカルRTSP | ✅ | ◑ 内部 (go2rtc) | ◑ |
WebRTC (サブ秒レイテンシー) | ✅ 統合go2rtc経由 | ✅ (v10.6.0) | ❌ | ❌ | ✅ go2rtc経由 (それ以外はスナップショット) | ❌ |
デュアルストリームURL (メイン + サブ) | ✅ | ✅ | ✅ | ◑ | ❌ (サブストリームのみ) | ◑ URLのみ — サブオプションなし |
外部レコーダー (BlueIris、Frigate) | ✅ go2rtc経由 | ✅ stdoutパイプ | ✅ Digest認証URL + 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プッシュ + ポーリングフォールバック | ◑ | ✅ FCMプッシュ + ポーリングフォールバック | ✅ | ◑ 取得専用イベントテーブル | ✅ |
動体エッジトリガー状態 | ✅ | n/a | ✅ | n/a (リクエスト/レスポンス、サブスクリプションなし) | ❌ | ❌ |
動体検知時の自動スナップショット | ✅ Cameraエンティティを更新 | n/a | ✅ | 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を使用) | ◑ イベントペイロード内の |
Mini-NVR (ローカル録画) | ✅ 連続 + イベントバッファ、リングバッファプリロール (v11.2.0 BETA → v14.7.0 モード) | ◑ イベントトリガーセグメント多重化、プリロールリングなし (v10.7.0 BETA) | ❌ (認証不要のRTSPエンドポイント経由で外部レコーダーに委任) | ❌ (NVRの概念なし) | ◑ 連続のみ、イベントバッファなし (v0.4.0-alpha) | ◑ |
SMB / NASクリップアップロード | ✅ | ✅ (v10.7.0 BETA) | ❌ | ❌ | ❌ | ❌ |
カメラ共有 (友達) | ✅ サービス (共有 / 招待 / 一覧) | ✅ コマンド | ✅ 共有 / 招待 / 削除 (Gen2のみ、v1.8.0) | ✅ 一覧 / 招待 / 共有 / 共有解除 / 削除 (v1.7.0) | ✅ 一覧/招待/削除/共有/共有解除 | ❌ |
パン / チルト (360° Gen1) | ✅ サービス | ✅ コマンド | ✅ | ✅ | ✅ ライブAPIに接続されたスライダー | ❌ |
名前付きパンプリセット (ホーム / 左 / 右 / 左後方 / 右後方) | ✅ オプトイン選択エンティティ | ✅ | ✅ | ✅ | ❌ | ❌ |
双方向音声 / インターコム | ❌ | ✅ コマンド | ❌ | ◑ 聴取専用 | ❌ | ❌ |
イベント時のWebhook配信 | ✅ サービス + オプトインオプション | ✅ | ✅ 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が維持される | ✅ | 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統合 | v16.0.1 · HA品質スケール Platinum · 本番対応 | |
🐍 Python CLI | v10.12.3 · Mini-NVR + SMBアップロード(BETA) · LANフォールバック(ping / --local) · PTZプリセット · webhook配信 · キャプチャ / 調査 / スタンドアロン | |
🟢 ioBrokerアダプター | v1.8.3 · 安定版 · npm · プライバシートグルDigestローテーション · MQTTブリッジ · PTZプリセット · VIS-2ウィジェット(BoschCamera + BoschOverview) | |
🤖 MCPサーバー(このリポジトリ) | v1.7.2 · 認証情報ローテーション · PTZプリセット · TOFU証明書ピン留め · クラウドCAピン留め(CWE-295) · LAN-ping + prefer_local · ゾーン/マスク/ルール/フレンド/ファームウェアインストール · Claude Code / Claude Desktop統合 | |
🔴 Node-REDノード(アルファ版) | v0.4.2-alpha · イベント / スナップショット / プライバシー / 設定 / その他のノード |
関連: Bosch Smart Home Camera — Pythonフロントエンド(NiceGUI) — v0.4.2-alpha(ダッシュボード + カメラ詳細 + 設定)— コミュニティの関心歓迎
HAはリファレンス実装であり続けます — 機能はまずHAに実装され、Python CLI、ioBrokerアダプター、MCPサーバーは時間をかけて追従します。
ライセンス
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