{"name":"io.github.claymore666/ccu-mcp","slug":"claymore666-ccu-mcp","title":null,"description":"MCP server for controlling HomeMatic smart home devices via the CCU JSON-RPC API","url":"https://mcp.market/server/claymore666-ccu-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":34,"stars":9,"forks":2,"downloads_week":62,"last_push_at":"2026-09-16T14:36:45.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/claymore666/ccu-mcp","website":null,"version":"1.11.1","remotes":[],"packages":[{"registryType":"npm","identifier":"ccu-mcp","version":"1.11.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). Must be set; the value may be empty for a CCU with no password","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"}]}],"tools":[{"name":"acknowledge_service_messages","description":"Confirm/dismiss active service messages (e.g. clear a low-battery or unreachable warning).","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_system_variable","description":"Create a new system variable. Types: 'bool', 'float' (optional min/max/unit),","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_system_variable","description":"Delete a system variable by name. Use list_system_variables to see existing names.","write_action":true,"price_micros":0,"input_schema":null},{"name":"describe_device_type","description":"Get the full channel/datapoint schema for a device type (e.g. 'HmIP-eTRV-2').","write_action":false,"price_micros":0,"input_schema":null},{"name":"execute_program","description":"Trigger an automation program on the CCU. NOT idempotent — will not be auto-retried.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_connection_info","description":"Report which CCU target is currently active — host, user, https, protected/read-only flags, and","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_paramset","description":"Read all parameters for a channel: VALUES (runtime state), MASTER (config), or a link","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_rssi","description":"Report radio link quality (RSSI, in dBm) for every device, resolved to device names, plus","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_service_messages","description":"Get all active service messages (low battery, unreachable, etc.) with device details and timestamps.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_system_info","description":"Get CCU system information: firmware version, serial number, addresses. Reports the active","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_value","description":"Read a single datapoint value from a device channel.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_values","description":"Read datapoint values for multiple channels at once via HM Script.","write_action":false,"price_micros":0,"input_schema":null},{"name":"help","description":"Context-aware help. No args: conceptual guide.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_ccu_targets","description":"List all configured CCU targets (profiles) you can switch between with use_ccu — name, host,","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_devices","description":"List all devices with their channels, types, and addresses.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_functions","description":"List all function groups (Heating, Lighting, etc.) with their assigned channel IDs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_interfaces","description":"List available communication interfaces (BidCos-RF, HmIP-RF, VirtualDevices, etc.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_links","description":"List direct device links (Direktverknüpfungen) — sender→receiver channel pairings that operate","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_programs","description":"List all automation programs. Use execute_program to trigger them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_rooms","description":"List all rooms with their assigned channel IDs. Use with list_devices to find devices by room.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_system_variables","description":"List all system variables with current values and metadata. Use set_system_variable to modify them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"put_paramset","description":"Write multiple parameters at once (e.g. thermostat weekly profile).","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_script","description":"Execute arbitrary HomeMatic Script on the CCU.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_system_variable","description":"Set a system variable value. Type is auto-detected — use list_system_variables to see available variables.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_value","description":"Set a single datapoint value on a device channel.","write_action":false,"price_micros":0,"input_schema":null},{"name":"setup_probe","description":"Check whether a CCU JSON-RPC API answers at a host. Without port/https the two stock","write_action":false,"price_micros":0,"input_schema":null},{"name":"setup_status","description":"Report why the server is in setup mode, which env file it will write, and what that","write_action":false,"price_micros":0,"input_schema":null},{"name":"setup_test","description":"Validate the env file end-to-end, like `ccu-mcp doctor`: configuration loads, each","write_action":false,"price_micros":0,"input_schema":null},{"name":"setup_write_profile","description":"Add or update one CCU target in the env file (connection settings only). There is","write_action":true,"price_micros":0,"input_schema":null},{"name":"use_ccu","description":"Switch the active CCU target. All subsequent tool calls go to this target until switched again","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-20T00:24:39.390Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:24:39.378Z","components":{"code":{"score":25,"max":25,"notes":["80 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"ccu-mcp","version":"1.11.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-09-08T08:58:34.877Z","repositoryUrl":"git+https://github.com/claymore666/ccu-mcp.git","weeklyDownloads":62}],"repo":{"found":true,"owner":"claymore666","repo":"ccu-mcp","archived":false,"pushedAt":"2026-09-16T14:36:45Z","stars":9,"forks":2,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/11246284?v=4","ownerCreatedAt":"2015-02-28T15:32:11Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/11246284?v=4&s=128","source":"github"},"presence":{"stars":9,"forks":2,"downloadsWeek":62,"license":"MIT","lastPushAt":"2026-09-16T14:36:45.000Z","score":34}}}},"grade_history":[],"reviews":[]}