Hubitat MCP 服务器
通过Maker API实现Hubitat Elevation家庭自动化的模型上下文协议服务器
  ](https://nodejs.org/)
将您的Hubitat Elevation智能家居中心与Claude和其他MCP兼容应用程序集成。通过自然语言控制设备、监控状态、管理模式并自动化您的家庭。
______________________________________________________________________
🚀 特性
- 📱 设备控制 -打开/关闭设备、设置级别、调整颜色和执行任何支持的命令
- 📊 实时监控 -查询设备状态、属性和最近发生的事件
- 🏠 模式管理 -查看和更改集线器模式(Home、Away、Night等)
- 🛡️ HSM集成 -控制Hubitat安全监视器(启用/解除/状态)
- 🔢 中心变量 -读写自动化逻辑的中心变量
- ⚡ 全面制造商API支持 -完成所有创客API端点的实现
- 🔒 安全 -使用访问令牌,验证所有输入,从不存储凭据
- 📝 TypeScript -完全类型化,提供出色的IDE支持和更少的错误
📦 安装
先决条件
- Hubitat高程 本地网络上的集线器
- 制造商API 在Hubitat中心安装和配置应用程序
- Node.js 18或更高(可选-仅当您想在本地构建/测试时)
快速开始
# Clone the repository
git clone https://github.com/MvdMunnik26/Hubitat-MCP.git
cd Hubitat-MCP
# That's it! No build required when using npx tsx method
# Configure Claude Desktop (see Step 3 below) and you're ready可选:本地测试
如果要在本地测试服务器:
# Install dependencies
npm install
# Create configuration file
cp .env.example .env
# Edit .env with your Hubitat details
# HUBITAT_HOST=10.10.1.250
# HUBITAT_APP_ID=688
# HUBITAT_ACCESS_TOKEN=your_token_here
# Option 1: Run with tsx (no build needed)
npx tsx src/index.ts
# Option 2: Build and run
npm run build
npm start⚙️ 配置
步骤1:在Hubitat上启用创客API
- 打开您的Hubitat中心web界面
- 导航到 应用 → 添加内置应用程序
- 选择 制造商API
- 选择要授权的设备
- 注意 应用程序ID 和 访问令牌 显示在应用程序中
步骤2:配置环境变量
创建 .env 项目根目录中的文件:
HUBITAT_HOST=192.168.1.100 # Your hub's IP address
HUBITAT_APP_ID=123 # From Maker API app
HUBITAT_ACCESS_TOKEN=abc123... # From Maker API app步骤3:添加到Claude桌面
将此添加到您的Claude Desktop配置文件中:
地点:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
推荐配置(直接运行TypeScript,无需构建):
{
"mcpServers": {
"hubitat": {
"command": "npx",
"args": [
"-y",
"tsx",
"/absolute/path/to/Hubitat-MCP/src/index.ts"
],
"env": {
"HUBITAT_HOST": "192.168.1.100",
"HUBITAT_APP_ID": "123",
"HUBITAT_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}示例(Windows):
{
"mcpServers": {
"hubitat": {
"command": "npx",
"args": [
"-y",
"tsx",
"C:\\AI-projects\\Hubitat-MCP\\src\\index.ts"
],
"env": {
"HUBITAT_HOST": "192.168.1.100",
"HUBITAT_APP_ID": "123",
"HUBITAT_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}替代方案:运行编译版本(需要构建):
{
"mcpServers": {
"hubitat": {
"command": "node",
"args": ["/absolute/path/to/Hubitat-MCP/dist/index.js"],
"env": {
"HUBITAT_HOST": "192.168.1.100",
"HUBITAT_APP_ID": "123",
"HUBITAT_ACCESS_TOKEN": "your_access_token_here"
}
}
}
}步骤4:重新启动克劳德桌面
完全退出并重新启动Claude Desktop,以便MCP服务器连接。
🎯 使用示例
列出所有设备
User: "List all my Hubitat devices"
Claude: Uses hubitat_list_devices tool控制设备
User: "Turn on the living room light"
Claude: Uses hubitat_send_command with device ID and "on" command
User: "Set the bedroom light to 50%"
Claude: Uses hubitat_send_command with "setLevel" and parameter "50"检查设备状态
User: "Is the front door locked?"
Claude: Uses hubitat_get_attribute to check "lock" attribute
User: "What's the temperature in the bedroom?"
Claude: Uses hubitat_get_attribute to check "temperature" attribute更改模式
User: "Set the house to away mode"
Claude: Uses hubitat_get_modes to find mode ID, then hubitat_set_mode安全监视器
User: "Arm the security system for away"
Claude: Uses hubitat_set_hsm with "armAway"🔧 可用工具
MCP服务器为Claude提供以下工具:
设备管理
hubitat_list_devices-列出所有授权设备hubitat_get_device-获取详细的设备信息hubitat_send_command-向设备发送命令 具有自动重试逻辑hubitat_get_attribute-获取当前属性值hubitat_get_events-获取最近的设备事件
⚡ 自动重试逻辑
电池供电设备支持: 服务器会自动重试可能处于睡眠模式的电池供电的Z-Wave设备(恒温器、锁等)的命令。
支持的命令:
- 恒温器设定点(
setHeatingSetpoint,setCoolingSetpoint) - 调光器级别(
setLevel) - 交换机(
on,off) - 锁(
lock,unlock)
重试策略:
- 立即发送初始命令
- 如果未验证:等待2秒,重试
- 如果仍未验证:再等待5秒,重试
- 如果仍未验证:再等待10秒,最后重试
- 报告成功/失败,并提供详细的验证信息
示例响应:
{
"success": true,
"device": { /* device details */ },
"verification": {
"attribute": "heatingSetpoint",
"expectedValue": "20.0",
"attempts": 2,
"message": "Command verified after 1 retry(s) (2s wait)"
}
}中心变量
hubitat_list_variables-列出所有中心变量hubitat_get_variable-获取变量值hubitat_set_variable-设置变量值
模式和安全
hubitat_get_modes-获取可用模式hubitat_set_mode-更改集线器模式hubitat_get_hsm_status-获取HSM状态hubitat_set_hsm-设置HSM状态
📚 API 文档
设备命令
大多数设备支持的常见命令:
- 开关:
on,off,toggle - 调光器:
setLevel(0-100) - 彩色灯泡:
setColor(色调、饱和度、级别),setHue,setSaturation - 锁:
lock,unlock - 恒温器:
setHeatingSetpoint,setCoolingSetpoint,setThermostatMode - 通用的:
refresh
设备属性
您可以查询的常见属性:
- 开关:开/关
- 水平:0-100(调光级别)
- 温度:当前温度
- 湿度:当前湿度
- 锁:锁定/解锁
- 联系:打开/关闭(门/窗)
- 运动:活动/非活动
- 存在:存在/不存在
HSM状态值
armAway-手臂移开armHome-Arm主页armNight-手臂之夜disarm-解除所有武装disarmAll-解除所有武装armRules-手臂定制规则disarmRules-解除自定义规则的武装cancelAlerts-取消提醒
🔒 安全
- 访问令牌安全:您的创客API访问令牌提供对授权设备的完全控制。保持安全。
- 本地网络:此MCP服务器直接与本地网络(无云)上的Hubitat集线器通信。
- 无凭据存储:凭据作为环境变量传递,从不存储在代码中。
- 输入验证:所有输入都使用Zod模式进行验证。
- HTTPS支持:使用
https://在HUBITAT_HOST如果您的集线器启用了HTTPS。
安全最佳实践
- 永不承诺
.env文件 -它包含您的访问令牌 - 使用
.env.example作为模板 - 定期旋转令牌 -如果泄露,在Maker API中生成新的访问令牌
- 限制设备访问 -仅在Maker API中授权必要的设备
- 网络安全 -将Hubitat集线器保持在安全的本地网络上
🛠️ 发展
构建
npm run build开发模式(手表)
npm run dev运行测试
npm test棉绒
npm run lint📖 进一步阅读
🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'feat: add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
请遵循常规提交格式。
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- 为 模型上下文协议
- 由...驱动 Hubitat高程
- 使用 MCP TypeScript SDK
🐛 故障排除
服务器无法启动
- 检查节点版本:
node --version(必须≥18) - 验证
.env文件:确保设置了所有必需的变量 - 测试集线器连接:
ping - Check Maker API:确保应用程序已安装,设备已授权
设备没有响应
- 验证设备授权:检查Maker API应用程序设置
- 手动测试终点:尝试访问
http:///apps/api//devices?access_token=在浏览器中 - 检查设备ID:使用
hubitat_list_devices查看正确的ID
克劳德看不到服务器
- 重新启动克劳德桌面:完全退出并重新打开
- 检查配置:验证
claude_desktop_config.json是正确的 - 检查日志:在Claude Desktop日志文件夹中查找错误
- 验证路径:确保绝对路径
index.js是正确的
📞 支持
- 问题:
- 讨论:
- Hubitat社区: Hubitat社区论坛
______________________________________________________________________
由...制作❤️ 智能家居社区
