这是一个用于与 HomeyPro 家庭自动化系统交互的模型上下文协议(MCP)服务器。该服务器提供了对设备、区域和流程的分页访问,并具有全面的管理功能。
cd python-homey-mcp
uv sync
拉取预构建的 Docker 镜像(支持 AMD64 和 ARM64 架构):
docker pull ghcr.io/pigmej/python-homey-mcp:latest
Docker 镜像是为多种架构构建的:
linux/amd64 - 适用于 Intel/AMD 处理器linux/arm64 - 适用于 ARM 处理器(如 Apple Silicon、Raspberry Pi 等)Docker 将自动拉取适合您系统的架构。
要构建自己的多架构 Docker 镜像:
# 设置 Docker Buildx(一次性设置)
./setup-buildx.sh
# 仅构建当前平台
make docker-build
# 构建 AMD64 和 ARM64
make docker-build-multi
# 构建并推送到注册表
make docker-push
使用 Docker 时无需额外安装步骤。
在运行服务器之前,需要配置您的 HomeyPro 连接:
设置以下环境变量:
export HOMEY_API_URL="http://YOUR_HOMEY_IP_ADDRESS"
export HOMEY_API_TOKEN="YOUR_PERSONAL_ACCESS_TOKEN"
默认情况下,所有单独的工具都已启用。您可以选择禁用或启用特定工具以减少模型混淆:
要禁用特定的单独工具,请设置 HOMEY_DISABLED_TOOLS 环境变量:
# 禁用设备控制和洞察工具(保留设备列表和搜索)
export HOMEY_DISABLED_TOOLS="control_device,get_device_insights"
# 禁用所有设备管理工具
export HOMEY_DISABLED_TOOLS="list_devices,get_device,get_devices_classes,get_devices_capabilities,search_devices_by_name,search_devices_by_class,control_device,get_device_insights"
要仅启用特定的单独工具,请设置 HOMEY_ENABLED_TOOLS 环境变量:
# 仅启用系统信息和区域列表(最小配置)
export HOMEY_ENABLED_TOOLS="get_system_info,list_zones"
# 启用基本的设备和区域管理而不具备控制功能
export HOMEY_ENABLED_TOOLS="get_system_info,list_devices,get_device,list_zones,get_zone_devices"
可用的单独工具:
设备工具:
list_devices - 列出所有设备,支持分页get_device - 获取详细的设备信息get_devices_classes - 列出可用的设备类别get_devices_capabilities - 列出可用的设备功能search_devices_by_name - 按名称搜索设备search_devices_by_class - 按类别搜索设备control_device - 控制设备功能get_device_insights - 获取设备洞察/分析流程工具:
list_flows - 列出所有流程(普通和高级)trigger_flow - 触发特定流程get_flow_folders - 获取流程文件夹结构get_flows_by_folder - 获取特定文件夹中的流程get_flows_without_folder - 获取未在任何文件夹中的流程区域工具:
list_zones - 列出所有区域get_zone_devices - 获取特定区域中的设备get_zone_temp - 获取区域的平均温度系统工具:
get_system_info - 获取系统信息和统计注意:提示和资源始终可用,无论工具配置如何。
要查看哪些工具目前是启用的,可以使用 FastMCP 内置的 list_tools() 方法。禁用的工具不会出现在此列表中,这是预期的行为。
当运行 MCP 服务器时,只有启用的工具才对客户端可用。
工具使用标准的 @mcp.tool() 装饰器并在启动后进行配置:
@mcp.tool().disable() 方法选择性地禁用工具list_tools() 中且无法调用这种方法保持代码简单,同时利用 FastMCP 的原生工具管理。
HOMEY_API_TOKEN 环境变量您可以在以下地方找到 HomeyPro 的 IP 地址:
最简单的运行服务器方式是使用 uvx:
# 设置您的环境变量
export HOMEY_API_URL="http://YOUR_HOMEY_IP_ADDRESS"
export HOMEY_API_TOKEN="YOUR_PERSONAL_ACCESS_TOKEN"
# 使用 uvx 运行
uvx --from . homey-mcp
或者直接使用 FastMCP CLI 运行:
# HTTP 传输(推荐用于测试)
uvx fastmcp run main.py --transport http --host 0.0.0.0 --port 4445
# STDIO 传输(用于 MCP 客户端)
uvx fastmcp run main.py --transport stdio
# 使用 uv run
uv run fastmcp run main.py --transport http --host 0.0.0.0 --port 4445 --log-level DEBUG
# 或者旧的方式
uv run fastmcp run -t http --host 0.0.0.0 -p 4445 -l DEBUG main.py
# 或者使用 Makefile
make run
该项目包含一个综合的 Makefile,其中包含有用的开发命令:
# 设置和安装
make setup # 初始设置(安装 + 检查环境)
make install # 安装依赖项
make check-env # 验证环境配置
# 开发工作流
make test # 运行测试套件
make lint # 运行代码检查
make format # 格式化代码
make clean # 清理生成的文件
# Docker 操作
make docker-build # 为当前平台构建 Docker 镜像
make docker-build-multi # 构建多架构镜像(AMD64 + ARM64)
make docker-push # 构建并推送多架构镜像
make docker-test # 测试 Docker 镜像
# 工具
make info # 显示项目信息
make check-connection # 测试 HomeyPro 连接
您可以直接在 MCP 客户端中安装此服务器,使用 FastMCP:
# 在 Claude Desktop 中安装
uvx fastmcp install claude-desktop main.py \
--env-var HOMEY_API_URL=http://YOUR_HOMEY_IP_ADDRESS \
--env-var HOMEY_API_TOKEN=YOUR_PERSONAL_ACCESS_TOKEN
# 在 Claude Code 中安装
uvx fastmcp install claude-code main.py \
--env-var HOMEY_API_URL=http://YOUR_HOMEY_IP_ADDRESS \
--env-var HOMEY_API_TOKEN=YOUR_PERSONAL_ACCESS_TOKEN
# 在 Cursor 中安装
uvx fastmcp install cursor main.py \
--env-var HOMEY_API_URL=http://YOUR_HOMEY_IP_ADDRESS \
--env-var HOMEY_API_TOKEN=YOUR_PERSONAL_ACCESS_TOKEN
# 生成 MCP JSON 配置
uvx fastmcp install mcp-json main.py \
--env-var HOMEY_API_URL=http://YOUR_HOMEY_IP_ADDRESS \
--env-var HOMEY_API_TOKEN=YOUR_PERSONAL_ACCESS_TOKEN
在 Docker 容器中运行 MCP 服务器:
docker run -p 4445:4445 \
-e HOMEY_API_URL="http://YOUR_HOMEY_IP_ADDRESS" \
-e HOMEY_API_TOKEN="YOUR_PERSONAL_ACCESS_TOKEN" \
ghcr.io/pigmej/python-homey-mcp:latest
或者使用 docker-compose:
version: '3.8'
services:
python-homey-mcp:
image: ghcr.io/pigmej/python-homey-mcp:latest
ports:
- "4445:4445"
environment:
- HOMEY_API_URL=http://YOUR_HOMEY_IP_ADDRESS
- HOMEY_API_TOKEN=YOUR_PERSONAL_ACCESS_TOKEN
服务器将启动并连接到您的 HomeyPro 实例。您会看到连接确认消息。但基本上请参考 FastMCP 文档
该服务器提供上下文感知提示,帮助您更有效地与 HomeyPro 系统互动。这些提示分析您当前的系统状态并提供量身定制的指导。
为控制 HomeyPro 系统中不同类型设备提供结构化的指导。
针对常见 HomeyPro 设备问题的系统诊断指导。
帮助您发现和理解设备功能,而不会被过多细节淹没。
为创建 HomeyPro 自动化流程提供结构化的指导。
提高现有流程性能和可靠性的指导。
系统化的方法来诊断和修复流程问题。
全面的系统健康分析和建议。
指导组织和优化区域结构。
服务器提供智能资源缓存,在 HomeyPro 暂时不可用时自动回退到过期数据。
homey://system/overview)包括设备数量、区域数量和健康指标的综合系统概览。
homey://devices/registry)包含当前状态、功能和在线/离线指示器的完整设备清单。
homey://zones/hierarchy)包含设备关联和父子关系的区域结构。
homey://flows/catalog)包含元数据、状态和执行统计的可用流程。
服务器提供全面的 API 工具,用于直接与 HomeyPro 交互。所有工具都支持分页和详细的错误处理。
list_devices:列出所有设备,支持分页
get_device:获取特定设备的详细信息
get_devices_classes:列出所有可用的设备类别
get_devices_capabilities:列出所有可能的设备功能
search_devices_by_name:按名称搜索设备,支持分页
search_devices_by_class:按类别/类型搜索设备
control_device:控制设备功能
get_device_insights:获取历史设备数据
list_zones:列出所有区域,支持分页
get_zone_devices:获取特定区域中的所有设备
get_zone_temp:获取区域的平均温度
list_flows:列出所有流程(普通和高级),支持分页