voska/hass-mcp

voska/hass-mcp

от voska
MCP сервер для Home Assistant подключает Claude и другие LLM к вашему умному дому: управляйте устройствами, проверяйте датчики, запускайте автоматизации через текстовые команды.

Hass-MCP

A Model Context Protocol (MCP) server for Home Assistant integration with Claude and other LLMs.

Hass-MCP MCP server

Overview

Hass-MCP enables AI assistants like Claude to interact directly with your Home Assistant instance, allowing them to:

  • Query the state of devices and sensors
  • Control lights, switches, and other entities
  • Get summaries of your smart home
  • Troubleshoot automations and entities
  • Search for specific entities
  • Create guided conversations for common tasks

Screenshots

Screenshot 2025-03-16 at 15 48 01 Screenshot 2025-03-16 at 15 50 59 Screenshot 2025-03-16 at 15 49 26

Features

  • Entity Management: Get states, control devices, and search for entities
  • Domain Summaries: Get high-level information about entity types
  • Automation Support: List and control automations
  • Guided Conversations: Use prompts for common tasks like creating automations
  • Smart Search: Find entities by name, type, or state
  • Token Efficiency: Lean JSON responses to minimize token usage

Installation

Prerequisites
  • Home Assistant instance with Long-Lived Access Token
  • One of the following:
    • Docker (recommended)
    • Python 3.13+ and uv

Setting Up With Claude Desktop

Инструменты были проиндексированы:
add_card

Добавляет карточку в представление дашборда (в реальном времени) Аргументы: url_path: URL-путь дашборда или None для дашборда по умолчанию. view: Целевое представление - целочисленный индекс или строка, совпадающая с path или title представления. card: Словарь конфигурации карточки (должен содержать строковое поле type), например {"type": "markdown", "content": "Hello"}. position: Индекс вставки в целевом списке карточек (по умолчанию: добавить в конец). section: Для представления типа "sections", в какую секцию добавить: индекс, название секции или текст заголовка. ОБЯЗАТЕЛЬНО для представлений типа sections (используйте list_view_sections, чтобы их увидеть); для классических представлений пропустите. dry_run: Предпросмотр без сохранения. Возвращает: Результат сохранения с backup_id или предпросмотр dry-run.

Параметры
  • cardobject | null
  • dry_runboolean
  • positioninteger | null
  • sectioninteger | string | null
  • url_pathstring | null
  • viewinteger | string
add_view

Добавляет новое представление в дашборд (live) Аргументы: url_path: URL-путь дашборда или None для дашборда по умолчанию. view_config: словарь конфигурации представления, например {"title": "Garage", "path": "garage"}. position: индекс вставки среди представлений (по умолчанию: в конец). dry_run: предпросмотр без сохранения. Возвращает: Результат сохранения с backup_id или предпросмотр dry-run.

Параметры
  • dry_runboolean
  • positioninteger | null
  • url_pathstring | null
  • view_configobject | null
call_service_tool

Вызывает любой сервис Home Assistant (низкоуровневый доступ к API) Аргументы: domain: домен сервиса (например, 'light', 'switch', 'automation') service: вызываемый сервис (например, 'turn_on', 'turn_off', 'toggle') data: необязательные данные, передаваемые сервису (например, {'entity_id': 'light.living_room'}) Возвращает: Словарь со статусом успеха, вызванными доменом и сервисом и списком затронутых состояний сущностей, возвращённых Home Assistant. Примеры: domain='light', service='turn_on', data={'entity_id': 'light.x', 'brightness': 255} domain='automation', service='reload' domain='fan', service='set_percentage', data={'entity_id': 'fan.x', 'percentage': 50}

Параметры
  • dataobject | null
  • domainstringобязательный
  • servicestringобязательный
domain_summary_tool

Возвращает сводку по сущностям в указанном домене Аргументы: domain: домен, для которого нужно получить сводку (например, 'light', 'switch', 'sensor') example_limit: максимальное количество примеров для каждого состояния Возвращает: Словарь, содержащий: - total_count: количество сущностей в домене - state_distribution: количество сущностей в каждом состоянии - examples: примеры сущностей для каждого состояния - common_attributes: наиболее часто встречающиеся атрибуты Примеры: domain="light" - получить сводку по свету domain="climate", example_limit=5 - сводка по климату с дополнительными примерами Рекомендации: - Используйте это перед получением всех сущностей в домене, чтобы понять, что доступно

