debmatic-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CCU_HOST | Yes | Hostname or IP of your CCU | |
| CCU_PORT | No | API port (443 when using HTTPS) | 80 |
| CCU_USER | No | CCU username | Admin |
| MCP_PORT | No | HTTP server port (HTTP mode only) | 3000 |
| CACHE_DIR | No | Where to store device type cache and session | /data |
| CACHE_TTL | No | Cache lifetime in seconds (24h) | 86400 |
| CCU_HTTPS | No | Connect via HTTPS (self-signed certs supported) | false |
| LOG_LEVEL | No | error, warn, info, or debug | info |
| CCU_TIMEOUT | No | CCU request timeout in milliseconds | 10000 |
| CCU_PASSWORD | Yes | CCU admin password | |
| MCP_TRANSPORT | No | http or stdio (the --stdio CLI flag overrides this) | http |
| CCU_TLS_VERIFY | No | Verify the CCU's TLS certificate (enable if you have a proper cert) | false |
| MCP_AUTH_TOKEN | No | Bearer token for HTTP mode; generated and saved to $CACHE_DIR/.env on first start (optional, auto-generated if not set) | |
| CCU_SCRIPT_TIMEOUT | No | HM Script execution timeout in milliseconds | 30000 |
| CCU_RATE_LIMIT_RATE | No | Sustained CCU requests per second | 10 |
| CCU_RATE_LIMIT_BURST | No | Max burst of requests sent to the CCU | 20 |
| RESOURCE_POLL_INTERVAL | No | Seconds between polls for MCP resource change notifications | 60 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List all devices with their channels, types, and addresses. Optional filters: room, function, type, name. Use this first to discover device addresses for get_value/set_value. |
| list_interfacesA | List available communication interfaces (BidCos-RF, HmIP-RF, VirtualDevices, etc.). |
| list_roomsA | List all rooms with their assigned channel IDs. Use with list_devices to find devices by room. |
| list_functionsA | List all function groups (Heating, Lighting, etc.) with their assigned channel IDs. |
| list_programsA | List all automation programs. Use execute_program to trigger them. |
| list_system_variablesA | List all system variables with current values and metadata. Use set_system_variable to modify them. |
| describe_device_typeA | Get the full channel/datapoint schema for a device type (e.g. 'HmIP-eTRV-2'). Shows all channels, paramsets, datapoint names, types, ranges, and operations. Served from cache (instant). Use list_devices first to find device types. |
| list_linksA | List direct device links (Direktverknüpfungen) — sender→receiver channel pairings that operate independently of the CCU (e.g. a wall switch directly driving a lamp, or thermostats linked to a FALMOT). Read-only. Optionally filter to links involving a specific device or channel address. |
| get_valueA | Read a single datapoint value from a device channel. Only address and valueKey are required — interface is auto-resolved. Use list_devices to find addresses, describe_device_type to find valid valueKeys. |
| get_valuesA | Read datapoint values for multiple channels at once via HM Script. Provide either a list of channel addresses, or filter by room or function name. |
| get_paramsetA | Read all parameters for a channel (VALUES, MASTER, or LINK). Interface is auto-resolved from the address. |
| set_valueA | Set a single datapoint value on a device channel. Only address, valueKey, and value are required — interface and type are auto-resolved. Returns the previous value for undo. Use describe_device_type to find valid valueKeys and ranges. |
| put_paramsetA | Write multiple parameters at once (e.g. thermostat weekly profile). Interface is auto-resolved from address. |
| set_system_variableA | Set a system variable value. Type is auto-detected — use list_system_variables to see available variables. |
| create_system_variableA | Create a new system variable. Types: 'bool', 'float' (optional min/max/unit), 'enum' (requires values list), 'string'. Use set_system_variable to write it afterwards, list_system_variables to see existing ones. |
| delete_system_variableA | Delete a system variable by name. Use list_system_variables to see existing names. |
| execute_programA | Trigger an automation program on the CCU. NOT idempotent — will not be auto-retried. Use list_programs to find program IDs. |
| assign_channelA | Assign a channel to a room and/or a function group. Identify the channel by address and the room/function by name (use list_rooms / list_functions to see names). At least one of room or function is required. |
| unassign_channelA | Remove a channel from a room and/or a function group. Identify the channel by address and the room/function by name (use list_rooms / list_functions to see names). At least one of room or function is required. |
| get_service_messagesA | Get all active service messages (low battery, unreachable, etc.) with device details and timestamps. |
| acknowledge_service_messagesA | Confirm/dismiss active service messages (e.g. clear a low-battery or unreachable warning). Provide an alarm id (from get_service_messages) to confirm one message, or a channel address to confirm all active messages on that channel. A warning reappears if its condition persists. |
| get_system_infoA | Get CCU system information: firmware version, serial number, addresses. |
| get_rssiA | Report radio link quality (RSSI, in dBm) for every device, resolved to device names, plus BidCos interface health (duty cycle, connected state). Covers both transports: BidCos-RF via Interface.rssiInfo, and HmIP-RF via each device's RSSI_DEVICE/RSSI_PEER maintenance datapoints. Use to answer 'why is this sensor flaky?'. Higher (closer to 0) dBm is better; null = no measurement. |
| helpA | Context-aware help. No args: conceptual guide. Tool name (e.g. 'set_value'): tool usage. Device type (e.g. 'HmIP-eTRV-2'): capabilities from cache. |
| run_scriptA | Execute arbitrary HomeMatic Script on the CCU. NOT idempotent — will not be auto-retried. Use for anything the other tools don't cover. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| check-windows | Check all window/door sensors and report which are open |
| room-status | Show current status of all devices in a room |
| set-heating | Set heating temperature in a room |
| good-night | Prepare the house for night |
| diagnostics | Check for device issues |
| device-info | Show detailed info about a device |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| devices | All devices with channels |
| rooms | All rooms with channel assignments |
| functions | All function groups |
| programs | All automation programs |
| sysvars | All system variables with values |
| interfaces | Available communication interfaces |
| device-types | Cached device type schemas |
| system | CCU system info |
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/claymore666/debmatic-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server