Model Context Protocol server for Fibaro Home Center 3 smart home system integration with AI assistants
HC3 MCP Server has 18 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with type definitions. However, output schemas are completely undocumented, LLMs cannot predict response structure for chaining. Parameter descriptions are minimal (5-30 chars) and lack actionable constraints. No enum constraints despite many parameters accepting fixed sets (e.g., 'interval' in get_energy_data). Error handling is absent, no recovery guidance, no categorization. Security concerns: credentials passed via environment variables (good), but no audit logging or permission gates visible. Tool composition is reasonable (single responsibility), but missing pagination for list tools (get_devices, get_scenes, get_users could return hundreds of items). No tool annotations (readOnlyHint, destructiveHint) despite clear read/write distinction. Average tool score: 52/100.
Control a device by calling an action (e.g., turnOn, turnOff, setValue, setColor)
Get detailed information about a specific device including properties, capabilities, and current state
Get all devices from Fibaro HC3, with optional filtering by room or device type
Get system diagnostic information
Get energy consumption data for devices or the entire system
Get all global variables from the HC3 system
No output schemas documented. LLMs cannot predict response structure, breaking tool chaining and forcing discovery calls. Every tool must document what fields it returns.
Parameter descriptions are too brief (5-30 chars) and lack actionable constraints. E.g., 'interval' in get_energy_data should state 'One of: hour, day, week, month, year' in description, not just enum. 'action' in control_device lacks examples of valid actions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Get current home/away status and location information
Get network configuration and status information
Get all rooms in the Fibaro HC3 system
Get all scenes from Fibaro HC3, with optional filtering by room
Get Fibaro HC3 system information including version, serial number, and status
Get all users configured in the HC3 system
Get current weather information and forecast
Modify device properties like name, room assignment, or configuration parameters
Execute a scene by ID
Set the value of a global variable
Set home/away status
Stop a running scene by ID
No pagination support for list tools. get_devices, get_scenes, get_users, get_global_variables could return hundreds of items, blowing context window. Add limit/offset and total_count to all list tools.
No error handling guidance. Tools return raw API errors with no recovery hints. E.g., if control_device fails, LLM has no guidance on whether to retry, check device state, or ask user. Add error categorization (retryable, user-fixable, fatal) and actionable messages.
No tool annotations. Destructive tools (control_device, modify_device, run_scene, set_global_variable, set_home_status) lack destructiveHint=true. Read-only tools lack readOnlyHint=true. Annotations help LLMs reason about safety and retry logic.