mcpField
H
Home Assistant MCP Server

Home Assistant MCP Server

本地服务
github.com其他029 周前更新

关于 Home Assistant MCP Server

Home Assistant MCP Server 让 AI Agent 管理 Home Assistant 仪表板、自动化、文件、应用、实体和系统设置。它结合 REST、WebSocket 与 SSH/SFTP;配置 SSH 后还可使用文件操作。

主要功能

  1. 01管理 Lovelace 仪表板及配置
  2. 02创建和编辑自动化、脚本与场景
  3. 03通过 SFTP 管理文件
  4. 04管理应用与系统设置
  5. 05查询实体并调用服务
  6. 06查看历史、事件和日历

适用场景

  1. 01部署 Lovelace 仪表板配置
  2. 02更新 Home Assistant 自动化
  3. 03向 Home Assistant 实例上传文件
  4. 04检查实体状态或调用服务

MCP 相关

该 MCP 服务向 MCP 客户端提供 Home Assistant 管理工具,通过 REST、WebSocket 和 SSH/SFTP 通信。文件工具需要配置 SSH。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jarahkon-hass": {
"command": "npx",
"args": [
"-y",
"@jarahkon/hass-mcp-server"
],
"env": {
"HA_URL": "<HA_URL>",
"HA_TOKEN": "<HA_TOKEN>",
"HA_SSH_HOST": "<HA_SSH_HOST>",
"HA_SSH_PORT": "<HA_SSH_PORT>",
"HA_SSH_USER": "<HA_SSH_USER>",
"HA_SSH_KEY_PATH": "<HA_SSH_KEY_PATH>",
"HA_SSH_PASSWORD": "<HA_SSH_PASSWORD>"
}
}
}
}
启动命令npx -y @jarahkon/hass-mcp-server
需要配置的环境变量
HA_URLHome Assistant base URL (e.g. http://homeassistant.local:8123)
HA_TOKEN密钥Home Assistant long-lived access token
HA_SSH_HOSTSSH hostname for file management (optional)
HA_SSH_PORTSSH port (default: 22)
HA_SSH_USERSSH username (must be root)
HA_SSH_KEY_PATH密钥Path to SSH private key
HA_SSH_PASSWORD密钥SSH password (alternative to key)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@jarahkon/hass-mcp-server1.0.6

工具

66

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

hass-mcp-server

hass-mcp-server

npm version CI License: MIT

用于全面控制 Home Assistant 的 MCP 服务。AI Agent(GitHub Copilot、Claude 等)可以管理您的仪表板、自动化、文件、应用、实体等,让您无需亲自操作 HA 设置。

安装 VS Code 扩展 在 VS Code 中安装 在 VS Code Insiders 中安装

功能

  • 仪表板管理 — 创建、更新、删除 Lovelace 仪表板,并部署完整的仪表板配置
  • 文件管理 — 通过 SFTP 在您的 HA 实例上上传、读取、列出和删除文件(例如自定义卡片、图片、HTML 文件)
  • 自动化、脚本、场景 — 对自动化、脚本和场景执行完整的增删改查操作
  • 输入辅助工具 — 创建和管理 input_boolean、input_number、input_text、input_select、input_datetime、input_button、counter 和 timer 辅助工具
  • 应用管理 — 安装、启动、停止、重启、卸载和配置应用(附加组件)
  • 实体与服务控制 — 查询状态、调用服务、渲染模板、浏览实体/设备/区域注册表
  • 系统工具 — 系统信息、配置验证、备份、重启核心、错误日志
  • 事件与日历工具 — 列出事件类型、触发事件、查询日历

66 个工具,分为 5 个类别,使用 HA 的三种传输层:REST API、WebSocket API 和 SSH/SFTP。

前提条件

  • Home Assistant OS(或任何带有 Supervisor 的 HA 安装)
  • 长期有效访问令牌 — 在 HA → 个人资料 → 安全 → 长期有效访问令牌中创建
  • Node.js 20+
  • (可选)SSH 应用 — 仅文件管理工具需要。从应用商店安装“Advanced SSH & Web Terminal”。

快速开始

无需安装 — MCP 客户端会通过 npx 自动运行服务。只需将配置添加到客户端,即可开始使用。

配置

服务通过 MCP 客户端配置文件中的环境变量进行配置。客户端会在启动时将这些变量注入服务进程 — 无需设置系统级环境变量。

必需变量
变量说明示例
HA_URLHome Assistant 基础 URLhttp://homeassistant.local:8123
HA_TOKEN长期访问令牌(来自 HA 个人资料 → 安全)
可选变量(用于文件管理)

文件管理工具需要 SSH 访问权限。请参阅下方的设置 SSH。

变量说明示例
HA_SSH_HOSTSSH 主机名homeassistant.local
HA_SSH_PORTSSH 端口(默认:22)22
HA_SSH_USERSSH 用户名(必须为 root)root
HA_SSH_KEY_PATHSSH 私钥路径请参阅各操作系统的示例
HA_SSH_PASSWORDSSH 密码(可替代密钥)(你的密码)
获取长期访问令牌
  1. 打开 Home Assistant 界面
  2. 点击个人资料图标(左下角)
  3. 在“安全”选项卡下滚动到长期访问令牌
  4. 点击创建令牌,为其命名并复制令牌

MCP 客户端设置

选择适用于你的 MCP 客户端的设置方式。无论选择哪种方式,添加配置后,客户端都会通过 npx 自动下载并运行服务。

提示: 如果不需要文件管理工具,可以省略 HA_SSH_* 变量。服务会在不启用 SFTP 的情况下启动,只有尝试使用文件工具时才会失败。

VS Code(GitHub Copilot)
选项 A:安装扩展(推荐)

最简单的方式 — 从 VS Code Marketplace 安装 Home Assistant MCP Server 扩展。它会自动注册 MCP 服务并安全存储你的凭据。

  1. 从 Marketplace 安装扩展(或在“扩展”视图中搜索 “Home Assistant MCP Server”)。
  2. 在“设置”中设置 Home Assistant URL → homeAssistantMcp.url。
  3. 从命令面板(Ctrl+Shift+P)运行 "Home Assistant MCP: Set Access Token"。
  4. MCP 服务会自动显示在 Copilot Chat 中。

如需使用文件管理功能,请配置 SSH 设置(homeAssistantMcp.ssh.*),并可选择运行 "Home Assistant MCP: Set SSH Password"。

选项 B:通过 mcp.json 一键安装

点击本 README 顶部的徽章,或使用下方链接。VS Code 会提示你输入 Home Assistant URL 和访问令牌。

在 VS Code 中安装
选项 C:手动设置 mcp.json

在工作区中创建 .vscode/mcp.json(或将配置添加到用户设置中以供全局使用):

{
  "inputs": [
    {
      "type": "promptString",
      "id": "ha-url",
      "description": "Home Assistant base URL (e.g. http://homeassistant.local:8123)"
    },
    {
      "type": "promptString",
      "id": "ha-token",
      "description": "Home Assistant long-lived access token",
      "password": true
    }
  ],
  "servers": {
    "home-assistant": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@jarahkon/hass-mcp-server@latest"],
      "env": {
        "HA_URL": "${input:ha-url}",
        "HA_TOKEN": "${input:ha-token}"
      }
    }
  }
}

