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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
| completions | {} |
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_interfacesB | 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 (runtime state), MASTER (config), or a link paramset — for the latter pass the LINK PARTNER's channel address as paramsetKey (find partners with list_links). 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. On a protected target, EVERY call needs confirm:true — the session unlock from other write tools does not apply. |
| 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. Reports the active login user and inferred role (ADMIN/USER) — note that version/serial/address are ADMIN-only on the CCU, so they show "N/A" for a non-admin (USER) login. Also reports the running server's build identification (git branch/commit/tag and build time) under |
| 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. On a protected target, EVERY call needs confirm:true — the session unlock from other write tools does not apply. |
| list_ccu_targetsA | List all configured CCU targets (profiles) you can switch between with use_ccu — name, host, user, whether protected/read-only, which is active, and login state. Never exposes passwords. |
| get_connection_infoA | Report which CCU target is currently active — host, user, https, protected/read-only flags, and login state. Use this to confirm WHERE a command will run (especially before a write). No password. |
| use_ccuA | Switch the active CCU target. All subsequent tool calls go to this target until switched again (use the per-call |
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 (not change-notified) |
| system | CCU system info (not change-notified) |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ccu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server