这是一个基于 Python 和 FastMCP 构建的 Model Context Protocol (MCP) 服务器,用于连接 Home Assistant。 它允许 AI 代理通过 WebSocket API 直接控制 Home Assistant 实例,查询状态,调用服务等。
- 连接管理: 自动连接 Home Assistant WebSocket API,支持断线重连。
- 全面控制: 暴露了核心 HA 功能给 AI:
list_entities: 获取所有实体状态。get_entity: 获取特定实体详情。call_service: 调用任何 HA 服务(如开关灯、播放媒体、运行自动化)。fire_event: 触发事件。render_template: 渲染 Jinja2 模板以获取复杂数据。get_config: 获取 HA 配置。get_services: 获取可用服务列表。get_areas: 获取区域位置列表。get_timezone: 获取 Home Assistant 实例的时区设置。
- 克隆项目或下载代码。
- 安装依赖:
pip install -r requirements.txt
修改 config.yaml 文件:
homeassistant:
ws_url: "ws://YOUR_HA_IP:8123/api/websocket"
token: "YOUR_LONG_LIVED_ACCESS_TOKEN"- ws_url: Home Assistant 的 WebSocket 地址。如果是本地运行,通常是
ws://localhost:8123/api/websocket。如果配置了 HTTPS,请使用wss://。 - token: 在 Home Assistant 用户资料页面生成的“长期访问令牌”。
运行测试脚本确保能连接到 Home Assistant:
python test_connection.py使用 fastmcp 运行:
fastmcp run src/main.py:mcp或者如果你将其集成到 Claude Desktop 或其他 MCP 客户端,请指向此命令。
此 MCP 服务器提供了工具让你可以操作 Home Assistant。
- 当你需要查看家里有什么设备时,使用
list_entities。 - 当你需要控制设备(如开灯)时,使用
call_service。例如:- domain:
light - service:
turn_on - target:
{"entity_id": "light.living_room"}
- domain:
- 你可以使用
render_template来查询复杂的状态,例如{{ states('sensor.temperature') }}。
src/ha_client.py: 处理 WebSocket 连接、认证和协议交互的核心逻辑。src/main.py: FastMCP 服务器定义,将 HA 功能映射为 MCP 工具。src/config.py: 配置加载器。