Skip to content

智能家居 MCP 协议 (Smart Home MCP)

概念速览

  • MCP (Model Context Protocol):Anthropic 提出的开放标准,让 LLM 安全访问外部工具与数据源
  • 在智能家居场景:把灯、空调、扫地机、机器人变成 LLM 的「工具」

桥接方案

方案 A:Home Assistant MCP Server

方案 B:Matter Controller MCP

  • 项目matter-mcp-bridge (社区在演进)
  • 能力:直接通过 Matter 协议控制设备

方案 C:自建 MCP Server

# 最小化示例 (基于 mcp python sdk)
from mcp.server.fastmcp import FastMCP
import requests
mcp = FastMCP("home-assistant")
@mcp.tool()
def turn_on_light(entity_id: str, brightness: int = 255) -> str:
"""Turn on a Home Assistant light."""
requests.post(
"http://hass.local:8123/api/services/light/turn_on",
headers={"Authorization": f"Bearer {HA_TOKEN}"},
json={"entity_id": entity_id, "brightness": brightness},
)
return f"Light {entity_id} turned on at {brightness}"

安全模型

  • 本地网络隔离:MCP server 仅监听 127.0.0.1
  • Token 最小权限:用 Home Assistant Long-Lived Access Token 限定到必要 scope
  • 审计日志:所有 LLM 触发的动作写入 HASS logbook
  • 确认门控:危险动作(解锁、关火)需二次确认

典型 Agent 流程

User: "我准备睡觉了"
▼ LLM 推理
▼ 工具调用:
├─ turn_off_all_lights()
├─ lock_front_door()
├─ set_thermostat(20°C)
└─ arm_security_system("home")
▼ HASS 触发自动化
▼ 完成 → Piper TTS 回复 "晚安,已关闭 12 盏灯并锁定大门"

📋 复现条件

类别必备可选 / 备注
硬件HA 主机 (N100 / 树莓派 5) · 智能设备 ≥ 1 个LLM 主机 (Ollama)
操作系统HAOS 14+ / Debian 12 · LLM 端 Ubuntu 22.04+macOS 14
软件版本HA 2024.10+ · ha-mcp-bridge 0.1+ · MCP Python SDK 1.0+Ollama 0.3+
网络局域网千兆公网 (frp / Cloudflare Tunnel)
账号Anthropic / OpenAI API key (云端) 或本地 LLM (无 key)
时间装 ha-mcp-bridge 10 min · 配 entity 白名单 20 min · 跑通 demo 30 min完整安全模型 +1 h
难度⭐⭐⭐ 进阶安全模型设计需思考
前置知识HA 基础 · MCP 协议HA + LLM

⛔ 别这么做 (Anti-patterns)

经验证的坑 —— 跳过 = 至少浪费半天,严重的烧板 / 锁机。

❌ 错误做法💥 后果⚠️ 风险范围
不要在断电前直接拔 Valetudo 改装中的 USB-TTL刷机中途断电 = 变砖。先 dmesg 确认串口没掉再操作。🟡智米扫拖一体 / Roborock S5 Max
不要把米家设备 token 上传到任何第三方云token = 设备控制权,泄漏 = 任何人可远程开门。🔴所有米家 / Aqara 设备
不要在生产 HA 配置里直接编辑 configuration.yaml 后 check_config 不通过就 reload错的 reload 会让 HA 启动失败 → 所有自动化停摆。用 configuration.yaml 备份 + git 版本化。🟢Home Assistant
不要给 Frigate 摄像头内网用 admin/admin 默认密码RTSP / ONVIF 默认账号 = 局域网裸奔。先改密码。🟡海康 / 大华摄像头
不要在 ESPHome 设备上直接 OTA 升级到主版本 (major)主版本常改 NVS 分区。OTA 升级后启动失败 = 拆壳刷机。先 flash USB 一次。🟡ESP32-S3 语音卫星 / 智能开关
不要在智能家居自动化里写死设备 IPDHCP 重启后 IP 变 = 自动化失效。用 hostname / mDNS / 静态租约。🟢Home Assistant / Hubitat
不要在 Matter 设备首次配对时关掉手机蓝牙Matter 配对 = BLE → WiFi handover,全程需要蓝牙。🟢Aqara M3 / Apple Home

🚨 风险总览 (Risk Matrix)

风险等级含义例子
🟢 低改错可回滚 / 几分钟恢复pip 全局装包、DHCP IP 写死
🟡 中需要重新刷机 / 重装 / 1-2 小时恢复装错 ROS 2 版本、没 OTA 升级看版本
🔴 高不可逆 / 烧板 / 安全风险电池反接、micro-ROS 没看门狗、刷机中途断电

参考资料