{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.claymore666/ccu-mcp","description":"MCP server for controlling HomeMatic smart home devices via the CCU JSON-RPC API","repository":{"url":"https://github.com/claymore666/ccu-mcp","source":"github"},"version":"1.9.1","packages":[{"registryType":"npm","identifier":"ccu-mcp","version":"1.9.1","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"--stdio","type":"positional"}],"environmentVariables":[{"description":"Hostname or IP of your HomeMatic CCU (debmatic, CCU3, or OpenCCU/RaspberryMatic)","isRequired":true,"format":"string","name":"CCU_HOST"},{"description":"CCU admin password (same as the WebUI login)","isRequired":true,"format":"string","isSecret":true,"name":"CCU_PASSWORD"},{"description":"CCU username","format":"string","default":"Admin","name":"CCU_USER"},{"description":"Connect to the CCU via HTTPS (self-signed certificates supported)","format":"boolean","default":"false","name":"CCU_HTTPS"},{"description":"CCU API port (80 for HTTP, 443 for HTTPS)","format":"number","default":"80","name":"CCU_PORT"},{"description":"Directory for the device type cache and session persistence","format":"string","default":"/data","name":"CACHE_DIR"},{"description":"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","format":"string","name":"MCP_ALLOWED_ORIGINS"},{"description":"Extra Host header values accepted by DNS-rebinding protection (comma-separated host:port); add your hostname when behind a proxy or container DNS name","format":"string","name":"MCP_ALLOWED_HOSTS"},{"description":"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","format":"string","name":"CCU_PROFILES"},{"description":"Which profile from CCU_PROFILES is active at startup (default: the first listed)","format":"string","name":"CCU_DEFAULT_PROFILE"},{"description":"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","format":"boolean","default":"false","name":"CCU_TLS_VERIFY"},{"description":"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","format":"string","name":"CCU_TLS_FINGERPRINT"},{"description":"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","format":"string","name":"CCU_CA_CERT"},{"description":"Timeout for a CCU JSON-RPC call, in MILLISECONDS","format":"number","default":"10000","name":"CCU_TIMEOUT"},{"description":"Timeout for HomeMatic Script execution (ReGa), in MILLISECONDS — scripts are slower than plain API calls","format":"number","default":"30000","name":"CCU_SCRIPT_TIMEOUT"},{"description":"Lifetime of the on-disk device-type schema cache, in SECONDS","format":"number","default":"86400","name":"CACHE_TTL"},{"description":"Token-bucket burst size for CCU requests — how many may be issued back to back","format":"number","default":"20","name":"CCU_RATE_LIMIT_BURST"},{"description":"Sustained CCU request rate, in requests per second","format":"number","default":"10","name":"CCU_RATE_LIMIT_RATE"},{"description":"How often MCP resources are polled for change notifications, in SECONDS","format":"number","default":"60","name":"RESOURCE_POLL_INTERVAL"},{"description":"error | warn | info | debug. Logs are structured JSON on stderr","format":"string","default":"info","name":"LOG_LEVEL"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-01T16:00:56.295865Z","publishedAt":"2026-08-01T16:00:56.295865Z","updatedAt":"2026-08-01T16:00:56.295865Z","isLatest":true}}}
