HA MCP客户端——家庭助理AI聊天机器人
______________________________________________________________________
英语
概述
HA MCP客户端是一个定制的家庭助理集成,它添加了一个功能齐全的人工智能聊天机器人,具有深度的智能家居控制功能。它连接到大型语言模型(Anthropic Claude、OpenAI GPT、Ollama或任何与OpenAI兼容的API),并公开 62工具 让AI通过自然对话查询、控制和管理您的家庭助理安装的几乎所有方面。
主要特点
- AI聊天面板 --专用侧边栏面板(“AI聊天“)具有对话历史记录、搜索和多对话管理功能
- 62智能家居工具 --全面覆盖家庭助理服务领域,包括灯光、盖子、气候、锁、风扇、开关、媒体播放器、摄像头、阀门、计时器、计数器等
- CRUD操作 --通过对话创建、读取、更新和删除区域、标签、自动化、脚本、场景、日历事件和待办事项
- 4 AI提供商 --Anthropic Claude、OpenAI、Ollama(本地)和OpenAI兼容API(LM Studio、vLLM等)
- HA辅助集成 --在Home Assistant的内置辅助管道中充当对话代理
- MCP服务器 --通过模型上下文协议(SSE)为外部MCP客户端公开工具
- 持久历史 --对话历史记录存储在本地数据库中,具有可配置的保留期
- 双语用户界面 --英文和繁体中文界面
建筑
┌─────────────────────────────────────────────────┐
│ Home Assistant │
│ │
│ ┌──────────┐ ┌────────────┐ ┌─────────────┐ │
│ │ Chat │ │ HA Assist │ │ MCP SSE │ │
│ │ Panel │ │ Pipeline │ │ Server │ │
│ │ (iframe) │ │ │ │ (external) │ │
│ └────┬─────┘ └─────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └──────────────┼────────────────┘ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Conversation │ │
│ │ Entity │ │
│ └────────┬─────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ AI Service (Anthropic/OpenAI/Ollama) │ │
│ │ + Tool Calling Loop (max N iterations) │ │
│ └─────────────────┬───────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ Tool Registry — 62 Tools │ │
│ │ helpers.py (implementations) │ │
│ │ registry.py (schemas + handlers) │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘安装
HACS(推荐)
- 将此存储库添加为HACS中的自定义存储库
- 搜索“HA MCP客户端”并安装
- 重新启动家庭助理
- 首选 设置>设备和服务>添加集成>HA MCP客户端
手册
- 复制
custom_components/ha_mcp_client文件夹到您的家庭助理config/custom_components/目录 - 重新启动家庭助理
- 首选 设置>设备和服务>添加集成>HA MCP客户端
配置
安装向导将指导您完成4个步骤:
| 步骤 | 选项 |
|---|---|
| 1.特点 | 启用MCP服务器,启用会话代理 |
| 2.MCP服务器 | 服务器端口(默认:8087) |
| 3.人工智能服务 | 提供程序选择、API密钥、模型、基本URL |
| 4.对话 | 历史开/关、保留天数、系统提示、最大工具调用数 |
支持的AI模型:
| 提供者 | 模型 |
|---|---|
| Anthropic | claude-sonnet-4-20250514,claude-opus-4-20250514,claude-3.5-sonnet,claude-35-haiku,claude-3 opus |
| 开放人工智能 | gpt-4涡轮增压器、gpt-4o、gpt-40-mini、gpt-4、gpt-3.5涡轮增压器 |
| 奥拉玛 | calla3.2,calla3.1,Mistral,Mixtral,Codecalla,Phi3,Gemma2 |
| OpenAI 兼容 | 通过自定义基本URL(LM Studio、vLLM等)的任何模型 |
工具(共62个)
Entity & Service (4)
| 工具 | 说明 |
|---|---|
get_entity_state | 获取任何实体的当前状态和属性 |
search_entities | 按名称、域、区域或设备搜索实体 |
call_service | 直接致电任何家庭助理服务 |
list_services | 列出所有可用的服务和域 |
Area & Label Management (8)
| 工具 | 说明 |
|---|---|
list_areas | 列出所有区域 |
create_area | 创建新区域 |
update_area | 更新区域名称、图标、别名 |
delete_area | 删除区域 |
list_labels | 列出所有标签 |
create_label | 创建新标签 |
update_label | 更新标签属性 |
delete_label | 删除标签 |
Entity Assignment (3)
| 工具 | 说明 |
|---|---|
assign_entity_to_area | 将实体分配给区域 |
assign_entity_to_labels | 为实体分配标签 |
list_devices | 列出设备,可选择按区域筛选 |
Automation (6)
| 工具 | 说明 |
|---|---|
list_automations | 列出所有具有状态的自动化 |
create_automation | 创建新的自动化(YAML) |
update_automation | 更新自动化触发器/动作/模式 |
delete_automation | 删除自动化 |
toggle_automation | 启用或禁用自动化 |
trigger_automation | 手动触发自动化 |
Script (5)
| 工具 | 说明 |
|---|---|
list_scripts | 列出所有脚本 |
create_script | 创建新脚本(YAML) |
update_script | 更新脚本序列/模式/字段 |
delete_script | 删除脚本 |
run_script | 执行脚本 |
Scene (5)
| 工具 | 说明 |
|---|---|
list_scenes | 列出所有场景 |
create_scene | 创建新场景(YAML) |
update_scene | 更新场景实体/状态 |
delete_scene | 删除场景 |
activate_scene | 激活场景 |
Calendar (4)
| 工具 | 说明 |
|---|---|
create_calendar_event | 创建日历事件 |
list_calendar_events | 列出日期范围内的事件 |
update_calendar_event | 更新现有事件 |
delete_calendar_event | 删除日历事件 |
Todo (5)
| 工具 | 说明 |
|---|---|
add_todo_item | 添加待办事项 |
list_todo_items | 列出待办事项 |
update_todo_item | 重命名或更改todo的状态 |
remove_todo_item | 删除待办事项 |
remove_completed_todo_items | 删除所有已完成的项目 |
Device Controls (14)
| 工具 | 说明 |
|---|---|
control_light | 开/关/切换、亮度、色温、RGB |
control_switch | 开/关/拨动开关 |
control_cover | 打开/关闭/停止/切换、位置、倾斜 |
control_climate | 暖通空调模式、温度、风扇/摆动/预设模式、湿度 |
control_fan | 开/关/切换、速度、方向、振荡 |
control_lock | 锁定/解锁 |
control_media_player | 播放/暂停/停止、音量、来源、搜索、声音模式 |
control_camera | 快照、播放流、录制 |
control_timer | 开始/暂停/取消/结束计时器 |
control_counter | 递增/递减/重置计数器 |
control_input_helper | 设置input_boolean/数字/文本/选择/日期时间 |
control_valve | 打开/关闭/停止/切换,位置 |
control_number | 设置数字实体值(带最小/最大验证) |
control_persistent_notification | 创建/取消持久通知 |
Utilities (8)
| 工具 | 说明 |
|---|---|
send_notification | 通过通知服务发送通知 |
speak_tts | 文本转语音输出 |
manage_backup | 创建家庭助理备份 |
list_blueprints | 列出自动化/脚本蓝图 |
import_blueprint | 从URL导入蓝图 |
control_shopping_list | 添加/删除/完成购物清单项目 |
get_history | 获取历史状态更改 |
system_overview | 获取系统概述(实体计数、域、区域) |
用法示例
通过聊天面板:
打开“AI聊天“侧边栏项目并开始用自然语言聊天:
- “把客厅里的灯都关掉”
- “卧室里的温度是多少?”
- “创建一个在日落时打开门廊灯的自动化系统”
- “将牛奶添加到购物清单中”
- “在过去的一个小时里,车库门怎么了?”
- “将卧室窗帘打开50%”
通过HA协助:
在辅助设置中选择“HA MCP客户端”作为对话代理,然后使用辅助对话框或语音命令。
通过MCP协议:
将任何兼容MCP的客户端连接到 http://your-ha:8087/sse 以编程方式使用所有62个工具。
服务
| 服务 | 描述 |
|---|---|
ha_mcp_client.clear_conversation_history | 清除所有对话历史记录 |
ha_mcp_client.export_conversation_history | 将历史记录导出为JSON或Markdown |
项目结构
custom_components/ha_mcp_client/
├── __init__.py # Integration setup, services, panel registration
├── config_flow.py # Multi-step configuration wizard
├── const.py # Constants and defaults
├── conversation.py # Conversation entity + AI tool-calling loop
├── conversation_recorder.py # Persistent conversation history (SQLite)
├── views.py # REST API endpoints for chat panel
├── manifest.json # Integration metadata
├── services.yaml # Service definitions
├── frontend/ # Chat panel UI (HTML/JS/CSS)
├── translations/ # en.json, zh-Hant.json
├── ai_services/ # AI provider implementations
│ ├── anthropic.py # Anthropic Claude
│ ├── openai.py # OpenAI GPT
│ ├── ollama.py # Ollama (local)
│ └── openai_compatible.py # OpenAI-compatible APIs
└── mcp/
├── server.py # MCP SSE server for external clients
└── tools/
├── registry.py # 62 tool definitions + handlers
└── helpers.py # Tool implementation logic需求
- 家庭助理2024.1+
- Python 3.11+
- 已配置受支持的AI提供商之一
许可证
MIT许可证
______________________________________________________________________
繁体中文
概览
HA MCP Client是一个Home Assistant自定义整合元件,为你的智慧家庭加入功能完整的AI聊天机器人。它连接大型语言模型(Anthropic Claude、OpenAI GPT、Ollama或任何OpenAI兼容API),并提供 62个工具,让AI透过自然对话查询、控制及管理你的Home Assistant系统。
主要功能
- AI 聊天面板 —专属的侧边栏面板(「AI聊天」),支持对话历史、搜寻与多对话管理
- 62个智慧家庭工具 —完整涵盖Home Assistant服务域,包括灯光、窗帘、空调、门锁、风扇、开关、媒体播放器、摄像机、阀门、定时器、计数器等
- CRUD 操作 —透过对话建立、读取、更新和删除区域、标签、自动化、脚本、情境、日历事件和待办事项
- 4种AI供应商 — Anthropic Claude、OpenAI、Ollama(本地)和 OpenAI 相容 API(LM Studio、vLLM 等)
- HA Assist 整合 —可作为Home Assistant内置Assist管道的对话代理使用
- MCP 伺服器 —透过Model Context Protocol(SSE)开放工具供外部MCP客户端使用
- 持久化历史 —对话历史储存于本地数据库,可设定保留天数
- 双语界面 —英文与繁体中文界面
构架
┌─────────────────────────────────────────────────┐
│ Home Assistant │
│ │
│ ┌──────────┐ ┌────────────┐ ┌─────────────┐ │
│ │ 聊天 │ │ HA Assist │ │ MCP SSE │ │
│ │ 面板 │ │ 管道 │ │ 伺服器 │ │
│ │ (iframe) │ │ │ │ (外部存取) │ │
│ └────┬─────┘ └─────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ └──────────────┼────────────────┘ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 對話實體 │ │
│ │ Conversation │ │
│ └────────┬─────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ AI 服務 (Anthropic/OpenAI/Ollama) │ │
│ │ + 工具呼叫迴圈 (最多 N 次迭代) │ │
│ └─────────────────┬───────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ 工具註冊表 — 62 個工具 │ │
│ │ helpers.py (實作邏輯) │ │
│ │ registry.py (定義 + 處理器) │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘安装方式
HACS(建议)
- 在HACS中新增此储存库为自定义储存库
- 搜寻“HA MCP Client”并安装
- 重启Home Assistant
- 前往 设定>装置与服务>新增整合> HA MCP Client
手动安装
- 将
custom_components/ha_mcp_client文件夹复制到Home Assistant的config/custom_components/目录 - 重启Home Assistant
- 前往 设定>装置与服务>新增整合> HA MCP Client
设定
设定精灵会引导你完成4个步骤:
| 步骤 | 选项 |
|---|---|
| 1.功能选择 | 启用MCP服务器、启用对话代理 |
| 2. MCP 伺服器 | 服务器端口(预设:8087) |
| 3. AI服务 | 供应商选择、API密钥、模型、Base URL |
| 4.对话设定 | 历史开/关、保留天数、系统提示、最大工具呼叫次数 |
支援的 AI 模型:
| 供应商 | 模型 |
|---|---|
| Anthropic | claude-sonnet-4-20250514,claude-opus-4-20250514,claude-3.5-sonnet,claude-35-haiku,claude-3 opus |
| 开放人工智能 | gpt-4涡轮增压器、gpt-4o、gpt-40-mini、gpt-4、gpt-3.5涡轮增压器 |
| 奥拉玛 | calla3.2,calla3.1,Mistral,Mixtral,Codecalla,Phi3,Gemma2 |
| OpenAI 相容 | 透过自定义Base URL使用任何模型(LM Studio、vLLM等) |
工具(共62个)
實體與服務 (4)
| 工具 | 说明 |
|---|---|
get_entity_state | 取得任意实体的状态和属性 |
search_entities | 依名称、域、区域或装置搜寻实体 |
call_service | 直接呼叫Home Assistant任意服务 |
list_services | 列出所有可用服务与域 |
區域與標籤管理 (8)
| 工具 | 说明 |
|---|---|
list_areas | 列出所有区域 |
create_area | 建立新区域 |
update_area | 更新区域名称、图标、别名 |
delete_area | 删除区域 |
list_labels | 列出所有标签 |
create_label | 建立新标签 |
update_label | 更新标签属性 |
delete_label | 删除标签 |
實體指派 (3)
| 工具 | 说明 |
|---|---|
assign_entity_to_area | 将实体指派到区域 |
assign_entity_to_labels | 为实体指派标签 |
list_devices | 列出装置(可依区域筛选) |
自動化 (6)
| 工具 | 说明 |
|---|---|
list_automations | 列出所有自动化及状态 |
create_automation | 建立新自动化(YAML) |
update_automation | 更新自动化触发器/动作/模式 |
delete_automation | 删除自动化 |
toggle_automation | 启用或停用自动化 |
trigger_automation | 手动触发自动化 |
腳本 (5)
| 工具 | 说明 |
|---|---|
list_scripts | 列出所有脚本 |
create_script | 建立新脚本(YAML) |
update_script | 更新脚本序列/模式/字段 |
delete_script | 删除脚本 |
run_script | 执行脚本 |
情境 (5)
| 工具 | 说明 |
|---|---|
list_scenes | 列出所有情境 |
create_scene | 建立新情境(YAML) |
update_scene | 更新情境实体/状态 |
delete_scene | 删除情境 |
activate_scene | 启动情境 |
日曆 (4)
| 工具 | 说明 |
|---|---|
create_calendar_event | 建立日历事件 |
list_calendar_events | 列出日期范围内的事件 |
update_calendar_event | 更新现有事件 |
delete_calendar_event | 删除日历事件 |
待辦事項 (5)
| 工具 | 说明 |
|---|---|
add_todo_item | 新增待办事项 |
list_todo_items | 列出待办事项 |
update_todo_item | 重新命名或更改待办状态 |
remove_todo_item | 移除待办事项 |
remove_completed_todo_items | 移除所有已完成项目 |
裝置控制 (14)
| 工具 | 说明 |
|---|---|
control_light | 开/关/切换、亮度、色温、RGB |
control_switch | 开/关/切换开关 |
control_cover | 开/关/停/切换窗帘、位置、倾斜 |
control_climate | HVAC模式、温度、风扇/摆动/预设模式、湿度 |
control_fan | 开/关/切换、风速、方向、摆动 |
control_lock | 上锁/开锁 |
control_media_player | 播放/暂停/停止、音量、来源、快转、音效模式 |
control_camera | 快照、串流播放、录像 |
control_timer | 启动/暂停/取消/完成定时器 |
control_counter | 递增/递减/重设计数器 |
control_input_helper | 設定 input_boolean/number/text/select/datetime |
control_valve | 开/关/停/切换阀门、位置 |
control_number | 设定数值实体值(含最小/最大验证) |
control_persistent_notification | 建立/关闭持久通知 |
工具程式 (8)
| 工具 | 说明 |
|---|---|
send_notification | 透过notify服务发送通知 |
speak_tts | 文字转语音输出 |
manage_backup | 建立Home Assistant备份 |
list_blueprints | 列出自动化/脚本蓝图 |
import_blueprint | 从URL汇入蓝图 |
control_shopping_list | 新增/移除/完成购物清单项目 |
get_history | 取得历史状态变更 |
system_overview | 取得系统概览(实体数、域、区域) |
使用示例
透过聊天面板:
开启侧边栏的「AI聊天」项目,用自然语言开始对话:
- 「把客厅的灯全部关掉」
- 「卧室现在几度?」
- 「建立一个在日落时开启门廊灯的自动化」
- 「把牛奶加到购物清单」
- 「车库门最近一小时发生了什么?」
- 「把卧室窗帘设到50%开」
透过HA Assist:
在Assist设定中选择「HA MCP Client」作为对话代理,即可使用Assist对话框或语音指令。
透过MCP协定:
将任何MCP兼容客户端连接到 http://your-ha:8087/sse,即可程序化使用全部62个工具。
服务
| 服务 | 说明 |
|---|---|
ha_mcp_client.clear_conversation_history | 清除所有对话历史 |
ha_mcp_client.export_conversation_history | 导出历史为JSON或Markdown |
项目结构
custom_components/ha_mcp_client/
├── __init__.py # 整合設定、服務、面板註冊
├── config_flow.py # 多步驟設定精靈
├── const.py # 常數與預設值
├── conversation.py # 對話實體 + AI 工具呼叫迴圈
├── conversation_recorder.py # 持久化對話歷史(SQLite)
├── views.py # 聊天面板 REST API 端點
├── manifest.json # 整合元資料
├── services.yaml # 服務定義
├── frontend/ # 聊天面板 UI(HTML/JS/CSS)
├── translations/ # en.json, zh-Hant.json
├── ai_services/ # AI 供應商實作
│ ├── anthropic.py # Anthropic Claude
│ ├── openai.py # OpenAI GPT
│ ├── ollama.py # Ollama(本地)
│ └── openai_compatible.py # OpenAI 相容 API
└── mcp/
├── server.py # MCP SSE 伺服器(供外部客戶端使用)
└── tools/
├── registry.py # 62 個工具定義 + 處理器
└── helpers.py # 工具實作邏輯系统需求
- 家庭助理2024.1+
- Python 3.11+
- 已设定其中一种支持的AI供应商
授权条款
MIT许可证
