MCP桥接器

一个Home Assistant的Supervisor插件和自定义集成,用于连接Home Assistant内置的MCP服务器并将MCP工具可用性显示为可发现的HA实体。

  • by Amantux
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Amantux/ha-mcp-bridge

使用说明

HA MCP桥

家庭助理 监督员附加组件 + 自定义集成 连接到 家庭助理的内置 MCP服务器 并将MCP工具可用性视为可发现的HA实体。


添加到家庭助理

步骤1--添加Supervisor存储库

或手动: 设置→ 附加组件→ 附加应用商店→ ⋮ → 仓库 → paste https://github.com/Amantux/ha-mcp-bridge

步骤2——通过HACS添加集成

或者在HACS中手动操作: 集成→ ⋮ → 自定义仓库 → paste https://github.com/Amantux/ha-mcp-bridge → 类别 整合.

步骤3--启动插件,观看它自动显示

安装 HA MCP桥 从附加商店,然后 开始 它 A. 找到新设备 卡片出现在 设置→ 设备和服务 自动。


运作原理

┌──────────────────────────────────────────────────────────────────────┐
│  Supervisor host                                                      │
│                                                                       │
│  ┌──────────────────────────┐        ┌───────────────────────────┐   │
│  │  HA MCP Bridge add-on    │        │  Home Assistant core      │   │
│  │  (Docker container)      │   1    │                           │   │
│  │  main.py starts          │──POST─▶│  Supervisor /discovery    │   │
│  │  register_discovery()    │        │  validates + assigns UUID │   │
│  │                          │        │           │               │   │
│  │  probe_mcp_server()   2  │◀──────▶│  /core/api/mcp_server/sse │   │
│  │  lists MCP tools         │        │  (HA's built-in MCP Srv)  │   │
│  │                          │        │           │ 3             │   │
│  │  ThreadingHTTPServer     │        │           ▼               │   │
│  │  GET /health             │        │  async_step_hassio()      │   │
│  │  GET /status  ◀──────────│────────│  validate /health    4    │   │
│  │                          │        │           │               │   │
│  └──────────────────────────┘        │           ▼               │   │
│                                      │  async_step_hassio_       │   │
│                                      │    confirm()              │   │
│                                      │  _set_confirm_only()  5   │   │
│                                      │  → "New device found"     │   │
│                                      │     badge in UI           │   │
│                                      │           │ user clicks   │   │
│                                      │           ▼               │   │
│                                      │  coordinator polls        │   │
│                                      │  /status every 60 s       │   │
└──────────────────────────────────────┴───────────────────────────┘   
# 什么 为什么
1 register_discovery() POST到 http://supervisor/discovery "discovery" 在 config.json 只是一个allowlist——插件必须发出调用,否则HA永远不会触发 async_step_hassio.
2 附加探头 /core/api/mcp_server/sse 通过Supervisor代理 不需要用户令牌-- SUPERVISOR_TOKEN 自动注射。检查HA的MCP服务器是否已启用,并列出可用工具。
3 主管转发 HassioServiceInfo(uuid, config) 到HA核心 context={"source": SOURCE_HASSIO} → HA路线 async_step_hassio (不是 async_step_discovery,仅限于mDNS/DHCP)。
4 async_step_hassio 验证 /health 在显示UI之前 快速失败。如果插件尚未准备就绪,请彻底中止,不发出孤立通知。
5 async_step_hassio_confirm 电话 _set_confirm_only() 这是一个召唤 “找到新设备” 徽章。如果没有它,流程将悄无声息地完成,没有可见的通知。

实体

实体 州 注释
sensor.*_status ok /错误字符串 附加活性
sensor.*_mcp_tool_count integer HA MCP服务器公开的工具; 0 如果MCP服务器未启用;属性包括工具名称和错误

先决条件:启用HA的MCP服务器

对于 mcp_tool_count 要显示非零值,请启用内置集成:

设置→ 设备和服务→ 添加集成→ 搜索“MCP服务器” → 安装。


选项

设置→ 设备和服务→ HA MCP桥→ 配置

选项 默认值 范围
轮询间隔 60秒 10-3600秒

发展

# Test add-on locally (no Supervisor token = discovery skipped, MCP probe skipped)
python3 addon/main.py
curl http://127.0.0.1:8099/health
curl http://127.0.0.1:8099/status

# Version bump checklist (both files must match):
# 1. config.json          "version": "x.y.z"
# 2. manifest.json        "version": "x.y.z"
# 3. CHANGELOG.md         new entry
# 4. git commit && git push
# → CI validates version sync, auto-creates GitHub Release for HACS

看 更改日志.md 完整的历史。