Параметры
  • domainstringобязательный
  • example_limitinteger
entity_action

Выполняет действие над сущностью Home Assistant (on, off, toggle) Аргументы: entity_id: идентификатор сущности, которой нужно управлять (например, 'light.living_room') action: действие, которое нужно выполнить ('on', 'off', 'toggle') params: необязательный словарь дополнительных параметров для вызова службы Возвращает: Ответ от Home Assistant Примеры: entity_id="light.living_room", action="on", params={"brightness": 255} entity_id="switch.garden_lights", action="off" entity_id="climate.living_room", action="on", params={"temperature": 22.5} Параметры для конкретных доменов: - Lights: brightness (0-255), color_temp, rgb_color, transition, effect - Covers: position (0-100), tilt_position - Climate: temperature, target_temp_high, target_temp_low, hvac_mode - Media players: source, volume_level (0-1)

Параметры
  • actionstringобязательный
  • entity_idstringобязательный
  • paramsobject | null
get_dashboard_config

Получает полную конфигурацию дашборда Аргументы: url_path: URL-путь дашборда (например, "my-dash"). Опустите или передайте None, чтобы использовать дашборд "Overview" по умолчанию. Возвращает: dict с конфигурацией дашборда (на верхнем уровне содержит список карточек views). Если у дашборда ещё нет сохранённой конфигурации, возвращает пустую заготовку {"views": []} с полем note.

Параметры
  • url_pathstring | null
get_entities_by_area

Получает все сущности, назначенные на конкретную зону (комнату) Home Assistant. Поиск зоны не зависит от регистра и сопоставляется с именем зоны, настроенным в Home Assistant (например, "Kitchen", "Living Room"). Сущности наследуют зону от родительского устройства, если зона не задана напрямую, что соответствует собственному поведению HA при определении зоны. Аргументы: area: Имя зоны для фильтрации (без учёта регистра) domain: Необязательный домен для дополнительной фильтрации результатов (например, 'light') lean: Если True (по умолчанию), возвращает компактные записи сущностей, экономящие токены. Возвращает: Словарь, содержащий: - area: имя совпавшей зоны (в каноническом виде, как его приводит HA) - count: количество подходящих сущностей - entities: список записей сущностей с их состоянием и зоной Примеры: get_entities_by_area(area="Kitchen") - всё на кухне get_entities_by_area(area="Living Room", domain="light") - только свет

Параметры
  • areastringобязательный
  • domainstring | null
  • leanboolean
get_entity

Получает состояние сущности Home Assistant с необязательной фильтрацией полей Аргументы: entity_id: идентификатор запрашиваемой сущности (например, 'light.living_room') fields: необязательный список полей, которые нужно включить в ответ (например, ['state', 'attr.brightness']) detailed: если True, возвращает все поля сущности без фильтрации Примеры: entity_id="light.living_room" - простая проверка состояния entity_id="light.living_room", fields=["state", "attr.brightness"] - конкретные поля entity_id="light.living_room", detailed=True - все подробности

Параметры
  • detailedboolean
  • entity_idstringобязательный
  • fieldsstring[] | null
get_error_log

Получает журнал ошибок Home Assistant для диагностики неполадок. Все фильтры необязательны и комбинируются (семантика AND). Статистика (error_count, warning_count, integration_mentions, total_lines) вычисляется по отфильтрованному выводу, поэтому соответствует тому, что возвращается. Args: level: Фильтрует строки, содержащие этот уровень журнала: ERROR, WARNING, INFO или DEBUG. Без учёта регистра. integration: Фильтрует строки, упоминающие эту интеграцию. Совпадает с [name] или [homeassistant.components.name]. Без учёта регистра. search_term: Фильтр по подстроке без учёта регистра, применяется к каждой строке. Пригодится для идентификаторов сущностей, имён исключений и т.д. lines: Возвращает только последние N строк (применяется после остальных фильтров). Пригодится, когда нужен только хвост журнала. Returns: Словарь, содержащий: - log_text: текст журнала ошибок (возможно, отфильтрованного) - error_count: количество записей ERROR в отфильтрованном выводе - warning_count: количество записей WARNING в отфильтрованном выводе - integration_mentions: соответствие имён интеграций количеству упоминаний - total_lines: количество строк в отфильтрованном выводе - filters_applied: какие аргументы фильтров были переданы - error: сообщение об ошибке, если получить журнал не удалось Examples: get_error_log() # полный журнал get_error_log(level="ERROR") # только ошибки get_error_log(integration="zwave_js") # одна интеграция get_error_log(search_term="light.kitchen") # конкретная сущность get_error_log(level="ERROR", lines=50) # последние 50 ошибок Рекомендации: - Фильтруйте на стороне сервера (здесь), а не тяните весь журнал в контекст Claude: это экономит токены на шумных журналах. - Комбинируйте integration и level="ERROR", чтобы разобраться с одной проблемной интеграцией. - Используйте lines, чтобы ограничить вывод при просмотре долго работающего HA.

