Token导航 LogoToken导航TokenDH.com
hass MCP (Achetronic) logo
AI代理SSE官方级别未说明来源级核验

hass MCP (Achetronic)

MCP Server

一个将Home Assistant功能暴露给AI助手的MCP服务器,支持通过Model Context Protocol实现智能家居控制。

工具数

12

提示词数

0

GitHub Stars

4

资源数

0
智能家居物联网GoClaude自动化控制ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

achetronic

提供方

achetronic

最后核验

2026/5/17 20:41

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

一个MCP服务器,向AI助手公开家庭助理功能。内置Go,它使Claude、Cursor或OpenAI等AI客户端能够通过 模型上下文协议.

特性

  • 实体管理:查询、搜索和控制家庭助理实体
  • 服务调用:通过AI执行任何家庭助理服务
  • 系统洞察:获取概述、域摘要和实体历史记录
  • 故障排除:访问错误日志和自动化状态
  • 柔性运输:支持stdio(本地)和HTTP(远程)模式
  • 生产就绪:包括OAuth支持、JWT验证、Dockerfile和Helm chart

可用工具

工具说明
get_version获取家庭助理版本
get_entity获取特定实体的状态(可选过滤)
entity_action打开、关闭或切换实体(使用参数)
list_entities列出具有可选域/搜索筛选器的实体
search_entities按名称、ID或属性搜索实体
domain_summary获取域的统计信息和状态分布
system_overview全面了解HA系统
list_automations列出所有自动化及其状态
call_service呼叫任何家庭助理服务(低级API)
get_history获取实体的状态更改历史记录
get_error_log检索家庭助理错误日志
restart_ha重新启动家庭助理

快速开始

需求

  • 转到1.24或更高版本(仅适用于从源代码构建)
  • 具有API访问权限的Home Assistant实例
  • 来自Home Assistant的长期访问令牌

获取家庭助理令牌

  1. 导航到您的家庭助理实例
  2. 点击您的个人资料(左下角)
  3. 滚动到“长期访问令牌”
  4. 创建新令牌并复制它

安装

从源代码构建

git clone https://github.com/achetronic/hass-mcp.git
cd hass-mcp
make build

二进制文件将在以下时间创建 bin/hass-mcp-{os}-{arch}.

码头工人

docker pull ghcr.io/achetronic/hass-mcp:latest

或者在本地构建:

make docker-build IMG=your-registry/hass-mcp:latest

配置

根据中的示例创建配置文件 docs/:

标准模式(本地客户端)

server:
  name: "Home Assistant MCP"
  version: "0.1.0"
  transport:
    type: "stdio"

home_assistant:
  url: "${HA_URL}" # e.g., http://homeassistant.local:8123
  token: "${HA_TOKEN}" # Long-lived access token

HTTP模式(远程客户端)

基本HTTP服务器(专用网络)

对于内部使用或开发,您可以在不进行身份验证的情况下运行一个简单的HTTP服务器:

server:
  name: "Home Assistant MCP"
  version: "0.1.0"
  transport:
    type: "http"
    http:
      host: ":8080"

home_assistant:
  url: "${HA_URL}"
  token: "${HA_TOKEN}"

使用OAuth 2.1的HTTP服务器(公开)

对于面向公众的部署,服务器支持 OAuth 2.1 通过JWT验证。这可以通过将身份验证委托给身份提供者(Keycloak、Auth0、Okta等)来实现远程AI客户端(如Claude Web或ChatGPT)的安全访问。

服务器实现:

  • RFC 8414:OAuth授权服务器元数据(/.well-known/oauth-authorization-server)
  • RFC 9728:OAuth保护的资源元数据(/.well-known/oauth-protected-resource)
server:
  name: "Home Assistant MCP"
  version: "0.1.0"
  transport:
    type: "http"
    http:
      host: ":8080"

home_assistant:
  url: "${HA_URL}"
  token: "${HA_TOKEN}"

middleware:
  jwt:
    enabled: true
    validation:
      strategy: "local" # Validate JWTs internally using JWKS
      local:
        jwks_uri: "https://keycloak.example.com/realms/mcp-servers/protocol/openid-connect/certs"
        cache_interval: "10s"
        # Optional: CEL expressions to validate JWT claims
        allow_conditions:
          - expression: 'payload.groups.exists(g, g == "home-assistant-users")'

