/ ディレクトリ / プレイグラウンド / Home Assistant MCP
● コミュニティ homeassistant-ai 🔑 自分のキーが必要

Home Assistant MCP

作者 homeassistant-ai · homeassistant-ai/ha-mcp

家に話しかける。87 のツールがデバイス制御・自動化・ダッシュボード・エネルギー・履歴を網羅し、Claude が Home Assistant のパワーユーザーになる。

ha-mcp は Home Assistant の REST および WebSocket API を MCP ツールとして公開する。照明のオン・オフにとどまらず、自動化の作成、ダッシュボードの編集、履歴・統計のクエリ、HACS アドオンの管理、エンティティレジストリの探索まで対応。Claude がスマートホームを診断し、形を変えることができる。

なぜ使うのか

主な機能

ライブデモ

実際の動作

ha-mcp.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ha-mcp": {
      "command": "uvx",
      "args": [
        "ha-mcp"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ha-mcp": {
      "command": "uvx",
      "args": [
        "ha-mcp"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ha-mcp": {
      "command": "uvx",
      "args": [
        "ha-mcp"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ha-mcp": {
      "command": "uvx",
      "args": [
        "ha-mcp"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ha-mcp",
      "command": "uvx",
      "args": [
        "ha-mcp"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "ha-mcp": {
      "command": {
        "path": "uvx",
        "args": [
          "ha-mcp"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add ha-mcp -- uvx ha-mcp

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Home Assistant MCP

エンティティ ID を覚えずにデバイスを制御する

👤 Home Assistant を運用している方 ⏱ ~5 min beginner

使うタイミング: 「キッチンを 30% の明るさに」という意図はあるが、正確な entity_id がわからないとき。

前提条件
  • Home Assistant の長期アクセストークン — プロフィール → セキュリティ → トークンを作成し、HA_TOKEN 環境変数として保存する
  • HA_URL の設定 — HA_URL=http://homeassistant.local:8123(または実際の URL)を設定する
フロー
  1. エンティティを検索する
    Use ha-mcp. Find entities matching 'kitchen light'. Show entity_id, area, and current state.✓ コピーしました
    → 現在の状態付きで 1〜3 件の候補エンティティが表示される
  2. 変更を適用する
    Set kitchen ceiling lights to 30% brightness, warm white.✓ コピーしました
    → サービスコールが成功し、状態が確認される

結果: 暗記ではなく意図でデバイスを制御できる。

注意点
  • 複数のエンティティが一致し、意図しないものが切り替わった — 一括操作の前に必ず entity_id のリストを確認する。エリアフィルターを使用する

平文の仕様から複雑な自動化を作成する

👤 YAML を避けたい Home Assistant ユーザー ⏱ ~15 min intermediate

使うタイミング: 「外出後に日没以降でキャットフィーダーが空なら通知を送る」という自動化を YAML なしで作りたいとき。

フロー
  1. 意図を説明する
    Use ha-mcp. List my person tracker, sun, and cat feeder entities so we can wire an automation.✓ コピーしました
    → 状態スキーマ付きの関連エンティティが表示される
  2. YAML を生成する
    Create automation 'cat-feeder-sundown-alert' with that logic. Don't deploy yet — show me the YAML.✓ コピーしました
    → チャットに有効な Home Assistant 自動化 YAML が表示される
  3. デプロイしてトレースを確認する
    Deploy it. Then trigger it manually and show the trace so I can verify the conditions fired.✓ コピーしました
    → UI に自動化が追加され、トレースで期待どおりの分岐が確認できる

結果: /config/automations.yaml を手動編集せずに自動化が動作する。

注意点
  • 自動化をデプロイしたがトリガーされない。エンティティ名のタイポ — トレースツールを使用する。entity_id が完全一致しているか確認する

履歴と統計を使って電力消費の急増を調査する

👤 Home Assistant エネルギーダッシュボードを使用しているスマートホームオーナー ⏱ ~25 min intermediate

使うタイミング: 電気代が跳ね上がり、何が変わったかを知りたいとき。

フロー
  1. 合計値を取得する
    Use ha-mcp. Compare total kWh per circuit for last 30 days vs the prior 30. Flag deltas >20%.✓ コピーしました
    → 差分がハイライトされた回路ごとの一覧テーブルが表示される
  2. 最悪の回路を掘り下げる
    For the worst-offending circuit, plot hourly usage for the last 7 days and identify the new pattern.✓ コピーしました
    → 時間別プロファイルと異常パターンの言語的な説明が表示される
  3. 原因デバイスを特定する
    Which entity on that circuit changed behavior? Cross-reference automations that touch it.✓ コピーしました
    → 具体的なデバイスと自動化が特定される

結果: 「EV 充電器が新しいスケジュールで動き始めた」という具体的な答えが得られる。漠然とした疑念ではなく。

注意点
  • センサーのカバレッジ次第で統計の精度が変わる — ギャップを認識し、モニタリングの追加が必要な箇所を提案する

照明・施錠・ブラインド・通知を含む「外出モード」を設定する

👤 旅行に出かける直前の方 ⏱ ~30 min intermediate

使うタイミング: 1 時間後に出発し、在宅シミュレーションと外出モード動作を設定したいとき。

フロー
  1. 対象エンティティを確認する
    Use ha-mcp. List lights in living areas, all door locks, all blinds. Note which are HA-controllable.✓ コピーしました
    → 制御可能フラグ付きのカテゴリ別エンティティリストが表示される
  2. スクリプトを作成する
    Create a script 'vacation_mode_on' that arms locks, randomizes evening lights 18:30–22:30, sets blinds to 50%, and pauses cleaning automations.✓ コピーしました
    → Home Assistant にスクリプトが作成され、手動実行が成功する
  3. トリガーを追加する
    Bind it to an input_boolean 'vacation_mode' so I can toggle from the dashboard.✓ コピーしました
    → ダッシュボードにトグルが追加され、オンにするとスクリプトが実行される

結果: ワンクリックで外出モードに。ダッシュボードを有効にして出発できる。

注意点
  • 室内に人がいるときに自動施錠してしまう — 在宅者チェックを追加する。誰かが在宅中は絶対に施錠しない

組み合わせ

他のMCPと組み合わせて10倍の力を

ha-mcp + filesystem

automations.yaml と scripts.yaml を git にバックアップする

Export all automations and scripts via ha-mcp, write to ./ha-config/, commit.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
search_entities query: str, area?, domain? ほぼ全てのフローの最初のステップ。entity_id を見つける 1 HA API call
call_service domain, service, target, data デバイスやシーンの変更を適用する 1 API call
create_automation yaml_or_object 自動化をプログラムで作成する 1 API call
get_history entity_id, start, end 分析用に状態履歴を取得する 1 API call
get_statistics statistic_id, period (5min|hour|day|month) 長期集計データ(エネルギー・気候など)を取得する 1 API call
trace_automation automation_id, run_id? 自動化がなぜ発火した(しなかった)かをデバッグする 1 API call

コストと制限

運用コスト

APIクォータ
ハードクォータなし — REST API はローカル
呼び出しあたりのトークン
可変。フィルタしないとエンティティレジストリが膨大になる
金額
無料(オープンソース)
ヒント
常に search_entities にフィルターを付けて使うこと。レジストリ全体のダンプはトークンが高くつく

セキュリティ

権限、シークレット、影響範囲

最小スコープ: Long-Lived Access Token (full HA scope)
認証情報の保管: HA_TOKEN 環境変数
データ送信先: HA インスタンスの URL のみ。理想的にはローカルネットワーク内に留める
絶対に付与しない: 信頼できないクラウド LLM に HA トークンを渡さない。このトークンは物理的なアクセス(錠前・ガレージ)を制御する

トラブルシューティング

よくあるエラーと対処法

Home Assistant に接続できない

HA_URL が MCP の実行場所から到達可能か確認する。リバースプロキシの場合は trusted_proxies を確認する

確認: curl $HA_URL/api/ -H 'Authorization: Bearer $HA_TOKEN'
401 Unauthorized

トークンが期限切れまたは失効している。プロフィールで新しい長期トークンを生成する

サービスコールが 400 を返す

サービスのシグネチャが一致していない。開発者ツールパネルでスキーマを確認してから再試行する

自動化をデプロイしたがトリガーされない

trace_automation を使ってどの条件が失敗したか確認する。よくある原因:entity_id のタイポ、または sun 条件のタイムゾーンが誤っている

代替案

Home Assistant MCP 他との比較

代替案代わりに使う場面トレードオフ
Home Assistant native voice assistants (Piper/Whisper)クラウド LLM を経由せずに音声制御したいとき自然言語の柔軟性が低い。セットアップに手間がかかる
ha-mcp-server (legacy/forks)フォーク版に必要な機能がある場合機能が限定的。本家は 87 ツールで積極的にメンテナンスされている

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る