An MCP server for controlling smart home devices with support for Home Assistant integration and automation scenarios
The server provides 5 tools with basic definitions and schemas, but falls short of production quality. Tool names follow verb_noun patterns (list_devices, get_device_state, set_device_state), which is correct. However, descriptions are minimal and lack context about when to use each tool or what it returns. Schemas are present for all tools but lack required field documentation, input parameters have no descriptions, violating the 100% baseline for A+ tools. Error handling is present in the code but does not guide recovery. The set_device_state tool has an enum constraint (on/off) which is good, but lacks required/optional parameter guidance. Protocol version in code is '2025-11-25' which does not match current spec (2026-07-28), indicating dated implementation. Overall, this is a fair but incomplete implementation typical of community tools.
List all available automation scenarios
Run an automation scenario. Available scenarios: (dynamically populated based on registered scenarios)
Get the current state of a specific smart home device
List all available smart home devices
Set the state of a specific smart home device (e.g., turn on/off, set brightness)
Parameters lack descriptions, 100% baseline for A+ tools requires all parameters documented, but input parameters have no descriptions in any tool.
Output schemas not documented, LLMs cannot infer what fields are returned, preventing proper response parsing and downstream tool chaining.
Tool descriptions under 20 - 100 character range, too short to guide LLM selection. E.g., 'List all available smart home devices' (41 chars) does not explain discovery vs refresh semantics or output structure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 46 | 2025-11-25+ | v1 |
Non-standard tool naming: automation.runScenario and automation.listScenarios use dot notation. MCP convention is snake_case (e.g., run_automation_scenario, list_automation_scenarios).
Undocumented parameter dependencies, set_device_state has brightness and attributes parameters but does not explain which devices support which attributes or how they interact.
No error guidance, error handling in code returns generic error messages (e.g., 'tool not found', 'Error: <err>') without suggesting recovery steps or listing valid alternatives.
No idempotency or confirmation pattern for destructive operations, set_device_state modifies device state but has no dry-run, confirmation, or rollback mechanism.
automation.runScenario description claims scenarios are 'dynamically populated' but does not explain how to discover them, LLM must infer dependency on automation.listScenarios.