Bosch Smart Home Camera MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bosch_camera_listA | List all configured Bosch cameras with their online status. |
| bosch_camera_statusB | Get the current status of one camera by name (case-insensitive). |
| bosch_camera_snapshotB | Capture a fresh snapshot via LAN only (HTTP Digest to camera IP). No Bosch cloud roundtrip. Requires the MCP host to be on the same network as the camera. Saves to ~/.cache/bosch-camera-mcp/snapshots//.jpg. |
| bosch_camera_stream_urlA | Get the LAN RTSPS stream URL for one camera. No Bosch cloud relay. The returned URL is consumable by ffmpeg/VLC/go2rtc. Requires that the MCP host runs on the same network as the camera and has local credentials configured for the camera (bosch_config.json → cameras[name].local_*). |
| bosch_camera_eventsB | Return the most recent motion / person / audio events for one camera. Each item contains: event_id, type, timestamp_iso, has_clip. |
| bosch_camera_lan_pingA | Probe whether a camera is reachable on the LAN (TCP port 443, 1.5 s timeout). Pass either Returns |
| bosch_camera_privacy_setA | Turn privacy mode on or off. enabled=True hides the camera. When |
| bosch_camera_light_setA | Turn the camera's spotlight on or off. Only for cameras with When |
| bosch_camera_panA | Pan the 360° indoor camera (Gen1 CAMERA_360 only, panLimit > 0). Named presets (preferred, via
When |
| bosch_camera_siren_triggerA | Trigger (or stop) the indoor siren on a camera. Endpoint depends on the camera model:
The siren plays for the camera-side configured duration (typically 30–60 s
on Gen2). To change the duration, use Raises Args: camera: Camera name (case-insensitive). stop: If True, send the stop variant ({"enabled": False} or {"status": "OFF"}). Useful for cancelling an active Gen2 panic alarm before its duration expires. |
| bosch_camera_siren_duration_setA | Set the siren alarm duration for one camera (Gen2 Indoor II only). Read-modify-write on Raises Args: camera: Camera name (case-insensitive). seconds: New siren duration, 10-300 seconds inclusive. |
| bosch_camera_lighting_schedule_getA | Get the LED lighting schedule for one outdoor (Eyes) camera. API: |
| bosch_camera_lighting_schedule_setA | Update the LED lighting schedule for one outdoor (Eyes) camera. Read-modify-write on Only available on outdoor cameras with LED light — raises
Args: camera: Camera name (case-insensitive). on_time: Light-on time, "HH:MM" or "HH:MM:SS". off_time: Light-off time, "HH:MM" or "HH:MM:SS". light_on_motion: Whether motion also triggers the light. darkness_threshold: Ambient-darkness trigger threshold, 0.0-1.0. |
| bosch_camera_intercom_openA | Open a listen-audio session tunnel to a camera (cloud proxy). Listen-only — returns an RTSPS URL streaming the camera's microphone
audio to the caller. True two-way talk (caller mic -> camera speaker) is
not exposed via the Bosch cloud API (same limitation as the Python CLI's
own Flow: optionally sets the camera's speaker level (full-body PUT to
Args:
camera: Camera name (case-insensitive).
duration: Requested session duration in seconds (embedded in the URL
as |
| bosch_camera_notifications_setC | Toggle push notifications for one camera. |
| bosch_camera_maintenance_statusA | Fetch the current Bosch Smart Home cloud maintenance announcement from the official community RSS feed. Returns title, time window, link, state (active/scheduled/past/recent/unknown/idle),
and a
Use this tool when users ask why cameras are unavailable or when the cloud returns 5xx errors. |
| bosch_camera_audio_getA | Get the microphone and speaker level settings for one Gen2 camera. Only for cameras with Returns |
| bosch_camera_audio_setA | Set the microphone level and/or speaker level for one Gen2 camera. Only for cameras with Both values must be in the range 0-100. The API persists the full audio payload — unspecified fields are preserved from the current camera state. Returns updated |
| bosch_camera_intrusion_getA | Get the intrusion detection configuration for one Gen2 camera. Returns
|
| bosch_camera_intrusion_setA | Update the intrusion detection configuration for one Gen2 camera. Gen2-only feature — raises
Unspecified fields are preserved from the current camera configuration.
Returns the updated |
| bosch_camera_audio_detection_getA | Get the glass-break + smoke/fire-alarm sound detection config for one Gen2 camera. Only available on Gen2 Audio-Plus cameras ( Returns |
| bosch_camera_audio_detection_setA | Update glass-break and/or fire-alarm sound detection for one Gen2 camera. Gen2 Audio-Plus-only feature — raises Read-modify-write: the current config is fetched first, only the provided
field(s) are merged in, and both Returns the updated |
| bosch_camera_wifiA | Get the WiFi signal quality for one camera. Queries
Useful for diagnosing intermittent connectivity, stream drops, or deciding
whether to force |
| bosch_camera_mjpeg_snapshotA | Direct LAN MJPEG snapshot via RTSP inst=3 (Gen2 only). Faster than snap.jpg, no cloud roundtrip. Uses ffmpeg to pull a single frame from the camera's RTSPS stream (inst=3 = sub-stream, lower resolution but faster). Saves JPEG to ~/.cache/bosch-camera-mcp/snapshots/. Requires ffmpeg installed and MCP host on same LAN as camera. Gen2 only (HOME_Eyes_Outdoor / HOME_Eyes_Indoor). |
| bosch_camera_onvif_scopesA | Read ONVIF device scopes from camera via LAN RCP command 0x0a98 (Gen2 only). Returns parsed scope fields: name, hardware model, ONVIF profiles, and the raw scope string. Requires local_ip + local credentials in bosch_config.json. Gen2 only (HOME_Eyes_Outdoor / HOME_Eyes_Indoor). |
| bosch_camera_rcp_versionA | Read RCP firmware version from camera via LAN (opcodes 0xff00 + 0xff04). Returns primary and secondary RCP library versions in dotted decimal and raw hex. Useful for diagnosing protocol compatibility. Requires local_ip + local credentials. |
| bosch_camera_feature_flagsA | Fetch account-level Bosch cloud feature flags from GET /v11/feature_flags. Returns the raw dict of feature flag names to boolean values, e.g. {"APP_RATING": true, "IOT_THINGS_INTEGRATION": true, ...}. No camera parameter — flags are account-level. Useful for discovering which Bosch platform features are active for this account. |
| bosch_camera_motion_getA | Get motion detection settings for one camera. Returns API: GET /v11/video_inputs/{id}/motion. |
| bosch_camera_motion_setA | Set motion detection enabled state and/or sensitivity for one camera. At least one of
API: PUT /v11/video_inputs/{id}/motion. |
| bosch_camera_recording_getB | Get cloud recording options for one camera. Returns API: GET /v11/video_inputs/{id}/recording_options. |
| bosch_camera_recording_setB | Enable or disable audio in cloud recordings for one camera.
API: PUT /v11/video_inputs/{id}/recording_options Body: |
| bosch_camera_autofollow_getA | Get auto-follow (360° auto-tracking) state for one camera. Returns API: GET /v11/video_inputs/{id}/autofollow. |
| bosch_camera_autofollow_setA | Enable or disable 360° auto-tracking for one camera. Only available on 360° indoor cameras ( API: PUT /v11/video_inputs/{id}/autofollow Body: |
| bosch_camera_privacy_sound_getA | Get the privacy-sound indicator setting for one camera. When enabled, the camera plays an audible indicator when privacy mode changes.
Returns API: GET /v11/video_inputs/{id}/privacy_sound_override. |
| bosch_camera_privacy_sound_setA | Enable or disable the audible indicator that plays when privacy mode changes.
API: PUT /v11/video_inputs/{id}/privacy_sound_override Body: |
| bosch_camera_unread_getA | Get the unread event count for one camera. Reads Returns |
| bosch_camera_health_check_allA | Bulk health check for ALL configured cameras in one call. Returns status + WiFi signal + privacy mode + last event + unread count for each camera. Replaces 4+ separate MCP calls for dashboard use. Errors per camera are captured in the |
| bosch_camera_token_statusA | Return the current bearer token validity, expiry, and account email. Parses the JWT Returns |
| bosch_camera_motion_zones_getA | List the motion-detection zone rectangles configured for one camera. Coordinates are normalized 0.0-1.0 (x/y = top-left corner, w/h = size).
Returns an empty list if no zones are configured. Raises |
| bosch_camera_motion_zones_setA | Replace ALL motion-detection zones for one camera with the given list. This is a full replace, not a merge — pass every zone you want to keep.
Each zone is |
| bosch_camera_motion_zones_clearB | Remove all motion-detection zones for one camera. Returns the (empty) list. |
| bosch_camera_privacy_masks_getA | List the privacy-mask zone rectangles configured for one camera. Coordinates are normalized 0.0-1.0 (x/y = top-left corner, w/h = size). Masked areas are permanently blacked out in both live view and recordings. |
| bosch_camera_privacy_masks_setA | Replace ALL privacy-mask zones for one camera with the given list. Full replace, not a merge. Each mask is |
| bosch_camera_privacy_masks_clearA | Remove all privacy-mask zones for one camera. Returns the (empty) list. |
| bosch_camera_rules_listB | List the automation (time-schedule) rules configured for one camera. |
| bosch_camera_rules_addA | Create a new automation rule for one camera.
|
| bosch_camera_rules_editB | Update an existing automation rule for one camera. Only provided fields change. |
| bosch_camera_rules_deleteA | Delete an automation rule from one camera. Returns {deleted, rule_id}. |
| bosch_camera_friends_listA | List all friends/invitations this account has shared cameras with. No camera parameter — friends are account-level, not per-camera. |
| bosch_camera_friends_inviteB | Invite a new friend (by email) to share cameras with. Account-level. |
| bosch_camera_friends_shareA | Share one camera with an existing friend.
|
| bosch_camera_friends_unshareA | Revoke ALL camera shares from a friend (the friend entry itself remains). Returns {unshared, friend_id}. |
| bosch_camera_friends_removeA | Remove a friend entirely (revokes shares and deletes the invitation/friendship). Returns {removed, friend_id}. |
| bosch_camera_firmware_statusB | Get the current/latest firmware version and update-availability for one camera. |
| bosch_camera_firmware_installA | Install the pending firmware update for one camera right now. Mirrors the HA integration's |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| daily-camera-summary | Walk through today's events on all cameras and produce a structured daily report: motion count, person count, audio events, time distribution, and anomaly highlights. |
| pre-leave-check | Pre-departure routine: snapshot every camera, describe what is visible, flag anomalies (open windows, unexpected occupants, lights on), and recommend enabling privacy mode on indoor cameras. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| cameras-list | JSON list of all configured Bosch cameras with status, firmware, and MAC. |
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