MCP server for controlling HomeMatic smart home devices via the CCU JSON-RPC API
Connect Runs on your machine
claude mcp add ccu-mcp -e CCU_HOST=<CCU_HOST> -e CCU_PASSWORD=<CCU_PASSWORD> -e CCU_USER=<CCU_USER> -e CCU_HTTPS=<CCU_HTTPS> -e CCU_PORT=<CCU_PORT> -e CACHE_DIR=<CACHE_DIR> -e MCP_ALLOWED_ORIGINS=<MCP_ALLOWED_ORIGINS> -e MCP_ALLOWED_HOSTS=<MCP_ALLOWED_HOSTS> -e CCU_PROFILES=<CCU_PROFILES> -e CCU_DEFAULT_PROFILE=<CCU_DEFAULT_PROFILE> -e CCU_TLS_VERIFY=<CCU_TLS_VERIFY> -e CCU_TLS_FINGERPRINT=<CCU_TLS_FINGERPRINT> -e CCU_CA_CERT=<CCU_CA_CERT> -e CCU_TIMEOUT=<CCU_TIMEOUT> -e CCU_SCRIPT_TIMEOUT=<CCU_SCRIPT_TIMEOUT> -e CACHE_TTL=<CACHE_TTL> -e CCU_RATE_LIMIT_BURST=<CCU_RATE_LIMIT_BURST> -e CCU_RATE_LIMIT_RATE=<CCU_RATE_LIMIT_RATE> -e RESOURCE_POLL_INTERVAL=<RESOURCE_POLL_INTERVAL> -e LOG_LEVEL=<LOG_LEVEL> -- npx -y [email protected]
{
"mcpServers": {
"ccu-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"CCU_HOST": "<CCU_HOST>",
"CCU_PASSWORD": "<CCU_PASSWORD>",
"CCU_USER": "<CCU_USER>",
"CCU_HTTPS": "<CCU_HTTPS>",
"CCU_PORT": "<CCU_PORT>",
"CACHE_DIR": "<CACHE_DIR>",
"MCP_ALLOWED_ORIGINS": "<MCP_ALLOWED_ORIGINS>",
"MCP_ALLOWED_HOSTS": "<MCP_ALLOWED_HOSTS>",
"CCU_PROFILES": "<CCU_PROFILES>",
"CCU_DEFAULT_PROFILE": "<CCU_DEFAULT_PROFILE>",
"CCU_TLS_VERIFY": "<CCU_TLS_VERIFY>",
"CCU_TLS_FINGERPRINT": "<CCU_TLS_FINGERPRINT>",
"CCU_CA_CERT": "<CCU_CA_CERT>",
"CCU_TIMEOUT": "<CCU_TIMEOUT>",
"CCU_SCRIPT_TIMEOUT": "<CCU_SCRIPT_TIMEOUT>",
"CACHE_TTL": "<CACHE_TTL>",
"CCU_RATE_LIMIT_BURST": "<CCU_RATE_LIMIT_BURST>",
"CCU_RATE_LIMIT_RATE": "<CCU_RATE_LIMIT_RATE>",
"RESOURCE_POLL_INTERVAL": "<RESOURCE_POLL_INTERVAL>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
{
"mcpServers": {
"ccu-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"CCU_HOST": "<CCU_HOST>",
"CCU_PASSWORD": "<CCU_PASSWORD>",
"CCU_USER": "<CCU_USER>",
"CCU_HTTPS": "<CCU_HTTPS>",
"CCU_PORT": "<CCU_PORT>",
"CACHE_DIR": "<CACHE_DIR>",
"MCP_ALLOWED_ORIGINS": "<MCP_ALLOWED_ORIGINS>",
"MCP_ALLOWED_HOSTS": "<MCP_ALLOWED_HOSTS>",
"CCU_PROFILES": "<CCU_PROFILES>",
"CCU_DEFAULT_PROFILE": "<CCU_DEFAULT_PROFILE>",
"CCU_TLS_VERIFY": "<CCU_TLS_VERIFY>",
"CCU_TLS_FINGERPRINT": "<CCU_TLS_FINGERPRINT>",
"CCU_CA_CERT": "<CCU_CA_CERT>",
"CCU_TIMEOUT": "<CCU_TIMEOUT>",
"CCU_SCRIPT_TIMEOUT": "<CCU_SCRIPT_TIMEOUT>",
"CACHE_TTL": "<CACHE_TTL>",
"CCU_RATE_LIMIT_BURST": "<CCU_RATE_LIMIT_BURST>",
"CCU_RATE_LIMIT_RATE": "<CCU_RATE_LIMIT_RATE>",
"RESOURCE_POLL_INTERVAL": "<RESOURCE_POLL_INTERVAL>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
{
"servers": {
"ccu-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"CCU_HOST": "<CCU_HOST>",
"CCU_PASSWORD": "<CCU_PASSWORD>",
"CCU_USER": "<CCU_USER>",
"CCU_HTTPS": "<CCU_HTTPS>",
"CCU_PORT": "<CCU_PORT>",
"CACHE_DIR": "<CACHE_DIR>",
"MCP_ALLOWED_ORIGINS": "<MCP_ALLOWED_ORIGINS>",
"MCP_ALLOWED_HOSTS": "<MCP_ALLOWED_HOSTS>",
"CCU_PROFILES": "<CCU_PROFILES>",
"CCU_DEFAULT_PROFILE": "<CCU_DEFAULT_PROFILE>",
"CCU_TLS_VERIFY": "<CCU_TLS_VERIFY>",
"CCU_TLS_FINGERPRINT": "<CCU_TLS_FINGERPRINT>",
"CCU_CA_CERT": "<CCU_CA_CERT>",
"CCU_TIMEOUT": "<CCU_TIMEOUT>",
"CCU_SCRIPT_TIMEOUT": "<CCU_SCRIPT_TIMEOUT>",
"CACHE_TTL": "<CACHE_TTL>",
"CCU_RATE_LIMIT_BURST": "<CCU_RATE_LIMIT_BURST>",
"CCU_RATE_LIMIT_RATE": "<CCU_RATE_LIMIT_RATE>",
"RESOURCE_POLL_INTERVAL": "<RESOURCE_POLL_INTERVAL>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
CCU_HOSTRequired | Hostname or IP of your HomeMatic CCU (debmatic, CCU3, or OpenCCU/RaspberryMatic) |
CCU_PASSWORDRequired, secret | CCU admin password (same as the WebUI login). Must be set; the value may be empty for a CCU with no password |
CCU_USEROptional | CCU username |
CCU_HTTPSOptional | Connect to the CCU via HTTPS (self-signed certificates supported) |
CCU_PORTOptional | CCU API port (80 for HTTP, 443 for HTTPS) |
CACHE_DIROptional | Directory for the device type cache and session persistence |
MCP_ALLOWED_ORIGINSOptional | Comma-separated allowlist of browser origins. Unset = no cross-origin browser access (default-deny). An allowlisted origin is reflected exactly in Access-Control-Allow-Origin (never '*'); the list also drives DNS-rebinding origin checks |
MCP_ALLOWED_HOSTSOptional | Extra Host header values accepted by DNS-rebinding protection (comma-separated host:port); add your hostname when behind a proxy or container DNS name |
CCU_PROFILESOptional | Comma-separated names of multiple CCU targets (e.g. 'prod,dev'). Each profile takes the flat CCU_* settings prefixed CCU_<NAME>_ (CCU_PROD_HOST, ...), plus policy flags CCU_<NAME>_PROTECTED (writes need confirm:true) and CCU_<NAME>_READONLY. Unset = single default profile from the flat CCU_* vars |
CCU_DEFAULT_PROFILEOptional | Which profile from CCU_PROFILES is active at startup (default: the first listed) |
CCU_TLS_VERIFYOptional | Verify the CCU's TLS certificate against the system trust store. Only meaningful with CCU_HTTPS=true. Default false, because a CCU ships a self-signed certificate — prefer CCU_TLS_FINGERPRINT or CCU_CA_CERT to verify one of those |
CCU_TLS_FINGERPRINTOptional | Pin the CCU's self-signed leaf certificate by its SHA-256 fingerprint (hex, colons optional). The strongest option for an appliance: the connection is rejected unless the presented certificate matches. Takes precedence over CCU_CA_CERT |
CCU_CA_CERTOptional | Path to a PEM file holding the CCU's CA or self-signed certificate. The connection is then validated against it with standard chain verification |
CCU_TIMEOUTOptional | Timeout for a CCU JSON-RPC call, in MILLISECONDS |
CCU_SCRIPT_TIMEOUTOptional | Timeout for HomeMatic Script execution (ReGa), in MILLISECONDS — scripts are slower than plain API calls |
CACHE_TTLOptional | Lifetime of the on-disk device-type schema cache, in SECONDS |
CCU_RATE_LIMIT_BURSTOptional | Token-bucket burst size for CCU requests — how many may be issued back to back |
CCU_RATE_LIMIT_RATEOptional | Sustained CCU request rate, in requests per second |
RESOURCE_POLL_INTERVALOptional | How often MCP resources are polled for change notifications, in SECONDS |
LOG_LEVELOptional | error | warn | info | debug. Logs are structured JSON on stderr |
Details
| Package | [email protected] (NPM, stdio) |
| First published | 10 Nov 2026 |
| Last updated | 10 Nov 2026 |
| Registry name | io.github.claymore666/ccu-mcp |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