Параметры
  • integrationstring | null
  • levelstring | null
  • linesinteger | null
  • search_termstring | null
get_history

Получает историю изменений состояния объекта Аргументы: entity_id: идентификатор объекта, для которого нужно получить историю hours: количество часов истории для получения (по умолчанию: 24) Возвращает: Словарь, содержащий: - entity_id: запрошенный идентификатор объекта - states: список объектов состояния с метками времени - count: количество найденных изменений состояния - first_changed: метка времени самого раннего изменения состояния - last_changed: метка времени самого последнего изменения состояния Примеры: entity_id="light.living_room" - получить историю за 24 часа entity_id="sensor.temperature", hours=168 - получить историю за 7 дней Рекомендации: - Оставляйте hours в разумных пределах (24-72) для экономии токенов - Используйте для объектов с дискретными изменениями состояния, а не для датчиков с непрерывными изменениями - Оценивайте распределение состояний, а не каждое отдельное состояние

Параметры
  • entity_idstringобязательный
  • hoursinteger
get_history_range

Получает историю необработанных изменений состояния объекта за диапазон дат/времени. Как и get_history, но принимает явное окно вместо «N часов от текущего момента». Удобна для просмотра того, что произошло в конкретный день, или для сопоставления с внешним событием. Аргументы: entity_id: Сущность, для которой нужно получить историю. start_time: Начало в формате ISO-8601 (например, 2026-05-15 или 2026-05-15T08:00:00Z). Интерпретируется как UTC, если не указано смещение. end_time: Конец в формате ISO-8601. По умолчанию - текущий момент (UTC). Возвращает: Та же структура, что и у get_history: entity_id, states, count, first_changed, last_changed. Примеры: get_history_range("light.kitchen", "2026-05-15") get_history_range("sensor.power", "2026-05-15T00:00:00Z", "2026-05-16T00:00:00Z") Рекомендации: - Ограничивайте окно: более широкие диапазоны возвращают больше данных и токенов. - Для агрегированных долгосрочных данных предпочитайте get_statistics_range.

Параметры
  • end_timestring | null
  • entity_idstringобязательный
  • start_timestringобязательный
get_statistics

Получает долгосрочную агрегированную статистику для сущности за последние N часов. Использует статистику рекордера HA (через WebSocket): агрегированные корзины (mean / min / max за период), которые переживают окно краткосрочного хранения. Применяйте этот инструмент вместо get_history, когда: - Нужны данные старше стандартного 10-дневного окна рекордера. - Нужны агрегированные значения, а не каждое отдельное изменение. - Сущность - высокочастотный датчик (температура, мощность), и исходная история заняла бы слишком много токенов. Аргументы: entity_id: сущность (должна иметь state_class, который HA записывает как статистику: measurement, total, total_increasing). hours: насколько далеко назад от текущего момента. По умолчанию 24. period: размер корзины: 5minute, hour, day, week, month. По умолчанию hour. Возвращает: entity_id, period, start_time, end_time, statistics (список точек {start, end, mean, min, max, ...}). Примеры: get_statistics("sensor.power_usage", hours=168, period="day") get_statistics("sensor.temperature", hours=24)

Параметры
  • entity_idstringобязательный
  • hoursinteger
  • periodstring
get_statistics_range

