configure_deconzLABSCO SUMMARY
The automation layer on the gateway, not just the light switch.
Most home bridges stop at turning things on and off. This one reads and edits the rules and schedules stored on the gateway itself, so an agent can explain why a lamp came on at seven and change it — and a rule can be disabled rather than destroyed.
What it is
A Python server over the deCONZ REST API — the software behind the ConBee and RaspBee Zigbee adapters. It reaches lights, groups, scenes, sensors, automation rules, schedules and Touchlink pairing on a gateway you already run, and ships seven read-only resources and seven ready-made prompts alongside the tools.
What you get
- Lights listed with on/off, brightness and reachability, then driven on power, brightness, hue, saturation, colour temperature, xy, effect and alert (
list_lights,get_light,set_light_state,rename_light,delete_light) - Groups created, re-populated and driven all at once, so one call moves every light in a room (
list_groups,get_group,create_group,set_group_action,modify_group,delete_group) - Scenes captured from a group's current state, then recalled, overwritten, renamed or deleted (
list_scenes,create_scene,recall_scene,store_scene,rename_scene,delete_scene) - Sensors with their latest readings and battery levels, and their config — enabled, battery, sensitivity — changed (
list_sensors,get_sensor,set_sensor_config,rename_sensor,delete_sensor) - Automation rules read back with their conditions and actions, created fresh, or switched off without being deleted; timed schedules get the same treatment (
list_rules,get_rule,create_rule,set_rule_status,list_schedules,create_schedule,set_schedule_status) - Touchlink for the devices that will not pair normally: scan nearby, blink one to identify it, or factory-reset it (
touchlink_scan,get_touchlink_results,touchlink_identify,touchlink_reset) - Gateway configuration read, the network opened for pairing for a set number of seconds, and the gateway pointed at a different host at runtime (
get_gateway_config,set_permit_join,configure_deconz) - Read-only snapshots a client can pull without a tool call —
deconz://lights,deconz://sensors,deconz://rules,deconz://stateand three more — plus prompts for a home overview, an evening routine and diagnosing a device
Requirements
Python 3.10 or newer with uv or pip, and a running deCONZ or Phoscon gateway with a ConBee or RaspBee adapter, reachable at DECONZ_HOST. You claim DECONZ_API_KEY from the Phoscon app: unlock the gateway under Settings, then POST to /api within the 60-second window it stays open. That gateway key stays server-side and is never handed to the connecting client; clients authenticate separately with MCP_AUTH_TOKEN, compared in constant time. It runs stdio by default, or --transport streamable-http on /mcp, or --transport server for both. A multi-platform container image and Kubernetes manifests ship with it.
Setup effort
One command plus a key — docker pull registry.mne.pl/deconz-mcp:latest, then supply credentials
USE CASES
Working out which device stopped answering
List the lights and sensors and read reachability and battery level in the same answer. A flat battery and a device off the mesh look identical from the app and different here.
Setting a room up the way you like it
Drive the group until the room looks right, then capture that state as a scene. Recall it later by name, or overwrite it when your taste changes, without touching each light again.
Adding a new Zigbee device
Open the network for pairing for a set number of seconds, pair the device, then find it in the light or sensor list and rename it to something you will recognise later.
Rescuing a device that will not pair normally
Run a Touchlink scan, blink the candidates until you know which physical device you are looking at, then factory-reset that one. This is the path for a bulb still joined to a hub you no longer have.
Changing an automation you did not write
Read the rule back with its conditions and actions in full, then disable it rather than deleting it while you work out whether it was load-bearing. Schedules work the same way.
Getting the state of the whole house in one answer
Pull the combined gateway snapshot as a resource instead of calling six list tools. It is cacheable and read-only, which is what you want for the question asked most often.
40 tools
Listed in project docs. Your client may show a different list.
get_gateway_configset_permit_joinlist_lightsget_lightset_light_staterename_lightdelete_lightlist_groupsget_groupcreate_groupset_group_actionmodify_groupdelete_grouplist_scenesget_scenecreate_scenerecall_scenestore_scenerename_scenedelete_scenelist_sensorsget_sensorrename_sensorset_sensor_configdelete_sensorlist_rulesget_rulecreate_ruleset_rule_statusdelete_rulelist_schedulesget_schedulecreate_scheduleset_schedule_statusdelete_scheduletouchlink_scanget_touchlink_resultstouchlink_identifytouchlink_resetBEFORE YOU INSTALL
What to know first
Tools you get
40 tools named in the project's documentation.
Requires
- deconz-mcp on PATH
- Python ≥ 3.10
- DECONZ_API_KEY in your environment
Where it runs
All 4 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
docker pull registry.mne.pl/deconz-mcp:latestMCP Clients
Claude Desktop
{
"mcpServers": {
"deconz": {
"command": "deconz-mcp",
"env": {
"DECONZ_HOST": "192.168.1.10",
"DECONZ_API_KEY": "<YOUR_DECONZ_API_KEY>"
}
}
}
}Claude Desktop — Docker Compose
{
"mcpServers": {
"deconz": {
"command": "docker",
"args": [
"compose",
"-f",
"<YOUR_PATH_TO_DOCS>/docker-compose.yml",
"--profile",
"stdio",
"run",
"--rm",
"deconz-mcp-stdio"
],
"env": {
"DECONZ_HOST": "192.168.1.10",
"DECONZ_API_KEY": "<YOUR_DECONZ_API_KEY>"
}
}
}
}Any MCP client — HTTP
{
"mcpServers": {
"deconz": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer <YOUR_MCP_SECRET>"
}
}
}
}Any MCP client — SSE
{
"mcpServers": {
"deconz": {
"url": "http://localhost:8080/sse",
"headers": {
"Authorization": "Bearer <YOUR_MCP_SECRET>"
}
}
}
}