Skip to main content
Glama
ambient-home-systems

Ambient Home Assistant MCP

Official

Ambient Home Assistant MCP

Ambient Home Assistant MCP — это безопасный семантический мост, который предоставляет ChatGPT и другим MCP-клиентам специализированный доступ к Home Assistant. Он является серверной основой для будущего пользовательского приложения Ambient Home Assistant.

Статус фазы 2: локальный/частный и только для чтения. Этот выпуск добавляет семантическое обнаружение сущностей, текущее состояние, зоны, этажи и сводки по доменам. Он не может управлять устройствами или изменять Home Assistant.

Что это такое — и чем оно не является

Мост — это уровень абстракции и безопасности. Со временем он сможет выбирать между REST, WebSocket и нативными интерфейсами MCP/Assist Home Assistant, предоставляя модели небольшие семантические инструменты.

Он не является:

  • заменой Home Assistant;

  • неограниченным администраторским API Home Assistant;

  • универсальной обёрткой API, доступной LLM; или

  • обратным прокси для конечной точки /api/mcp Home Assistant.

Related MCP server: homeassistant-gateway

Архитектура

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 никогда не выполняют прямых HTTP-запросов. Они зависят от HomeAssistantClient, который отвечает за выбор интерфейса и немедленно нормализует ответы вышестоящих систем. См. запись о решении по архитектуре.

Возможности

Surface

Purpose

ha_connection_status

Сообщает о доступности и состоянии аутентификации, не раскрывая учётные данные.

ha_server_info

Возвращает только версию, часовой пояс и метаданные системы единиц измерения.

ha_get_entity

Получает одну текущую сущность по точному идентификатору с разрешённым местоположением и безопасными атрибутами.

ha_search_entities

Ищет текущие сущности по имени/ID и комбинируемым фильтрам по домену, зоне, этажу, состоянию и доступности.

ha_list_areas / ha_get_area

Перечисляет компактные зоны или получает одну зону с количеством доменов и необязательным ограниченным списком сущностей.

ha_list_floors / ha_get_floor

Перечисляет этажи или получает один этаж с агрегатами по зонам и доменам.

ha_domain_summary

Суммирует наблюдаемые состояния и доступность для любого домена сущностей.

GET /health

Сообщает о работоспособности приложения и отдельно о готовности Home Assistant.

Никакие вызовы служб, изменения состояния или административные конечные точки не реализованы.

Модель безопасности

  • Токены Home Assistant поступают только из конфигурации времени выполнения и используют секретные типы Pydantic.

  • Журналы структурированы и скрывают токены носителя и общие поля учётных данных.

  • Необработанные данные /api/config сокращаются до модели из белого списка, прежде чем попасть в результат инструмента.

  • Подробные атрибуты сущностей используют явный белый список и исключают URL-адреса, источники камер, токены, учётные данные, координаты и метаданные, содержащие местоположение.

  • Текущие состояния никогда не кэшируются. Метаданные реестра используют один ограниченный кэш TTL на 60 секунд, чтобы избежать повторной аутентификации WebSocket и чтения реестра.

  • Белые списки Host и Origin транспорта MCP защищают от DNS-ребендинга.

  • Политический движок разрешает чтение и закрывается при сбое для каждого класса управления.

  • Контейнер работает от непривилегированного пользователя с файловой системой только для чтения в Compose.

Никогда не коммитьте .env, токены Home Assistant, учётные данные, частные URL-адреса или сертификаты. См. Безопасность перед любой работой по развёртыванию.

Быстрый старт

Требования: Python 3.12+ и uv.

cp .env.example .env
# Edit .env and provide HOME_ASSISTANT_URL and HOME_ASSISTANT_TOKEN.
uv sync --all-extras
uv run ambient-ha-mcp

Конечная точка Streamable HTTP MCP: http://127.0.0.1:8000/mcp; состояние доступно по адресу http://127.0.0.1:8000/health.

Проверьте инструменты локально:

npx @modelcontextprotocol/inspector@latest

Затем подключите Inspector к http://127.0.0.1:8000/mcp.

Команды разработки

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 --build

Перегенерируйте блокировку зависимостей после намеренного изменения зависимостей:

uv lock

Docker Compose

Скопируйте .env.example в .env, укажите два обязательных параметра Home Assistant и выполните docker compose up --build. Compose публикует только на loopback хоста.

Проверка работоспособности Docker проверяет работоспособность приложения. Временный сбой Home Assistant меняет /health на status: degraded, но оставляет HTTP-статус 200, чтобы оркестратор не перезапускал здоровый мост в цикле.

Документация

Лицензия

MIT. См. LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A self-learning discovery tool + MCP server that turns your Home Assistant into knowledge an AI assistant can actually use.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes 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.
    1
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Read-only MCP server for Home Assistant that computes statistical summaries, trends, and session detection from recorded sensor history, returning compact tables instead of raw data so small local models can answer questions about energy usage, climate, and appliance activity without token-heavy arithmetic.
    10
    6 npm
    Apache 2.0