Получает долгосрочную агрегированную статистику для объекта за диапазон дат/времени. Тот же источник данных, что и get_statistics, но с явно заданным окном - удобно для вопросов вроде «какое у меня было потребление электроэнергии с 1 по 31 января?». Агрегированные данные по периодам сохраняются дольше краткосрочного окна хранения, поэтому функция работает с данными месячной или годовой давности. Аргументы: entity_id: объект (должен отслеживаться статистикой). start_time: начало в формате ISO-8601 (2026-01-01 или 2026-01-01T00:00:00Z). UTC, если не указан часовой пояс. end_time: конец в формате ISO-8601. По умолчанию - текущее время. period: 5minute, hour, day, week или month. Возвращает: entity_id, period, start_time, end_time, statistics. Примеры: get_statistics_range("sensor.energy", "2026-01-01", "2026-02-01", period="day") get_statistics_range("sensor.temperature", "2026-05-01", period="hour")

Параметры
  • end_timestring | null
  • entity_idstringобязательный
  • periodstring
  • start_timestringобязательный
get_version

Получает версию Home Assistant Возвращает: Строку с версией Home Assistant (например, "2025.3.0")

Параметры

Без параметров.

list_automations

Получает список всех автоматизаций из Home Assistant. Эта функция получает все автоматизации, настроенные в Home Assistant, включая их идентификаторы, идентификаторы сущностей, состояние и отображаемые имена. Возвращает: Список словарей автоматизаций, каждый из которых содержит поля id, entity_id, state и alias (понятное имя). Примеры: Возвращает все объекты автоматизаций с состоянием и понятными именами

Параметры

Без параметров.

list_dashboard_backups

Перечисляет резервные копии конфигурации дашборда на диске. Резервные копии записываются автоматически перед каждой записью дашборда. ПРИМЕЧАНИЕ: в Docker резервные копии сохраняются только если HASS_MCP_BACKUP_DIR подключён как том. Аргументы: url_path: путь URL дашборда или None для дашборда по умолчанию. Возвращает: Список {backup_id, path}, сначала самые старые.

Параметры
  • url_pathstring | null
list_dashboards

Перечисляет панели Home Assistant (Lovelace) Возвращает: Список панелей. Каждая запись содержит url_path (None для панели по умолчанию "Overview"), title и mode ("storage" или "yaml"). Редактировать через эти инструменты можно только панели в режиме "storage".

Параметры

Без параметров.

list_entities

Получает список сущностей Home Assistant с необязательной фильтрацией Аргументы: domain: необязательный домен для фильтрации (например, 'light', 'switch', 'sensor') search_query: необязательный поисковый запрос для фильтрации сущностей по имени, id или атрибутам (Примечание: подстановочные знаки не поддерживаются. Чтобы получить все сущности, оставьте поле пустым) limit: максимальное количество возвращаемых сущностей (по умолчанию: 100) fields: необязательный список конкретных полей, включаемых в каждую сущность detailed: если True, возвращает все поля сущности без фильтрации Возвращает: Список словарей сущностей в сокращённом формате по умолчанию Примеры: domain="light" - получить все источники света search_query="kitchen", limit=20 - поиск сущностей domain="sensor", detailed=True - полные данные о датчике Рекомендации: - Используйте сокращённый формат (по умолчанию) для большинства операций - Предпочитайте фильтрацию по домену вместо отсутствия фильтрации - Для обзора доменов используйте domain_summary_tool вместо list_entities - Запрашивайте detailed=True только при необходимости полного просмотра атрибутов - Чтобы получить все типы сущностей (домены), используйте list_entities без фильтра по домену, затем извлеките домены из entity_ids

Параметры
  • detailedboolean
  • domainstring | null
  • fieldsstring[] | null
  • limitinteger
  • search_querystring | null
list_view_sections

Перечисляет секции представления дашборда типа sections. В современных представлениях Home Assistant с типом type: sections карточки хранятся внутри секций, а не в списке карточек верхнего уровня. Используйте его, чтобы узнать, какую секцию указывать в аргументе section карточных инструментов. Аргументы: url_path: URL-путь дашборда или None для дашборда по умолчанию. view: целевое представление (индекс или строка, совпадающая с path/title). Возвращает: Список {index, title, heading, card_count}, по одному на секцию. Выдаёт ошибку, если представление не относится к типу sections.