启用 SSH(用于文件管理工具):

{
  "inputs": [
    {
      "type": "promptString",
      "id": "ha-url",
      "description": "Home Assistant base URL (e.g. http://homeassistant.local:8123)"
    },
    {
      "type": "promptString",
      "id": "ha-token",
      "description": "Home Assistant long-lived access token",
      "password": true
    }
  ],
  "servers": {
    "home-assistant": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@jarahkon/hass-mcp-server@latest"],
      "env": {
        "HA_URL": "${input:ha-url}",
        "HA_TOKEN": "${input:ha-token}",
        "HA_SSH_HOST": "homeassistant.local",
        "HA_SSH_USER": "root",
        "HA_SSH_KEY_PATH": "/home/you/.ssh/ha_ed25519"
      }
    }
  }
}
Claude Desktop

编辑 Claude Desktop 配置文件:

OS配置文件路径
Windows%APPDATA%\Claude\claude_desktop_config.json
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "home-assistant": {
      "command": "npx",
      "args": ["-y", "@jarahkon/hass-mcp-server@latest"],
      "env": {
        "HA_URL": "http://homeassistant.local:8123",
        "HA_TOKEN": "your_long_lived_access_token_here"
      }
    }
  }
}
Cursor

编辑 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "home-assistant": {
      "command": "npx",
      "args": ["-y", "@jarahkon/hass-mcp-server@latest"],
      "env": {
        "HA_URL": "http://homeassistant.local:8123",
        "HA_TOKEN": "your_long_lived_access_token_here"
      }
    }
  }
}
其他 MCP 客户端

