MCP server that enables AI assistants (Claude, Cursor, VS Code) to safely manage Home Assistant configuration, automations, dashboards, and themes with Git versioning and rollback capabilities
Mixed quality server with strong descriptions but significant schema and composition issues. 24 tools total; most have clear, LLM-friendly descriptions (100-400 chars), but many lack complete input schemas or have composition problems. Tool naming is generally clear (verb_noun pattern), but several tools exhibit overlapping responsibilities (e.g., rollback_to_commit_path vs rollback_to_commit_body, identical schemas, same risk level). Output schemas are largely undocumented in the provided code. Error handling guidance is minimal. Security considerations are present (REVERSIBLE/IRREVERSIBLE risk annotations) but not implemented as tool features (no confirmation gates, no dry-run modes).
Create new automation via Home Assistant API. This endpoint uses Home Assistant's API instead of writing to automations.yaml. This means automations can be created regardless of your file structure (packages, UI, etc.). After creation, the automation state is exported to Git for versioning.
Create backup (Git commit) of current state. If message is provided: commits immediately with that message. If message is None and git_versioning_auto=false: returns suggested commit message (does not commit). AI should show this to user, allow editing, then call again with message. If message is None and git_versioning_auto=true: commits with auto-generated message.
Create checkpoint with tag at the start of user request processing. This should be called at the beginning of each user request to: 1. Save current state with a commit, 2. Create a tag with timestamp and user request description, 3. Disable auto-commits during request processing.
Add an item to a todo list.
End request processing - re-enable auto-commits. This should be called at the end of user request processing.
Duplicate tools with identical schemas (rollback_to_commit_path vs rollback_to_commit_body). Both accept only commit_hash and have IRREVERSIBLE risk. LLMs will waste reasoning cycles choosing between them.
Output schemas are not documented in provided code. Tools like list_store_addons, list_automations, get_addon_info, create_automation, create_backup return complex objects but no response structure is specified in tool definitions. This prevents LLMs from planning downstream tool calls or extracting required data.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 73 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 67 | - | v1 |
Get detailed information about a specific add-on. Returns detailed information including name, description, version, installation status, configuration options, state (started/stopped), and resource usage.
Get add-on logs. Returns plain text logs for the specified add-on.
Get complete instructions for AI assistants (like Cursor AI). Instructions are loaded from markdown files in app/ai_instructions/docs/. This endpoint provides: Safety protocols, Step-by-step workflow, Best practices, Error handling guidelines, Dashboard generation guides. Returns plain text for easy consumption by AI.
Get configuration for a single automation from Home Assistant (via API). This endpoint uses Home Assistant's API, so it works for automations from any source (automations.yaml, packages/*.yaml, or UI-created).
Get events from a calendar entity.
Get diff between commits or current changes. Examples: /api/backup/diff - Current uncommitted changes, /api/backup/diff?commit1=a1b2c3d4 - Changes since commit, /api/backup/diff?commit1=a1b2c3d4&commit2=e5f6g7h8 - Between two commits.
Get backup history (Git commits). Returns list of commits with details.
Import a blueprint from a URL. Supports community forum and GitHub URLs.
Install an add-on. Installation can take several minutes depending on add-on size. The endpoint will wait for installation to complete.
List all automations from Home Assistant (via API). Returns ALL automations that HA has loaded, regardless of source: from automations.yaml, from packages/*.yaml files, or created via UI (stored in .storage). Supports search, pagination, ids_only, and summary_only modes.
List all available add-ons (installed and available to install). Returns add-ons from all repositories including official add-ons (core, community) and custom repository add-ons with installation status for each.
List available blueprints for automation or script domains.
List all calendar entities.
List only installed add-ons. Returns add-ons that are currently installed on the system.
List ALL add-ons from add-on store (full catalog). Returns complete catalog of add-ons from all connected repositories. Use this for browsing available add-ons and making recommendations.
Get items from a todo list entity.
Rollback configuration to specific commit (body parameter version). WARNING: This will overwrite current configuration! If the commit contains exported automations/scripts (export/automations/*.yaml, export/scripts/*.yaml), they will be restored via Home Assistant API. Regular files will be restored as files (for backwards compatibility).
Rollback configuration to specific commit (path parameter version). WARNING: This will overwrite current configuration! If the commit contains exported automations/scripts (export/automations/*.yaml, export/scripts/*.yaml), they will be restored via Home Assistant API. Regular files (automations.yaml, scripts.yaml, packages/*) will be restored as files (for backwards compatibility with old commits).
Update existing automation via Home Assistant REST API. Uses Home Assistant's REST API (POST /api/config/automation/config/{automation_id}).
IRREVERSIBLE operations (rollback_to_commit_path, rollback_to_commit_body) lack confirmation gates or dry-run modes. Per pattern:confirmation-request, destructive operations should support preview or require explicit confirmation to prevent catastrophic errors.
No error handling guidance in tool descriptions. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. E.g., install_addon may fail if slug is invalid, but no guidance provided.
Parameter constraints not fully specified. Pagination parameters (page, page_size) lack min/max bounds in 4+ tools. Without explicit limits, LLMs may pass absurd values (page=999999, page_size=10000).
Composite operations not split into discrete tools. create_checkpoint and end_checkpoint are sequencing primitives but lack clear guidance on when to use them. Should be automatically invoked by the MCP client or documented as a required user-initiated workflow.