Skip to content

willianfu/ha-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Home Assistant MCP Server

这是一个基于 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 实例的时区设置。

安装

  1. 克隆项目或下载代码。
  2. 安装依赖:
    pip install -r requirements.txt

配置

修改 config.yaml 文件:

homeassistant:
  ws_url: "ws://YOUR_HA_IP:8123/api/websocket"
  token: "YOUR_LONG_LIVED_ACCESS_TOKEN"
  1. ws_url: Home Assistant 的 WebSocket 地址。如果是本地运行,通常是 ws://localhost:8123/api/websocket。如果配置了 HTTPS,请使用 wss://
  2. token: 在 Home Assistant 用户资料页面生成的“长期访问令牌”。

使用方法

1. 测试连接

运行测试脚本确保能连接到 Home Assistant:

python test_connection.py

2. 启动 MCP 服务器

使用 fastmcp 运行:

fastmcp run src/main.py:mcp

或者如果你将其集成到 Claude Desktop 或其他 MCP 客户端,请指向此命令。

AI 使用指南 (Prompt 提示)

此 MCP 服务器提供了工具让你可以操作 Home Assistant。

  • 当你需要查看家里有什么设备时,使用 list_entities
  • 当你需要控制设备(如开灯)时,使用 call_service。例如:
    • domain: light
    • service: turn_on
    • target: {"entity_id": "light.living_room"}
  • 你可以使用 render_template 来查询复杂的状态,例如 {{ states('sensor.temperature') }}

开发结构

  • src/ha_client.py: 处理 WebSocket 连接、认证和协议交互的核心逻辑。
  • src/main.py: FastMCP 服务器定义,将 HA 功能映射为 MCP 工具。
  • src/config.py: 配置加载器。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages