Home MCP Bridge
HomeMCPBridge is a Mac app that connects AI assistants to HomeKit through the Model Context Protocol. Ask Claude to turn off the living room lights or whether the garage is open, and it calls the right HomeKit action directly, with no Homebridge, no Home Assistant and no cloud service. It also brings in devices HomeKit doesn't cover, reports motion and doorbell events, and can push those events to another AI system as they happen.
At a glance
- Type
- AI
- Industry
- Smart home
- Built with
- Swift, HomeKit through Mac Catalyst, Model Context Protocol
- Platform
- macOS 14 or later
- Works with
- Claude Code, Claude Desktop and other MCP clients
- MCP tools
- 14
- Codebase
- One Swift file of about 6,600 lines, open source under the MIT License
- Timeline
- Built over two days in January 2026
An MCP server in a menu bar app
The MCP client launches the app's own executable as its server and talks JSON-RPC to it over standard input and output. The server answers the handshake, lists its tools and dispatches each call, so MCP needs no network port at all.
It is built as a Mac Catalyst app, which gives it Apple's HomeKit framework on the Mac. It runs from the menu bar, with a status window, a device browser, a setup guide and a log of every tool call.
Calls into HomeKit and the plugins are asynchronous; the server waits for each result before answering, so the line-by-line request loop stays simple.
Fourteen tools
Five tools list homes, rooms and devices, read a device's state and control it: on and off, brightness, hue and saturation, lock and unlock, open and close.
Two list cameras and capture snapshots as base64 images. Four cover motion, occupancy, doorbells and contact sensors, including buffering events for an assistant to poll. Three reach cameras on a Scrypted NVR.
The app holds no automation logic of its own. The assistant decides; HomeMCPBridge only exposes what HomeKit can read and do.
Plugins and device linking
Devices outside HomeKit come in through plugins that share one protocol: list devices, read state, control a device, configure credentials. HomeKit, Govee and Scrypted are built in, and plugin credentials are kept in the Keychain.
Scrypted cameras are discovered over MQTT, through a small MQTT 3.1.1 client written on Apple's Network framework with no third-party dependency.
When the same light shows up in HomeKit and in a plugin, the two can be linked so the assistant sees one device, and commands go to the more capable source.
Events, pushed
MCP is request and response, so events need another path. MCPPost sends motion, occupancy, doorbell and contact events to an HTTP endpoint the user chooses, as JSON with the sensor, its room and home and the new state. An assistant can then react, for example by taking a snapshot when motion starts.
Device control runs on the Mac and needs no internet connection. Apart from plugins that talk to their own service, nothing leaves the machine except the events the user chooses to send.
Highlights
- A native MCP server in one Swift file, speaking JSON-RPC over standard input and output.
- Direct HomeKit access through Mac Catalyst, with no Homebridge, Home Assistant or cloud.
- A dependency-free MQTT 3.1.1 client on the Network framework for Scrypted discovery.
- Device linking, so the same light in two systems is one device to the assistant.
- Plugin credentials stored in the Keychain.
Let's talk.
Tell me what you're building. I read every message myself and usually reply within one business day.