Labsco
rodaddy logo

HomeMCPBridge

โ˜… 4

from rodaddy

Native macOS HomeKit integration for AI assistants via Model Context Protocol

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeAdvanced setup

HomeMCPBridge

Native macOS HomeKit integration for AI assistants via the Model Context Protocol (MCP).

Control your entire smart home with natural language - no Homebridge, no Home Assistant, no cloud services. Just direct HomeKit access.

What is this?

HomeMCPBridge is a macOS app that lets AI assistants (Claude, and others that support MCP) control your HomeKit devices directly. Ask your AI to "turn off the living room lights" or "set the bedroom to 50% brightness" and it just works.

Features

  • Native HomeKit - Direct access to Apple's HomeKit framework, no bridges or hacks
  • MCP Protocol - Works with Claude Code, Claude Desktop, and any MCP-compatible AI
  • All Device Types - Lights, switches, outlets, fans, locks, garage doors, thermostats
  • Full Control - On/off, brightness, color (hue/saturation), lock/unlock, open/close
  • Menu Bar App - Runs quietly in the background with a status window
  • Plugin System - Extend with Govee, Scrypted NVR, and more
  • Device Linking - Link HomeKit devices with plugin counterparts to avoid duplicates
  • MCPPost - Broadcast real-time sensor events to your AI system
  • Camera Snapshots - Capture images from HomeKit and Scrypted cameras
  • Motion Events - Monitor motion sensors, doorbells, and contact sensors

Available MCP Tools

Device Control

ToolDescription
list_devicesList all devices from HomeKit and plugins
list_roomsList all rooms in all homes
list_homesList all configured HomeKit homes
get_device_stateGet current state of a device
control_deviceControl a device (on, off, toggle, brightness, color, lock, unlock, open, close)

Cameras

ToolDescription
list_camerasList all HomeKit cameras
capture_snapshotCapture image from camera (returns base64)

Motion & Events

ToolDescription
list_motion_sensorsList motion sensors, occupancy sensors, doorbells
get_motion_stateGet current motion detection state
subscribe_eventsEnable motion and contact event buffering
get_pending_eventsPoll for buffered motion/doorbell/contact events

Scrypted NVR (requires configuration)

ToolDescription
scrypted_list_camerasList all Scrypted cameras with capabilities
scrypted_capture_snapshotCapture snapshot from Scrypted camera
scrypted_get_camera_stateGet camera state including motion detection
scrypted_set_webhook_tokenConfigure webhook token for a camera

Supported Device Types

  • Lights - On/off, brightness, color (hue/saturation)
  • Switches - On/off
  • Outlets - On/off
  • Fans - On/off
  • Locks - Lock/unlock
  • Garage Doors - Open/close
  • Thermostats - Read temperature (control coming soon)
  • Sensors - Read values
  • Cameras - Capture snapshots
  • Motion Sensors - Detect motion/occupancy
  • Contact Sensors - Door/window open/close

App Tabs

Status

Overview of your smart home setup:

  • Apple HomeKit device count
  • Plugin status and device counts
  • Device link count
  • App settings (menu bar, dock icon)

Devices

Browse all devices organized by room:

  • Tap (i) to link/unlink devices
  • Shows device source (HomeKit, Govee, etc.)
  • Indicates linked devices

Plugins

Configure third-party integrations:

  • Govee - Smart lights and appliances
  • Scrypted NVR - Network video recorder cameras

MCPPost

Broadcast real-time sensor events to your AI:

  • Configure webhook endpoint URL
  • Enable/disable event broadcasting
  • View recent events and their status
  • Test endpoint connectivity

Setup

Complete setup guide with:

  • MCP configuration snippets
  • Plugin setup instructions (Govee, Scrypted)
  • MCPPost configuration
  • Device linking guide

Log

Full activity log for debugging:

  • All MCP tool calls
  • Plugin activity
  • Event notifications
  • Clear and scroll controls

Device Linking

When you have the same device in both HomeKit and a plugin (like Govee), you can link them so they're treated as one device:

  1. Go to the Devices tab
  2. Tap the (i) button on any device
  3. Select "Link Device..."
  4. Choose the corresponding device from another source

Linked devices use the most capable source automatically (plugins usually have more features than HomeKit).


MCPPost (Event Broadcasting)

MCPPost broadcasts real-time sensor events to a custom HTTP endpoint, enabling your AI system (like Jarvis) to receive push notifications.

Configuration

  1. Open HomeMCPBridge
  2. Go to the MCPPost tab
  3. Enter your endpoint URL (e.g., http://localhost:8000/api/events)
  4. Enable broadcasting with the toggle
  5. Click "Test Endpoint" to verify

Supported Events

  • Motion sensors - Motion detected/cleared
  • Occupancy sensors - Room occupancy changes
  • Doorbells - Ring events
  • Contact sensors - Door/window open/close

Event Payload

{
  "event_id": "uuid",
  "event_type": "motion|occupancy|doorbell|contact",
  "source": "HomeKit",
  "timestamp": "2024-01-18T21:00:00Z",
  "sensor": {
    "name": "Front Door Motion",
    "id": "sensor-uuid",
    "room": "Hallway",
    "home": "Home"
  },
  "data": {
    "detected": true,
    "state": "open",
    "isOpen": true
  }
}

Plugin System

Built-in Plugins

PluginAuthenticationDescription
Apple HomeKitNative (always enabled)Direct access to HomeKit devices
GoveeAPI KeyControl Govee smart lights and appliances
Scrypted NVRUsername/PasswordAccess Scrypted cameras and motion detection

Govee Setup

  1. Open the Govee Home app on your phone
  2. Go to Settings > About Us > Apply for API Key
  3. Wait for approval (usually within a few days)
  4. Copy your API key from the email
  5. In HomeMCPBridge, go to Plugins > Govee and enter your API key
  6. Enable the Govee plugin

Scrypted NVR Setup

  1. Install and configure Scrypted on your network
  2. Note your Scrypted server URL (e.g., https://mac-mini.local:10443)
  3. Install the @scrypted/webhook plugin in Scrypted
  4. For each camera, create a Camera webhook and note the token
  5. In HomeMCPBridge, go to Plugins > Scrypted and enter credentials
  6. Use scrypted_set_webhook_token tool to configure each camera's token

Plugin Development Guide

Want to add support for another smart home platform? Here's how to create a custom plugin.

Plugin Protocol

protocol DevicePlugin: AnyObject {
    var identifier: String { get }
    var displayName: String { get }
    var isEnabled: Bool { get set }
    var isConfigured: Bool { get }
    var configurationFields: [PluginConfigField] { get }

    func initialize() async throws
    func shutdown() async
    func listDevices() async throws -> [UnifiedDevice]
    func getDeviceState(deviceId: String) async throws -> [String: Any]
    func controlDevice(deviceId: String, action: String, value: Any?) async throws -> ControlResult
    func configure(with credentials: [String: String]) async throws
    func clearCredentials()
}

Registering Your Plugin

func application(_ application: UIApplication, didFinishLaunchingWithOptions...) {
    PluginManager.shared.register(MyPlatformPlugin())
}

Privacy

HomeMCPBridge:

  • Runs entirely on your Mac
  • Communicates directly with your HomeKit devices via Apple's framework
  • Does not send any data to external servers (except MCPPost, which you configure)
  • Does not require an internet connection for local device control