MCP server for controlling Zigbee devices via the deCONZ REST API
deCONZ MCP provides 23 tools with consistent naming (verb_noun pattern: get_*, set_*, create_*, delete_*, rename_*) and complete input schemas. All tools have descriptions (avg ~80 chars, within baseline 34-392). However, output schemas are undocumented, responses are not formally specified, forcing LLMs to infer structure. Parameter descriptions are minimal (often 1-2 sentences) and lack actionable constraints (ranges, enums, formats). Error handling is absent from tool definitions. No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification (READ_ONLY, WRITE, DESTRUCTIVE). Missing idempotency guidance for retry-safe operations.
Point the MCP server at a deCONZ gateway.
Create a new light group.
Create a new scene in a group.
Delete a group.
Remove a light from the gateway.
Delete a scene.
Return the deCONZ gateway configuration (firmware, network, Zigbee channel, etc.).
Output schemas undocumented. Tool descriptions state what is returned (e.g. 'List all lights') but do not specify the response structure, field types, or pagination. LLMs cannot plan downstream tool calls without knowing what fields to extract.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk levels (READ_ONLY, WRITE, DESTRUCTIVE) in metadata but not exposed via MCP tool annotations. Agents cannot infer safety properties from the tool definition alone.
Parameter constraints missing. Numeric parameters (bri, hue, sat, ct, transitiontime) lack min/max bounds in descriptions. Enum parameters (effect, type) lack explicit enum lists. LLMs may pass invalid values (e.g. bri=300 when max is 254).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Get the state and properties of a single group.
List all groups (light groups, zones, rooms) on the gateway.
Get the state and properties of a single light.
List all lights connected to the gateway.
Get the properties of a single scene.
List all scenes in a group.
Get the state and properties of a single sensor.
List all sensors connected to the gateway.
Modify group properties (name, lights, etc.).
Activate a scene (recall its light states).
Rename a light.
Rename a scene.
Rename a sensor.
Set the action/state of a group (on/off, brightness, color, etc.).
Set the state of a light (on/off, brightness, color, etc.).
Store the current state of lights in a scene.
No error handling guidance. Tool definitions do not specify what errors are possible, when they are retryable, or how to recover. E.g. 'Light not found' vs 'Gateway unreachable' require different agent responses but are not distinguished.
Pagination not documented. List tools (get_lights, get_groups, get_scenes, get_sensors) do not specify limit, offset, or cursor parameters. Large result sets may exceed context windows without pagination support.