Ambient Home Assistant MCP
OfficialProvides a secure, semantic bridge to Home Assistant, offering tools to discover entities, search, list areas/floors, and get domain summaries in a read-only manner.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ambient Home Assistant MCPWhat's the current state of the living room lights?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ambient Home Assistant MCP
Ambient Home Assistant MCP is a secure, semantic bridge that gives ChatGPT and other MCP clients purpose-built access to Home Assistant. It is the server foundation for the future user-facing Ambient Home Assistant application.
Phase 2 status: local/private and read-only. This release adds semantic entity discovery, current state, areas, floors, and domain summaries. It cannot control devices or change Home Assistant.
What it is—and what it is not
The bridge is an abstraction and security layer. Over time, it can choose among Home Assistant REST, WebSocket, and native MCP/Assist interfaces while presenting small, semantic tools to the model.
It is not:
a replacement for Home Assistant;
an unrestricted Home Assistant administrator API;
a generic API wrapper exposed to an LLM; or
a reverse proxy for Home Assistant's
/api/mcpendpoint.
Related MCP server: ha-ai-learner
Architecture
flowchart TD
C[ChatGPT or MCP client] -->|MCP| A[Ambient Home Assistant MCP]
A --> T[Semantic tools]
A --> P[Policy and security]
A --> N[Normalized data and diagnostics]
T --> H[Home Assistant client facade]
P --> H
N --> H
H --> R[REST state API]
H --> W[WebSocket registries]
H -. selective future use .-> M[HA MCP or Assist API]MCP tools never make raw HTTP requests. They depend on HomeAssistantClient,
which owns interface selection and immediately normalizes upstream responses.
See the architecture decision record.
Capabilities
Surface | Purpose |
| Reports reachability and authentication state without exposing credentials. |
| Returns only version, time zone, and unit-system metadata. |
| Gets one current entity by exact entity ID with resolved location and safe attributes. |
| Searches current entities by name/ID and composable domain, area, floor, state, and availability filters. |
| Lists compact areas or gets one area with domain counts and an optional bounded entity list. |
| Lists floors or gets one floor with area and domain aggregates. |
| Summarizes observed states and availability for any entity domain. |
| Reports application liveness and separate Home Assistant readiness. |
No service calls, state changes, or administrative endpoints are implemented.
Security model
Home Assistant tokens come only from runtime configuration and use Pydantic secret types.
Logs are structured and redact bearer tokens and common credential fields.
Raw
/api/configdata is reduced to an allowlisted model before it can reach a tool result.Detailed entity attributes use an explicit allowlist and exclude URLs, camera sources, tokens, credentials, coordinates, and location-bearing metadata.
Current states are never cached. Registry metadata uses one bounded 60-second TTL cache to avoid repeated WebSocket authentication and registry reads.
MCP transport Host and Origin allowlists protect against DNS rebinding.
The policy engine allows reads and fails closed for every control class.
The container runs as a non-root user with a read-only filesystem in Compose.
Never commit .env, Home Assistant tokens, credentials, private URLs, or
certificates. See Security before any deployment work.
Quick start
Requirements: Python 3.12+ and uv.
cp .env.example .env
# Edit .env and provide HOME_ASSISTANT_URL and HOME_ASSISTANT_TOKEN.
uv sync --all-extras
uv run ambient-ha-mcpThe Streamable HTTP MCP endpoint is http://127.0.0.1:8000/mcp; health is at
http://127.0.0.1:8000/health.
Inspect the tools locally:
npx @modelcontextprotocol/inspector@latestThen connect the Inspector to http://127.0.0.1:8000/mcp.
Development commands
uv sync --all-extras # install
uv run ambient-ha-mcp # run locally
uv run pytest # unit tests; real HA tests skip by default
uv run ruff check . # lint
uv run ruff format --check . # formatting check
uv run mypy # type check
docker build -t ambient-ha-mcp .
docker compose up --buildRegenerate the dependency lock after an intentional dependency change:
uv lockDocker Compose
Copy .env.example to .env, supply the two required Home Assistant settings,
and run docker compose up --build. Compose publishes only to host loopback.
The Docker health probe tests application liveness. A temporary Home Assistant
outage changes /health to status: degraded, but leaves HTTP status 200 so the
orchestrator does not restart a healthy bridge in a loop.
Documentation
License
MIT. See LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for full Home Assistant control, enabling AI agents to manage dashboards, automations, files, apps, entities, and more via REST API, WebSocket, and SSH.66116MIT
- AlicenseNot gradedqualityBmaintenanceA self-learning discovery tool + MCP server that turns your Home Assistant into knowledge an AI assistant can actually use.MIT
- AlicenseNot gradedqualityAmaintenanceEnables secure, auditable access to Home Assistant through MCP, with a read-only observer profile and an operator profile for controlled mutations.MIT
- AlicenseNot gradedqualityBmaintenanceExposes a curated allowlist of Home Assistant entities to external clients over MCP with read-only list and get_state tools, using an isolated guest credential that cannot access other Home Assistant APIs.Apache 2.0
Related MCP Connectors
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Cross-vendor AI memory over MCP. One semantic store, readable and writeable from every MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ambient-home-systems/ambient-ha-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server