Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"hue-ble": {
"env": {
"HUE_LIGHT_ADDRESS": ""
},
"command": "hue-ble-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Control Philips Hue lights via Bluetooth LE — no bridge required.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'hue-ble-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked hue-ble-mcp against OSV.dev.
Click any tool to inspect its schema.
This server is missing a description.If you've used it, help the community.
Add informationBe the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in other
MCP server for Spanning Cloud Backup — M365/GWS/Salesforce backups, restores, audit.
AI agent control of 3D printers — 432 tools for OctoPrint, Moonraker, Bambu, Prusa, Elegoo
MCP server for Kaseya Autotask PSA — companies, tickets, projects, time entries, and more.
On-chain provenance lookup for AnchorRegistry. Resolve AR-IDs, hashes, and full trees. Authless.
MCP Security Weekly
Get CVE alerts and security updates for io.github.jonnyblankinship/hue-ble-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An MCP server that lets Claude control Philips Hue lights via Bluetooth LE — no Hue Bridge or internet connection required.
Just ask Claude things like:
| Tool | Description |
|---|---|
scan_hue_lights | Discover nearby Hue BLE lights and get their addresses |
turn_on | Turn a light on |
turn_off | Turn a light off |
set_brightness | Set brightness 1–100% |
set_color_temperature | Set white color temperature (2000K warm → 6500K cool) |
set_color | Set RGB color |
get_light_state | Read current power, brightness, and color mode |
set_scene | Apply a preset: relax, energize, concentrate, reading, nightlight, bright |
pip install hue-ble-mcp
Then add to your ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"hue-ble": {
"command": "hue-ble-mcp",
"env": {
"HUE_LIGHT_ADDRESS": ""
}
}
}
}
git clone https://github.com/jonnyblankinship/hue-ble-mcp.git
cd hue-ble-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
Then add to your claude_desktop_config.json:
{
"mcpServers": {
"hue-ble": {
"command": "/absolute/path/to/hue-ble-mcp/venv/bin/python",
"args": ["/absolute/path/to/hue-ble-mcp/server.py"],
"env": {
"HUE_LIGHT_ADDRESS": ""
}
}
}
}
Hue BLE lights need to be in pairing mode the first time you connect. The easiest way is to reset the light via the Hue app (Settings → Light setup → select light → Delete), which puts it back into factory pairing mode.
After the first successful connection, macOS remembers the bond and you won't need to do this again.
Restart Claude Desktop, then ask:
"Scan for my Hue lights"
Claude will return something like:
[
{
"name": "Signe gradient floor",
"address": "77577FFA-2F08-CAFD-5F3C-5C1824D8C362"
}
]
On macOS, addresses are UUIDs (not MAC addresses). This is normal — CoreBluetooth assigns its own identifiers.
Paste the address into HUE_LIGHT_ADDRESS in your config and restart Claude Desktop. From then on, you don't need to specify the address in every command.
"env": {
"HUE_LIGHT_ADDRESS": "77577FFA-2F08-CAFD-5F3C-5C1824D8C362"
}
Philips Hue lights broadcast over Bluetooth LE using a proprietary but well-documented GATT profile. This server writes directly to those GATT characteristics using bleak, bypassing the need for a Hue Bridge or the Hue cloud entirely.
Key characteristics used:
| UUID | Function |
|---|---|
932c32bd-0002-... | Power (on/off) |
932c32bd-0003-... | Brightness |
932c32bd-0004-... | Color temperature (mireds) |
932c32bd-0005-... | XY color (CIE 1931) |
RGB colors are converted to CIE 1931 XY space using the wide RGB D65 gamut matrix before being sent to the light.