oauth_authorization_server:
  enabled: true
  issuer_uri: "https://keycloak.example.com/realms/mcp-servers"

oauth_protected_resource:
  enabled: true
  resource: "https://hass-mcp.example.com/mcp"
  auth_servers:
    - "https://keycloak.example.com/realms/mcp-servers"
  scopes_supported:
    - openid
    - profile
小贴士:如果你有一个验证JWT的上游代理(例如Istio),你可以使用 strategy: "external" 并配置 forwarded_header 以从代理接收经过验证的JWT。
备注:环境变量支持使用 ${VAR} 语法。

docs/config-http.yaml 以获得完整的配置示例。

用法

本地客户端(克劳德桌面、光标、VS代码)

对于本地AI客户端,请使用stdio传输。添加到您的客户端配置中:

克劳德桌面版 (claude_desktop_config.json):

{
  "mcpServers": {
    "home-assistant": {
      "command": "/path/to/hass-mcp",
      "args": ["--config", "/path/to/config-stdio.yaml"],
      "env": {
        "HA_URL": "http://homeassistant.local:8123",
        "HA_TOKEN": "your-token-here"
      }
    }
  }
}

光标 (.cursor/mcp.json):

{
  "mcpServers": {
    "home-assistant": {
      "command": "/path/to/hass-mcp",
      "args": ["--config", "/path/to/config-stdio.yaml"],
      "env": {
        "HA_URL": "http://homeassistant.local:8123",
        "HA_TOKEN": "your-token-here"
      }
    }
  }
}

远程客户端(Claude Web、OpenAI)

对于远程客户端,请使用HTTP传输:

export HA_URL="http://homeassistant.local:8123"
export HA_TOKEN="your-token-here"
./hass-mcp --config config-http.yaml

默认情况下,服务器在端口8080上启动。可用端点取决于您的配置:

端点描述启用时
/mcpMCP协议端点始终
/.well-known/oauth-authorization-serverOAuth元数据(RFC 8414)oauth_authorization_server.enabled: true
/.well-known/oauth-protected-resource受保护的资源元数据(RFC 9728)oauth_protected_resource.enabled: true

发展

# Run the server
make run

# Format code
make fmt

# Run linter
make lint

# Run linter with auto-fix
make lint-fix

# Build binary
make build

# Show all available targets
make help

部署

Kubernetes

Helm图表在 chart/ 目录:

# Update dependencies
helm dependency update ./chart

# Install
helm install hass-mcp ./chart \
  --set config.home_assistant.url="http://homeassistant.local:8123" \
  --set config.home_assistant.token="your-token-here"

在中配置值 chart/values.yaml 以适应您的环境。

生产建议

  • 认证:在生产中使用反向代理(例如Istio、Traefik)进行JWT验证
  • OAuth:为远程客户端身份验证启用OAuth端点
  • 会话相关性:运行多个副本时,使用一致的哈希路由器进行会话关联
  • 秘密:将令牌存储在Kubernetes secrets或外部秘密管理器中

项目结构

├── cmd/main.go              # Application entry point
├── api/                     # Configuration types
├── internal/
│   ├── hass/                # Home Assistant API client
│   ├── tools/               # MCP tool implementations
│   ├── handlers/            # HTTP endpoint handlers
│   ├── middlewares/         # HTTP/JWT middlewares
│   ├── config/              # Configuration loading
│   └── globals/             # Application context
├── docs/                    # Example configurations
└── chart/                   # Helm chart for Kubernetes

运作原理

flowchart LR
    A[AI Assistant
Claude, Cursor, etc.] |MCP Protocol
stdio or HTTP/SSE| B[hass-mcp
Server]
    B |REST API| C[Home Assistant
Instance]
  1. AI助手通过mcp连接到hass-mcp(本地客户端为stdio,远程客户端为HTTP/SSE)
  2. 助手可以发现可用的工具并调用它们
  3. hass-mcp将工具调用转换为Home Assistant REST API请求
  4. 结果以结构化格式返回给助手

相关链接

贡献

欢迎捐款。请在提交pull请求之前打开一个问题来讨论更改。

许可证

此项目根据Apache 2.0许可证获得许可。看 许可证 了解详情。

目录标签

目录标签

智能家居物联网GoClaude自动化控制本地部署AI助手集成HomeAssistant

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

SSE

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

12

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

SSEoauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP