Advanced Home AssistantCAUTION
MCP server that gives AI assistants control over your Home Assistant. Including 50+ tools over 3 transports. Batteries included 🔋
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://smithery.ai/server/@jango-blockchained/advanced-homeassistant-mcp) [](https://github.com/jango-blockchained/advanced-homeassistant-mcp/releases) [](https://www.npmjs.com/package/@jango-blockchained/homeassistant-mcp) [](https://github.com/jango-blockchained/advanced-homeassistant-mcp/pkgs/container/advanced-homeassistant-mcp) [](https://github.com/jango-blockchained/advanced-homeassistant-mcp/actions) [](https://bun.sh) [](https://nodejs.org) [](LICENSE)
Talk to your house. Your AI assistant (Claude, GPT, Cursor, Copilot) — connected to Home Assistant through the Model Context Protocol. 50+ tools, three transports, one bunx command.# ⚡ Fastest way to try it bunx github:jango-blockchained/advanced-homeassistant-mcp
🚀 Quick Start
You need a Home Assistant instance and a long-lived access token (create one here).
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"homeassistant-mcp": {
"command": "bunx",
"args": ["github:jango-blockchained/advanced-homeassistant-mcp"],
"env": {
"HASS_HOST": "http://your-ha-instance:8123",
"HASS_TOKEN": "your_long_lived_access_token"
}
}
}
}**R
d2f68b18429dOBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add homeassistant-mcp --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env COOKIE_SECRET=${COOKIE_SECRET} --env CORS_CREDENTIALS=${CORS_CREDENTIALS} --env HASS_TOKEN=${HASS_TOKEN} -- npx -y @jango-blockchained/[email protected]{
"mcpServers": {
"homeassistant-mcp": {
"command": "npx",
"args": [
"-y",
"@jango-blockchained/[email protected]"
],
"env": {
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"COOKIE_SECRET": "${COOKIE_SECRET}",
"CORS_CREDENTIALS": "${CORS_CREDENTIALS}",
"HASS_TOKEN": "${HASS_TOKEN}"
}
}
}
}Exposed tools (91)
68 read · 20 write · 3 destructive. Blast radius: 3 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Automations | read | List of all configured automations |
Covers | read | All cover entities (blinds, curtains, garage doors) |
Fans | read | All fan entities and their states |
Health | read | Health check endpoints for monitoring server status |
Locks | read | All lock entities and their states |
MCP | read | Model Context Protocol endpoints for tool execution |
SSE | read | Server-Sent Events endpoints for real-time updates |
Scenes | read | List of all configured scenes |
Sensors | read | All sensor entities (temperature, humidity, etc.) |
Switches | read | All switch entities |
Tools | read | Tool management endpoints for listing and configuring tools |
action | read | What to do with the lights (e.g., |
activity | read | What you want to do (e.g., |
addon | write | List Home Assistant add-ons or get info on a specific add-on |
addon_modify | destructive | Manage Home Assistant add-ons (install, uninstall, start, stop, restart) |
alarms | read | List all alarm panels or get the state of a specific alarm panel. |
alarms_activate | read | Arm in various modes (home, away, night, vacation, custom bypass), disarm, or trigger an alarm. Security-sensitive operations. |
animation_control | read | List currently running background light animations. |
animation_control_activate | write | Start, stop, or stop-all background light animations (endless loops). |
automation | read | List Home Assistant automations and their current state. |
automation_activate | read | Fire a Home Assistant automation |
automation_config_modify | write | Manage Home Assistant automations |
automation_modify | write | Toggle (enable/disable) a Home Assistant automation. Does not fire the automation |
claude | read | Claude-specific prompt template for home automation control |
climate | read | List all climate devices (thermostats, AC) or get the state of a specific one. |
climate_activate | write | Set HVAC mode, target temperature, or fan mode on climate devices. |
climate_comfort | read | Optimize climate control for comfort and efficiency |
control | read | Control Home Assistant entities |
control_activate | read | Control Home Assistant entities (lights, climate, etc.) |
control_lights | read | Help with controlling lights in a room or area |
covers | read | List all covers (blinds, curtains, garage doors, shades) or get the state of one. |
covers_activate | write | Open, close, stop, toggle, or set the position/tilt of a cover. |
custom | read | Customizable prompt template for home automation control |
dashboard | read | List Home Assistant Lovelace dashboards or read a dashboard |
dashboard_modify | write | Replace a Home Assistant Lovelace dashboard |
device_name | read | The name or type of device having issues |
energy_saving | read | Suggestions for energy-saving automations |
fans | read | List all fans or get the state of a specific fan. |
fans_activate | write | Control fans: turn on/off/toggle, set speed percentage, preset mode, oscillation, direction. |
get_entity_state | read | Get the current state of any Home Assistant entity. Works with all entity types: sensors, binary_sensors, switches, lights, climate, covers, etc. Returns state value, timestamps, and optionally all attributes. |
get_history | read | Retrieve historical data for entities |
get_sse_stats | read | Get statistics about SSE connections |
gpt4 | read | GPT-4 specific prompt template for precise home automation control |
history | read | Get entity history |
light_animation_activate | write | Execute custom light animation sequences (e.g., police lights, alerts) on any RGB light. |
light_scenario_activate | write | Apply ambient lighting moods (Chill, Nightly, Focus, etc.) to a specific area or light. |
light_showcase_activate | write | Run a choreographed light showcase that calls various moods and custom palettes to demonstrate system capabilities. |
lights | read | List all lights or get the state of a specific light. |
lights_activate | read | Turn lights on (with optional brightness/color/effect) or off. |
list_devices | read | List all Home Assistant devices |
locks | read | List all locks or get the state of a specific lock. |
locks_activate | read | Lock, unlock, or open (unlatch) physical locks. Unlocking is a security-sensitive operation. |
maintenance | read | Analyze Home Assistant health: find orphaned/unavailable devices, analyze light usage and energy consumption, run device health checks. All actions are read-only — no entities are removed or modified. |
media_control | read | Control media players and entertainment systems |
media_players | read | List all media players or get the state of a specific media player. |
media_players_activate | read | Control media players: playback, volume, source/sound mode selection, play media on TVs and speakers. |
morning_routine | write | Create a morning routine automation |
notify | write | Send notification |
notify_activate | write | Send notifications through Home Assistant |
package | read | List HACS packages and custom components by category |
package_modify | destructive | Manage HACS packages (install, uninstall, update) |
preferred_temp | read | Your preferred temperature (e.g., |
render_template | read | Evaluate a Home Assistant Jinja2 template. Use this to query complex state information, perform calculations, format data, or test template expressions. The template is rendered server-side by Home Assistant and the result is returned as text. |
room | read | The room or area name (e.g., |
scene | read | List Home Assistant scenes. |
scene_activate | read | Activate a Home Assistant scene |
scene_creation | write | Create a scene for a specific activity or mood |
scene_name | read | Name for the scene (e.g., |
search_entities | read | Search Home Assistant entities with powerful filtering. Supports domain, device_class, state (exact or comparison like |
security_setup | write | Set up security and monitoring |
smart_scenarios | read | Detect common smart home scenarios (nobody home, window/heating conflicts, energy-saving opportunities). Read-only analysis. |
smart_scenarios_activate | write | Apply smart home scenarios: turn off lights and adjust climate when nobody is home, or turn off heating when windows are open. Actuates devices and sends notifications. |
stream_generator | read | Generate a stream of data with configurable delay and count |
subscribe_events | read | Subscribe to Home Assistant events via SSE |
switches | read | List all switches or get the state of a specific switch (smart plugs, relays, virtual switches). |
switches_activate | read | Turn switches on, off, or toggle. |
system_info | read | Get basic information about this MCP server including version, transport, and connection status |
test_tool | read | A test tool |
text_to_speech | read | Generate and play text-to-speech audio via Home Assistant. Provides voice feedback for commands with support for multiple languages and TTS providers. |
todo | read | List Home Assistant to-do lists or get items from a specific list. |
todo_modify | destructive | Add, update, or remove items in a Home Assistant to-do list. |
trace | read | Access automation and script execution traces. List recent traces, get detailed trace data, or list trace contexts. Useful for debugging automation issues. |
troubleshoot_device | read | Help troubleshoot a device that |
vacuum_schedule | write | Set up robot vacuum cleaning schedule |
vacuums | read | List all robot vacuums or get the state of a specific vacuum. |
vacuums_activate | write | Control robot vacuums: start/pause/stop, return to dock, spot cleaning, locate, fan speed, vendor-specific commands. |
validation_demo | read | Demonstrates parameter validation with Zod schemas |
voice_command_ai_parser_activate | read | Parse voice commands using AI (Claude). Makes an outbound API call to api.anthropic.com (consumes API credits, sends transcript to a third party). Falls back gracefully if AI not available. |
voice_command_executor_activate | write | Execute parsed voice commands through Home Assistant. Maps intents to service calls and controls devices. |
voice_command_parser | read | Parse natural language voice transcriptions into structured Home Assistant commands. Extracts intent, entities, and parameters from voice input. |
voice_control_setup | read | Recommendations for voice control setup |
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- declared (2 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (19)
logger.debug(`Token loaded: yes (${this.token.length} chars)`);addon_modify, package_modify, todo_modify
import type { AIResponse, AIError } from "../../../src/ai/types/index.js";void mock.module("../../../src/ai/nlp/processor.js", () => ({import router from "../../../src/ai/endpoints/ai-router.js";
import { IntentClassifier } from '../../../src/ai/nlp/intent-classifier.js';import type { Entity } from '../../src/types/hass.js';| **C14** | `docker-compose.yml` hardcodes personal IP `http://192.168.178.63:8123` — privacy leak | `docker-compose.yml`
- Default HASS host: **`http://192.168.178.63:8123`** (C14 — personal IP leaked)
HASS_HOST=http://192.168.1.50:8123
The server prints `MCP Server listening on http://0.0.0.0:4000` (or whatever `PORT` you set). Hit `GET /health` to confirm:
proxy_pass http://127.0.0.1:4000;
@astrojs/check, @astrojs/mdx, @astrojs/react, @astrojs/sitemap, @radix-ui/react-dialog, @radix-ui/react-dropdown-menu, @tailwindcss/vite, @types/react
@types/node, @types/sanitize-html, @types/swagger-ui-express, @types/uuid, @types/ws, cors, dotenv, express
.smithery/index.cjs
.smithery/shttp/module.js
.smithery/shttp/module.js.map
A handful of legacy call sites read `process.env` directly (the rate limit, the speech flags). Those are documented inline. New code should import from `APP_CONFIG` so the Zod defaults apply consisten
- **Don't read `process.env` in the tool.** Use the context or the typed `APP_CONFIG`. The Zod validation won't catch a typo.
Gates applied: no_behavioural_pass.
d2f68b18429dfull audit observations/trust-audit/mcp-server/jango-blockchained__advanced-home-assistant.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | d2f68b18429d | CAUTION | B | 89 | first audit |
Questions
What is the Advanced Home Assistant MCP server?
MCP server that gives AI assistants control over your Home Assistant. Including 50+ tools over 3 transports. Batteries included 🔋
What tools does Advanced Home Assistant expose?
91 in total: 68 read-only, 20 that write, and 3 that can delete or overwrite (addon_modify, package_modify, todo_modify). Every one is listed on this page with its risk.
Is Advanced Home Assistant safe to connect to an agent?
With care. The audit graded it B (89/100) and found 19 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 3 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Advanced Home Assistant need?
It reads ANTHROPIC_API_KEY, COOKIE_SECRET, CORS_CREDENTIALS, HASS_TOKEN, JWT_SECRET, OPENAI_API_KEY, TEST_HASS_TOKEN, TEST_INVALID_TOKEN, TEST_JWT_SECRET, TEST_TOKEN and TOKEN_MIN_LENGTH from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How current is this page?
The grade is for one exact copy of the source (d2f68b18429d), read on 2026-10-08. The repository is watched and re-audited when it changes.