Domoticz MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DOMOTICZ_URL | Yes | Base URL of your Domoticz instance | |
| DOMOTICZ_MCP_HOST | No | Host to bind to for SSE/HTTP | 127.0.0.1 |
| DOMOTICZ_MCP_PORT | No | Port to bind to for SSE/HTTP | 8000 |
| DOMOTICZ_PASSWORD | No | Your Domoticz password for Basic Auth | |
| DOMOTICZ_USERNAME | No | Your Domoticz username for Basic Auth | |
| DOMOTICZ_CLIENT_ID | No | Your Application's Client ID for OAuth | |
| DOMOTICZ_OAUTH_TOKEN | No | Direct OAuth2 access token (skips flow) | |
| DOMOTICZ_CLIENT_SECRET | No | Your Application's Client Secret for OAuth | |
| DOMOTICZ_MCP_TRANSPORT | No | Transport to use: stdio, sse, or streamable-http | stdio |
| DOMOTICZ_MCP_TOKEN_FILE | No | Path to OAuth token storage file | ~/.config/domoticz-mcp/token.json |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_overviewA | Get a high-level overview of the Domoticz system. Args: detail_level: 'minimal' (default) for counts and summary, 'standard' for including a sample of devices. |
| get_system_healthC | Check the health of the Domoticz system and hardware gateways. |
| search_scriptsB | Search for a specific string inside event scripts (Lua, dzVents, Python, etc.). |
| get_all_devicesA | Get all devices and their current states from Domoticz. |
| search_devicesB | Search for devices by name or data (status). Returns a list of matching devices. |
| get_deviceB | Get a specific device state by IDX or Name from Domoticz. |
| toggle_switchA | Toggle a switch or light by IDX or Name. Prefer using IDX for precision. |
| set_switch_stateA | Set a switch or light to On or Off. Args: state: Must be 'On' or 'Off'. idx: Device index. name: Device name (case-insensitive). |
| set_dimmer_levelA | Set the brightness level of a dimmer switch. Args: level: Integer from 0 to 100. Note: 0 is Off, 100 is Full Brightness. idx: Device index. name: Device name. |
| set_temperature_setpointB | Set the temperature setpoint for a thermostat. Args: setpoint: Target temperature in Celsius (e.g., 21.5). idx: Device index. name: Device name. |
| control_blindsB | Control blinds or covers. Args: command: Must be 'Open', 'Close', or 'Stop'. idx: Device index. name: Device name. |
| get_scenesA | Get all scenes and groups from Domoticz. |
| switch_sceneA | Turn a scene or group On or Off by IDX or Name in Domoticz. command must be 'On', 'Off', or 'Toggle'. Scenes can only be turned 'On'. |
| get_roomsA | Get all rooms (Room Plans) from Domoticz. |
| get_room_devicesA | Get all devices and their current states in a specific room. Provide either idx or room_name. |
| get_user_variablesA | Get all user variables. |
| add_user_variableB | Add a new user variable. vtype (Variable Type): 0: Integer 1: Float 2: String 3: Date (DD/MM/YYYY) 4: Time (HH:MM) |
| update_user_variableB | Update an existing user variable. vtype (Variable Type): 0: Integer 1: Float 2: String 3: Date (DD/MM/YYYY) 4: Time (HH:MM) |
| delete_user_variableB | Delete a user variable by IDX or Name. |
| get_battery_levelsA | Get a list of devices with battery levels at or below the specified threshold. Args: threshold: Battery percentage threshold (default: 20). |
| get_device_historyC | Get history log or graph for a device. sensor_type: 'light', 'text', 'temp', 'percentage', 'counter'. time_range (for graphs): 'day', 'month', 'year'. |
| get_system_statusA | Get the status of the Domoticz instance (version, build time, etc). |
| get_eventsB | Get overview of the internal event system scripts and rules. |
| get_eventB | Get the source code and details of a specific event script by ID. |
| create_eventA | Create a new event script in Domoticz. Args: name: Name of the event script. interpreter: The language (e.g., 'Lua', 'Blockly', 'dzVents', 'Python'). event_type: Trigger type (e.g., 'All', 'Device', 'Security', 'Time', 'UserVariable'). xmlstatement: The source code (or XML for Blockly) of the script. eventstatus: '1' for enabled, '0' for disabled. |
| update_eventA | Update an existing event script in Domoticz. Args: event_id: The ID of the event to update. name: Name of the event script. interpreter: The language (e.g., 'Lua', 'Blockly', 'dzVents', 'Python'). event_type: Trigger type (e.g., 'All', 'Device', 'Security', 'Time', 'UserVariable'). xmlstatement: The source code (or XML for Blockly) of the script. eventstatus: '1' for enabled, '0' for disabled. |
| get_hardwareA | Get all hardware/gateways configured in Domoticz. |
| get_settingsA | Get global Domoticz settings and configuration. |
| get_sun_timesB | Get sun times (sunrise, sunset, twilight) based on home coordinates. |
| get_camerasA | Get all configured cameras in Domoticz. |
| get_floorplansA | Get all configured floorplans in Domoticz. |
| get_usersB | Get all Domoticz user accounts. |
| set_color_brightnessA | Set color and brightness for an RGB light. Args: hue: Color hue (0-360). brightness: Brightness level (0-100). idx: Device index. name: Device name. iswhite: Set to True for white mode (on supported hardware). |
| set_color_temperatureB | Set color temperature for a light. Args: kelvin: Color temperature level (0-100). Note: 0 is warmest, 100 is coldest (standard Domoticz range). idx: Device index. name: Device name. |
| rename_deviceB | Rename a device by IDX or its old Name. |
| delete_deviceC | Delete (or hide) a device by IDX or Name. |
| create_virtual_sensorC | Create a virtual sensor. hw_idx: IDX of the dummy hardware. sensortype (Sensor Type): 1: Temperature 2: Humidity 3: Temp + Humidity 4: Barometer 5: Temp + Hum + Baro 6: Rain 7: UV 8: Wind 10: Lux 11: Voltage 12: Current 13: Distance 14: Text 15: Alert 17: Percentage 19: Counter 113: kWh (Energy) |
| update_device_valueC | Update a sensor/device value manually. nvalue is integer value, svalue is string value. Provide IDX or Name. |
| get_logA | Retrieve the main system log. lastlogtime is seconds since epoch, loglevel is bitmask. |
| add_log_messageA | Add a custom message to the Domoticz system log. level: 1=normal, 2=status, 4=error. |
| send_notificationC | Send a notification through Domoticz notification subsystems. |
| get_security_statusA | Get the current status of the security panel. |
| set_security_statusA | Set the security panel status. secstatus: 0=Disarm, 1=Arm Home, 2=Arm Away. |
| get_scene_devicesB | List all devices belonging to a specific scene/group by IDX or Name. |
| get_connectivity_reportB | Get a list of devices that haven't checked in/updated within the specified timeframe. Args: hours: Number of hours threshold for considering a device 'unresponsive' (default: 24). |
| analyze_energy_usageA | Analyze all energy-reporting devices and summarize their 'Today' usage. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| agent_guidance | Provides the AI agent with critical knowledge about Domoticz-specific logic and best practices. |
| audit_batteries | Prompt to audit battery levels across all sensors. |
| find_devices_by_state | Prompt to find all devices currently in a specific state (e.g., 'on', 'open', 'off'). |
| maintenance_report | Prompt to provide a comprehensive maintenance and health report for the home. |
| troubleshoot_device | Prompt to help troubleshoot a specific Domoticz device by IDX or Name. |
| energy_audit | Prompt to analyze energy usage across the home. |
| summarize_home | Prompt to summarize the current state of the smart home. |
| analyze_automations | Prompt to analyze Domoticz event scripts for logic flaws. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_error_logs_resource | Read only the 'Error' level entries from the Domoticz system log. |
| get_dashboard_resource | Read a curated view of favorite and currently active devices. |
| get_log_resource | Read the current Domoticz system log. |
| get_security_resource | Read the current status of the security panel. |
| get_all_devices_resource | Read the current state of all Domoticz devices. |
| get_rooms_resource | Read the list of all Domoticz rooms (Room Plans). |
| get_user_variables_resource | Read the list of all Domoticz user variables. |
| get_scenes_resource | Read the list of all Domoticz scenes and groups. |
| get_settings_resource | Read global Domoticz settings and configuration. |
| get_events_resource | Read the overview of the internal event system scripts and rules. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adrighem/domoticz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server