任何支持 stdio 服务的 MCP 客户端都可使用。将 npx 用作命令,并将 -y @jarahkon/hass-mcp-server@latest 作为参数,然后在 env 区块中传入 HA_URL 和 HA_TOKEN。

设置 SSH(用于文件管理)

文件管理工具(ha_upload_file、ha_read_file、ha_list_files 等)需要 SSH 访问您的 Home Assistant 实例。

1. 在 Home Assistant 中安装 SSH 应用
  1. 在 HA 中,前往 设置 → 应用 → 应用商店
  2. 安装 Advanced SSH & Web Terminal
  3. 在应用配置中,将用户名设为 root(SFTP 所必需),并启用 sftp: true
  4. 配置身份验证——设置密码或将您的公钥添加到 authorized_keys(推荐)
  5. 启动应用并检查日志,确认其已成功启动
2. 生成 SSH 密钥(推荐)

基于密钥的身份验证比密码更安全。

# Generate a key pair (leave passphrase empty for automated use)
ssh-keygen -t ed25519 -f ~/.ssh/ha_ed25519 -C "ha-mcp-server"

这会创建 ~/.ssh/ha_ed25519(私钥)和 ~/.ssh/ha_ed25519.pub(公钥)。

将公钥内容添加到 HA 中的应用配置:

ssh:
  username: root
  password: ""
  authorized_keys:
    - "ssh-ed25519 AAAA...contents of ha_ed25519.pub..."
  sftp: true
3. 在 MCP 客户端配置中添加 SSH 变量

在 MCP 客户端配置 env 区块中,将以下环境变量与 HA_URL 和 HA_TOKEN 一同添加:

"HA_SSH_HOST": "homeassistant.local",
"HA_SSH_USER": "root",
"HA_SSH_KEY_PATH": "/home/you/.ssh/ha_ed25519"

或者使用密码身份验证:

"HA_SSH_HOST": "homeassistant.local",
"HA_SSH_USER": "root",
"HA_SSH_PASSWORD": "your_ssh_password_here"
SSH 密钥路径示例
OSHA_SSH_KEY_PATH 示例
WindowsC:/Users/you/.ssh/ha_ed25519
macOS/Users/you/.ssh/ha_ed25519
Linux/home/you/.ssh/ha_ed25519

工具参考