Параметры
  • url_pathstring | null
  • viewinteger | string
move_card

Изменяет порядок карточки в представлении дашборда (live) Args: url_path: путь к URL дашборда или None для дашборда по умолчанию. view: целевое представление (индекс или совпадающий path/title). card_index: текущий индекс карточки. new_index: конечный индекс в том же списке карточек. section: для представления типа "sections": секция, в которой находится карточка (индекс/название/заголовок). Обязательно для представлений sections. dry_run: предварительный просмотр без сохранения. Returns: Результат сохранения с backup_id или предварительный просмотр dry-run.

Параметры
  • card_indexinteger
  • dry_runboolean
  • new_indexinteger
  • sectioninteger | string | null
  • url_pathstring | null
  • viewinteger | string
remove_card

Удаляет карточку из представления панели управления (live) Аргументы: url_path: путь URL панели управления, или None для панели по умолчанию. view: целевое представление (index или совпадающее path/title). card_index: индекс удаляемой карточки в списке карточек целевого представления. section: для представления типа "sections" - раздел, в котором находится карточка (index/title/heading). Обязателен для представлений с разделами. dry_run: предварительный просмотр без сохранения. Возвращает: результат сохранения с backup_id или предварительный просмотр без сохранения.

Параметры
  • card_indexinteger
  • dry_runboolean
  • sectioninteger | string | null
  • url_pathstring | null
  • viewinteger | string
remove_view

Удаляет представление из панели мониторинга (live) ⚠️ Удаляет представление и все его карточки. Args: url_path: URL-путь панели мониторинга или None для панели по умолчанию. view: целевое представление (индекс или совпадение с path/title). dry_run: предварительный просмотр без сохранения. Возвращает: Результат сохранения с backup_id или предварительный просмотр без сохранения.

Параметры
  • dry_runboolean
  • url_pathstring | null
  • viewinteger | string
restart_ha

Перезапускает Home Assistant ⚠️ ВНИМАНИЕ: Временно нарушает работу всех операций Home Assistant Возвращает: Результат операции перезапуска

Параметры

Без параметров.

restore_dashboard

Восстанавливает панель из резервной копии (live) Восстанавливает самую свежую резервную копию, если не указан backup_id. Текущая конфигурация сначала сама сохраняется в резервную копию, так что восстановление можно отменить. Args: url_path: URL-путь панели, или None для панели по умолчанию. backup_id: Конкретный идентификатор резервной копии из list_dashboard_backups (по умолчанию: самая свежая). dry_run: Предварительный просмотр без сохранения. Returns: Результат сохранения плюс restored_from, или предварительный просмотр при dry-run.

Параметры
  • backup_idstring | null
  • dry_runboolean
  • url_pathstring | null
search_entities_tool

Ищет сущности, соответствующие строке запроса Аргументы: query: Строка запроса для поиска по идентификаторам, именам и атрибутам сущностей. (Примечание: не поддерживает подстановочные символы. Чтобы получить все сущности, оставьте поле пустым или используйте инструмент list_entities) limit: Максимальное количество возвращаемых результатов (по умолчанию: 20) Возвращает: Словарь, содержащий результаты поиска и метаданные: - count: общее количество найденных подходящих сущностей - results: список совпадающих сущностей с основной информацией - domains: карта доменов с количеством (например, {"light": 3, "sensor": 2}) Примеры: query="temperature" — найти температурные сущности query="living room", limit=10 — найти сущности в гостиной query="", limit=500 — перечислить все типы сущностей

Параметры
  • limitinteger
  • querystringобязательный
set_dashboard_config

Заменяет полную конфигурацию дашборда (низкоуровневая запись) ⚠️ ВНИМАНИЕ: перезаписывает ВЕСЬ дашборд и обновляет все открытые браузеры в реальном времени. Предыдущая конфигурация сначала сохраняется в резервную копию (используйте restore_dashboard для отмены). Требуется токен администратора; сохранять можно только дашборды в режиме хранения. Аргументы: url_path: URL-путь дашборда или None для дашборда по умолчанию. config: Полный новый словарь конфигурации (должен содержать список views). dry_run: Если True, проверяет и возвращает итоговую конфигурацию + сводку изменений БЕЗ сохранения. Возвращает: При сохранении: {success, url_path, backup_id, summary}. При dry_run: {dry_run: True, url_path, summary, config}.