仪表盘(6 个工具)
工具描述
ha_list_dashboards列出所有 Lovelace 仪表盘
ha_create_dashboard使用 url_path、title、icon 创建新仪表盘
ha_update_dashboard更新仪表盘属性(title、icon、侧边栏可见性)
ha_delete_dashboard按 ID 删除仪表盘
ha_get_dashboard_config获取仪表盘的完整 Lovelace 配置 JSON
ha_save_dashboard_config将完整的 Lovelace 配置部署到仪表盘
文件(7 个工具)— 需要 SSH
工具描述
ha_list_files列出 HA 上某个目录中的文件(相对于 /config/)
ha_read_file读取 HA 上的文件内容
ha_upload_file通过 SFTP 将本地文件上传到 HA
ha_upload_file_content将字符串内容直接写入 HA 上的文件
ha_delete_file删除 HA 上的文件(仅限安全目录)
ha_mkdir在 HA 上创建目录
ha_file_exists检查 HA 上的文件或目录是否存在
自动化、脚本、场景与助手(17 个工具)
工具描述
ha_list_automations列出所有自动化
ha_get_automation按 ID 获取指定自动化的配置
ha_create_automation创建新的自动化
ha_update_automation更新现有自动化
ha_delete_automation删除自动化
ha_list_scripts列出所有脚本
ha_create_script创建新脚本
ha_update_script更新现有脚本
ha_delete_script删除脚本
ha_list_scenes列出所有场景
ha_create_scene创建新场景
ha_update_scene更新现有场景
ha_delete_scene删除场景
ha_list_helpers列出所有输入助手(布尔值、数字等)
ha_create_helper创建任意类型的输入助手
ha_update_helper更新现有助手
ha_delete_helper删除助手
应用与系统(18 个工具)
工具描述
ha_list_addons列出所有已安装应用及其状态
ha_addon_info获取特定应用的详细信息
ha_install_addon按 slug 安装应用
ha_start_addon启动应用
ha_stop_addon停止应用
ha_restart_addon重启应用
ha_uninstall_addon卸载应用
ha_addon_options获取或设置应用配置选项
ha_system_info获取系统信息(core、OS、supervisor、主机)
ha_check_config重新加载前验证 HA 配置
ha_create_backup创建完整或部分备份
ha_list_backups列出所有备份
ha_restart_core重启 Home Assistant core
ha_check_api检查 HA API 是否可访问并正常响应
ha_get_config获取 HA 配置(位置、单位、版本、组件)
ha_update_core_config更新 core 配置(内部/外部 URL、位置、单位)
ha_get_components列出所有已加载的 HA 集成/组件
ha_get_error_log获取 Home Assistant 错误日志内容
实体与服务(18 个工具)
工具描述
ha_get_states获取所有实体状态(可按域筛选)
ha_get_entity获取特定实体的完整状态和属性
ha_call_service调用任意 HA 服务(turn_on、turn_off、notify 等)
ha_list_services按域列出可用服务
ha_render_template渲染 Jinja2 模板
ha_list_entity_registry列出实体注册表中的实体
ha_list_devices列出所有设备
ha_list_areas列出所有区域(房间)
ha_create_area创建新区域
ha_get_history获取实体在一段时间内的状态历史
ha_get_logbook获取日志簿条目(活动日志),可按实体筛选
ha_get_events列出所有可用事件类型
ha_fire_event触发自定义事件以启动自动化
ha_set_state设置或创建实体状态(虚拟传感器、覆盖值)
ha_delete_state删除实体状态
ha_get_calendars列出所有日历实体
ha_get_calendar_events获取特定日历中的事件
ha_handle_intent处理对话/语音意图

架构

该服务使用三种传输层与 Home Assistant 通信:

层用途库
REST API(/api/...)服务调用、状态、历史记录、模板、Supervisor 代理、自动化/脚本/场景的 CRUD 操作内置 fetch
WebSocket API(/api/websocket)仪表板 CRUD 操作、辅助项 CRUD 操作、实体注册表ws
SSH/SFTP在 HA 文件系统上上传/下载/列出/删除文件ssh2-sftp-client
src/
├── index.ts              # MCP server entry point, registers all tools
├── config.ts             # Environment variable parsing and validation
├── ha/
│   ├── rest-client.ts    # REST API client with auth header
│   ├── ws-client.ts      # WebSocket client with auto-reconnect
│   └── sftp-client.ts    # SFTP client with path safety checks
└── tools/
    ├── dashboards.ts     # 6 dashboard tools
    ├── files.ts          # 7 file management tools
    ├── automations.ts    # 17 automation/script/scene/helper tools
    ├── addons.ts         # 18 app and system tools
    └── entities.ts       # 18 entity and service tools

vscode-extension/         # VS Code Marketplace extension wrapper
└── src/
    └── extension.ts      # Registers MCP server via mcpServerDefinitionProviders API

安全注意事项

  • SFTP 路径限制:允许在 /config/ 下的任意位置执行读取操作。写入和删除操作仅限于安全子目录(www/、custom_components/、themes/、blueprints/、scripts/、automations/)和指定文件(configuration.yaml、automations.yaml、scripts.yaml、scenes.yaml)。禁止对 deps/ 或 .storage/ 等系统目录执行写入操作。
  • 令牌安全:切勿提交 .env 文件。.gitignore 已将其排除。
  • SSH 身份验证:优先使用基于 SSH 密钥的身份验证(HA_SSH_KEY_PATH),而不是密码。切勿将私钥或密码提交到源代码管理中。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。