Параметры
  • configobject | null
  • dry_runboolean
  • url_pathstring | null
system_overview

Получает всесторонний обзор всей системы Home Assistant Возвращает: Словарь, содержащий: - total_entities: общее количество всех сущностей - domains: словарь доменов с количеством сущностей и распределением состояний - domain_samples: репрезентативные примеры сущностей для каждого домена (2-3 на домен) - domain_attributes: общие атрибуты для каждого домена - area_distribution: сущности, сгруппированные по зонам (если доступно) Примеры: Возвращает количество сущностей по доменам, примеры сущностей и общие атрибуты Рекомендации: - Используйте этот вызов первым, когда исследуете незнакомый экземпляр Home Assistant - Отлично подходит, чтобы понять структуру умного дома - После получения общего обзора используйте domain_summary_tool для более глубокого изучения конкретных доменов

Параметры

Без параметров.

update_card

Заменяет карточку в представлении панели мониторинга (в реальном времени) Аргументы: url_path: URL-путь к панели мониторинга или None для панели по умолчанию. view: Целевое представление (индекс или совпадающее с path/title). card_index: Индекс заменяемой карточки в списке целевых карточек. card: Новый словарь конфигурации карточки (обязательно содержит строку type). section: Для представлений типа "sections" — секция, в которой находится карточка (индекс/заголовок/heading). Обязательно для представлений с секциями. dry_run: Предварительный просмотр без сохранения. Возвращает: Результат сохранения с backup_id или результат пробного запуска.

Параметры
  • cardobject | null
  • card_indexinteger
  • dry_runboolean
  • sectioninteger | string | null
  • url_pathstring | null
  • viewinteger | string
update_view

Обновляет свойства представления - заголовок, путь, значок и т. д. (live) Карточки в представлении сохраняются, если changes не включает ключ cards. Args: url_path: путь URL дашборда или None для дашборда по умолчанию. view: целевое представление (индекс или совпадение по path/title). changes: словарь свойств представления для слияния, например {"title": "New Title"}. dry_run: предварительный просмотр без сохранения. Returns: Возвращает результат сохранения с backup_id или результат предварительного просмотра.

Параметры
  • changesobject | null
  • dry_runboolean
  • url_pathstring | null
  • viewinteger | string

Похожие MCP-сервера

allenporter/mcp-server-home-assistant

allenporter/mcp-server-home-assistant

MCP инструмент для Home Assistant: управляй умным домом через ИИ-ассистентов. Настройка через long-lived токен и конфиг-файл. Автоматизируй сценарии, управляй устройствами и следи за событиями.

Python68
0x1abin/matter-controller-mcp

0x1abin/matter-controller-mcp

MCP-сервер для управления умным домом по протоколу Matter. Помогает находить, подключать и управлять светом, выключателями и датчиками. Поддерживает диммирование, цвет, а также чтение и запись атри...

JavaScript8
apiarya/wemo-mcp-server

apiarya/wemo-mcp-server

MCP сервер для управления устройствами WeMo через естественный язык. AI-ассистенты сканируют сеть, управляют питанием и яркостью, получают статус. Автоматизация умного дома без программирования.

Python1
claymore666/debmatic-mcp

claymore666/debmatic-mcp

ccu-mcp — MCP-сервер для HomeMatic, напрямую подключается к CCU и открывает AI-ассистентам (Claude, Cursor) доступ к устройствам, комнатам и программам. Управляйте отоплением, проверяйте датчики и ...

TypeScript8
Tommertom/sonos-ts-mcp

Tommertom/sonos-ts-mcp

MCP сервер для управления устройствами Sonos через UPnP/SOAP. Контролируйте воспроизведение, громкость, очереди, зоны и будильники прямо из AI-ассистента. Идеально для автоматизации умного дома и н...

TypeScript15
thinq-connect/thinqconnect-mcp

thinq-connect/thinqconnect-mcp

официальный

Официальный MCP-сервер для управления бытовой техникой LG ThinQ. Позволяет отслеживать статус устройств, запрашивать доступные команды и управлять ими (вкл/выкл, настройка температуры и др.) через ...

Python30
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин