Homey-Wan-Kenobi MCP について
Homey-Wan-Kenobi MCPは、Homey Proを管理するセルフホスト可能なMCPサーバーです。デバイス制御やフロー作成に加え、エネルギー情報とZ-Wave/Zigbeeの診断に対応し、stdioとstreamable-HTTPを利用できます。
主な機能
- 01デバイスとゾーンの制御・管理
- 02フローの作成・編集・実行
- 03エネルギーレポートとセンサー履歴の確認
- 04Z-WaveとZigbeeネットワークの診断
- 05バックアップ・メモリ・ストレージの確認
活用シーン
- 01自然言語でHomey Proのデバイスを操作
- 02Homeyの自動化フローを新規作成・調整
- 03エネルギー使用量やセンサー履歴の調査
- 04無線メッシュネットワークや接続の問題を調査
MCP 対応
Homey Proのデバイス、フロー、エネルギー、診断機能をツールとプロンプトとしてMCPクライアントに公開します。stdioとstreamable-HTTPに対応し、セルフホストできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e HOMEY_ADDRESS -e HOMEY_TOKEN docker.io/ringosystems/homey-wan-kenobi:2.2.0HOMEY_ADDRESSBase URL of your Homey Pro local API, e.g. http://192.168.1.10HOMEY_TOKENシークレットHomey local API key (my.homey.app > Settings > API keys)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Homey-Wan-Kenobi MCP
Homey Pro スマートホームシステムを、Model Context Protocol を通じて操作する MCP サーバーです。
名前は、自然言語による操作を実現する、あなたの家にとって唯一の希望である Obi-Wan Kenobi にちなんでいます。
デバイス操作、フロー作成、自動化、監視、トラブルシューティング、ネットワーク診断、セルフホスト可能なデプロイに対応する 60 のツールと 3 つのナレッジプロンプトを備えています。
Homey-Wan-Kenobi を選ぶ理由
Athom は公式の Homey MCP Server を提供しています。これは、Claude または ChatGPT の有料プランに追加し、Homey アカウントでサインインする、クラウド仲介型のリモートコネクターです。デバイスの状態確認と操作、デバイス名の変更と移動、Flow と Advanced Flow の作成、更新、開始、Moods の設定に対応しています。
このサーバーは 2 つの点で異なります。セルフホスト可能であるため、サードパーティの仲介サービスや有料 AI プランを必要とせず、stdio またはストリーミング可能な HTTP 経由で自分で実行できます。また、公式サーバーで説明されている機能には含まれていない、パワーユーザー向けの運用機能を追加しています。
以下の表は、2026 年 6 月時点で Athom が公開している説明に基づいています。Athom は正式なツール一覧を公開していないため、右側の不足機能は Athom の説明から推測したものであり、Athom が明言した内容ではありません。
| 機能 | 公式 Homey MCP(mcp.athom.com) | Homey-Wan-Kenobi |
|---|---|---|
| ホスティング | クラウド仲介型のリモートコネクター | セルフホスト可能、stdio または HTTP、仲介サービス不要 |
| アクセス | Claude/ChatGPT の有料コネクタープラン | 任意の MCP クライアント、プラン不要 |
| デバイス、ゾーン、操作、名前変更、移動 | 対応 | 対応 |
| Flow と Advanced Flow の作成 | 対応 | 対応 |
| Moods | 対応 | 対応 |
| フローカードのスキーマ検出(ゼロからフローを作成) | 説明なし | 対応 |
| エネルギー:現在の電力と日/週/月/年ごとのレポート | 説明なし | 対応 |
| インサイト:センサーおよびメーターの履歴データ | 説明なし | 対応 |
| 対処方法を含む Z-Wave および Zigbee メッシュ診断 | 説明なし | 対応 |
| アプリのメモリーと使用状況の分析(削除候補) | 説明なし | 対応 |
| インフラ運用:バックアップ、再起動、更新、メモリー、ストレージ | 説明なし | 対応 |
| Homey Web API の直接パススルー | 説明なし | 対応 |
| 公開 MCP レジストリへの登録 | なし | あり |
実際の機能の深さ
- 公式サーバーが説明していないネットワーク診断。
diagnose_zwave_networkとdiagnose_zigbee_networkは、コントローラーの健全性を確認し、最終確認からの経過時間(バッテリー駆動でスリープする機器を考慮)に基づいて各ノードを評価し、送信失敗をグループ化して利用不可のデバイスと照合し、深刻度順に対処方法を返します。get_zwave_logでは、ネットワークログの生データを確認できます。 - エネルギーとインサイトの分析。 ゾーンやデバイスごとのリアルタイム消費電力、日・週・月・年ごとのエネルギーレポート、タイムスタンプ付きのセンサーおよびメーターの履歴データを利用できるため、「現在、何が電力を消費しているか」や「今週、寝室の温度はどのように推移したか」といった質問にモデルが回答できます。
- アプリのメモリと使用状況の分析。
analyze_app_usageは、すべてのアプリについて RAM、デバイス数、フローからの参照を相互に照合し、安全に削除できる候補を特定して、削減量を推定します。読み取り専用で、アドバイスのみを提供します。 - オートメーションを一から作成。 フローカード検出エンジン(
list_flow_cards、get_flow_card)は、各カードの引数スキーマ全体を返します。さらに、標準フローとAdvanced Flowの完全なCRUD(削除を含む)に対応しており、AIがUUIDを使ってカードグラフ全体を作成・削除できます。 - 1つのインターフェースからインフラストラクチャを操作。 バックアップ、再起動、アップデートの確認、メモリとストレージの使用状況、ドライバー、LEDリング、セッション、位置情報を扱えます。
- 将来に備えた回避策。
homey_api_callを使うと、任意のHomey Web APIエンドポイントに直接アクセスできるため、ツールの更新を待たずに新しいファームウェア機能を利用できます。
堅牢化された非rootの node:22-alpine イメージ上で動作し、すべてのビルドとリリースはTrivyスキャンに合格する必要があります。また、Docker Hub、GHCR、公開MCP Registryで公開されています。全機能の一覧は、以下のツールリファレンスを参照してください。
公式サーバーが適している場合
このサーバーはローカルファーストでセルフホスト可能です。それが強みであると同時に、トレードオフでもあります。次のような場合は、公式のHomey MCPがより手軽な選択肢です。
- セットアップ不要のマネージドホスティング。 URLを1つ追加して、Homeyアカウントでサインインするだけです。実行、公開、保守が必要なコンテナーはなく、ワンクリックで使えるChatGPTアプリもあります。
- どこからでも安全にリモートアクセス。 Athomがクラウド経由で接続を仲介するため、LAN上で何も公開せずに外出先から利用できます。このサーバーのHTTPモードは、信頼できるローカルネットワークでの利用を想定しています。リモートで利用する場合は、ご自身でVPNまたは認証付きリバースプロキシをご用意ください。
- すべてのHomeyモデルに対応。 公式エンドポイントはHomey Cloud、Pro、Pro mini、Self-Hosted Serverに接続でき、ローカルAPIのないクラウド専用の構成にも対応します。このサーバーは、ローカルAPIまたはAthomトークンでアクセスできるHomeyを対象としているため、Homey Proで最もよく機能します。
- ファーストパーティのサポート。 Athomが保守し、ファームウェアに合わせて更新され、ClaudeおよびChatGPTアプリでの公式テストも実施されています。このプロジェクトは独立して運営されており、ベストエフォートで提供されています。
2つのサーバーは相互補完的です。手軽なリモート操作には公式コネクターを使い、詳細なローカル診断、エネルギー分析、インフラストラクチャの操作にはこのサーバーを使う方も多くいます。Athomは正式なツール一覧を公開していないため、公式サーバーには上記に記載されていない機能が含まれている可能性もあります。
クイックスタート
git clone https://github.com/Ringosystems/Homey-Wan-Kenobi-MCP.git
cd Homey-Wan-Kenobi-MCP
npm install
npm run build
Homeyを認証します。
npx homey login
npx homey select
MCPクライアントの設定(Kiro、Claude Desktop、Clineなど)に追加します。
{
"mcpServers": {
"homey": {
"command": "node",
"args": ["/path/to/Homey-Wan-Kenobi-MCP/dist/index.js"]
}
}
}
認証
このサーバーでは、2つの認証方法を利用できます。
**Homey CLI(推奨)**では、npx homey login と npx homey select を実行します。サーバーは、保存されているOAuthトークンを ~/.athom-cli/settings.json から自動的に読み込みます。
ローカルAPIキーは、my.homey.appで作成します。環境変数を設定してください。
export HOMEY_ADDRESS=http://192.168.1.x
export HOMEY_TOKEN=your-api-key
ローカルAPIキー方式は、セルフホスト環境でコンテナーを実行する場合に推奨されます。マウントされたCLI設定ファイルに依存しないためです。
セルフホスト(Docker / HTTP)
イメージは ringosystems/homey-wan-kenobi で公開されており(ghcr.io/ringosystems/homey-wan-kenobi にもミラーされています)、サーバーは io.github.Ringosystems/homey-wan-kenobi-mcp として MCP Registry に登録されています。node:22-alpine をベースに構築され、root 以外のユーザーとして実行されます。また、あらかじめ組み込まれたシークレットはありません。監査の詳細については、SECURITY.md を参照してください。
デフォルトでは stdio トランスポートを使用するため、MCP クライアントから直接起動できます。また、MCP_TRANSPORT=streamable-http を設定すると、長時間稼働する streamable-HTTP サービスを公開します(/mcp では supergateway 経由、ヘルスチェックは /healthz)。
最速:コマンド 1 つ(ビルド済みイメージ)
クローンもビルドも不要です。必要なものを 2 つ取得して起動します。
curl -fsSLO https://raw.githubusercontent.com/Ringosystems/Homey-Wan-Kenobi-MCP/main/docker-compose.deploy.yml
printf 'HOMEY_ADDRESS=http://192.168.1.x\nHOMEY_TOKEN=your-local-api-key\n' > .env
docker compose -f docker-compose.deploy.yml up -d
サービスは http://<host>:8000/mcp で利用できます(ヘルスチェックは /healthz)。Unraid では、代わりに URL からテンプレートを追加します。Docker、Add Container の順に選択し、https://raw.githubusercontent.com/Ringosystems/Homey-Wan-Kenobi-MCP/main/deploy/unraid/homey-wan-kenobi.xml を Template フィールドに貼り付けてください。イメージはマルチアーキテクチャ対応のため、x86 および ARM(Apple Silicon、Raspberry Pi)ホストで実行できます。
/mcpエンドポイントには認証機能が組み込まれていません。信頼できる LAN 内で使用するか、TLS と認証を追加するリバースプロキシの背後に配置してください。
MCP クライアントとして実行(stdio)
docker run -i --rm \
-e HOMEY_ADDRESS=http://192.168.1.x \
-e HOMEY_TOKEN=your-local-api-key \
ringosystems/homey-wan-kenobi:latest
HTTP サービスとして実行
docker run -d -p 8000:8000 \
-e MCP_TRANSPORT=streamable-http \
-e HOMEY_ADDRESS=http://192.168.1.x \
-e HOMEY_TOKEN=your-local-api-key \
--restart unless-stopped \
ringosystems/homey-wan-kenobi:latest
Docker Compose
docker-compose.yml と同じディレクトリにある .env ファイルを使って、Homey の認証情報を指定します。
cat > .env <<'EOF'
HOMEY_ADDRESS=http://192.168.1.x
HOMEY_TOKEN=your-local-api-key
EOF
# Pull the published image, or add --build to build locally instead
docker compose up -d
付属の docker-compose.yml は公開イメージを参照し(ローカルビルド用のフォールバックとして build: . を使用)、コンテナを強化する設定(読み取り専用のルートファイルシステム、Linux ケイパビリティの削除、no-new-privileges、メモリと PID の制限)を適用します。
services:
homey-wan-kenobi:
image: ringosystems/homey-wan-kenobi:latest
build: .
container_name: homey-wan-kenobi
ports:
- "8000:8000"
environment:
MCP_TRANSPORT: streamable-http
HOMEY_ADDRESS: "${HOMEY_ADDRESS:-http://192.168.1.x}"
HOMEY_TOKEN: "${HOMEY_TOKEN:-}"
restart: unless-stopped
read_only: true
tmpfs:
- /tmp
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
mem_limit: 256m
pids_limit: 128
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://localhost:8000/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
ローカルでビルド
docker build -t ringosystems/homey-wan-kenobi .
docker run -d -p 8000:8000 \
-e MCP_TRANSPORT=streamable-http \
-e HOMEY_ADDRESS=http://192.168.1.x \
-e HOMEY_TOKEN=your-local-api-key \
--restart unless-stopped \
ringosystems/homey-wan-kenobi
クライアントの接続
MCP クライアントを streamable-HTTP エンドポイントに接続します。
{
"mcpServers": {
"homey": {
"type": "streamable-http",
"url": "http://your-host:8000/mcp"
}
}
}
curl http://your-host:8000/healthz でヘルスチェックを確認できます。
ツール
デバイス
| ツール | 説明 |
|---|---|
list_devices | デバイスを現在の機能値とともに一覧表示します。ゾーンまたはクラスで絞り込めます |
get_device | ID を指定して、デバイスの詳細とすべての機能値を取得します |
search_devices | 名前、クラス、または機能でデバイスを検索します |
set_device_capability | デバイスを操作します(onoff、dim、target_temperature、volume_set など) |
デバイスとゾーンの管理
| ツール | 説明 |
|---|---|
rename_device | デバイスの名前を変更します |
move_device_to_zone | デバイスを別のゾーン(部屋)に移動します |
create_zone | 必要に応じて親ゾーンの下に、新しいゾーンを作成します |
ゾーン
| ツール | 説明 |
|---|---|
list_zones | 階層構造とともに、すべてのゾーン(部屋/エリア)を一覧表示します |
フロー
| ツール | 説明 |
|---|---|
list_flows | 有効/破損の状態とともに、シンプルフローとアドバンスドフローを一覧表示します |
trigger_flow | フローをすぐに実行します |
set_flow_enabled | フローを有効または無効にします |
フローの作成
| ツール | 説明 |
|---|---|
get_flow | ID を指定して、標準の WHEN/AND/THEN フロー定義を取得します |
create_flow | トリガー、条件、アクションから標準フローを作成します |
update_flow | 標準フローのフィールドを更新します |
delete_flow | 標準フローを完全に削除します |
get_advanced_flow | アドバンスドフローの定義(カード、引数、接続)を取得します |
create_advanced_flow | カードグラフからアドバンスドフローを作成します |
update_advanced_flow | アドバンスドフローを更新します(カードグラフを置き換えます) |
delete_advanced_flow | アドバンスドフローを完全に削除します |
フローカードの検出
| ツール | 説明 |
|---|---|
list_flow_cards | 部分文字列で絞り込んで、トリガー/条件/アクションカードを一覧表示します |
get_flow_card | 1 つのフローカードの完全な定義と引数スキーマを取得します |
ロジックとアプリ
| ツール | 説明 |
|---|---|
list_variables | 現在の値とともにロジック変数を一覧表示します |
set_variable | ロジック変数の値を設定します |
list_apps | バージョン、ステータス、入手元とともにインストール済みアプリを一覧表示します |
restart_app | Homey アプリを再起動します |
enable_app | アプリを有効または無効にします |
uninstall_app | アプリをアンインストールし、そのデバイスを削除します |
インサイトとエネルギー
| ツール | 説明 |
|---|---|
list_insights | 利用可能なインサイトログを一覧表示します |
get_insight_entries | 指定した期間のセンサー/メーターの履歴データを取得します |
get_energy_live | ゾーンおよびデバイスごとのリアルタイム消費電力を取得します |
get_energy_report | 日、週、月、年単位のエネルギーレポートを取得します |
天気、在宅状況、位置情報
| ツール | 説明 |
|---|---|
get_weather | Homey の位置情報に基づく現在の天気を取得します |
get_weather_hourly | 1 時間ごとの天気予報を取得します |
get_presence | すべてのユーザーの在宅/外出状況と起床/就寝状況を取得します |
set_presence | 自分の在宅状況または睡眠状態を設定します |
get_location | Homey に設定されている地理的位置情報を取得します |
アラームとムード
| ツール | 説明 |
|---|---|
list_alarms | すべてのアラームとタイマーを一覧表示します |
set_alarm | アラームを作成または更新します |
delete_alarm | アラームを削除します |
list_moods | ゾーンごとにムード(シーン)を一覧表示します |
set_mood | ゾーンでムードを有効にします |
通知
| ツール | 説明 |
|---|---|
list_notifications | 最近の通知を 50 件一覧表示します |
create_notification | Homey のタイムラインに通知を送信します |
ネットワーク診断
| ツール | 説明 |
|---|---|
diagnose_zigbee_network | Zigbee メッシュの状態、ノードごとの最終検出時刻、問題と対処方法を確認します |
diagnose_zwave_network | Z-Wave の状態、送信失敗、利用できないノード、対処方法を確認します |
get_zwave_log | トラブルシューティング用に、最近の Z-Wave ネットワークログを生データで取得します |
アプリ使用状況の分析
| ツール | 説明 |
|---|---|
analyze_app_usage | アプリと RAM、デバイス、フローからの参照を照合し、削除候補を特定します(参考情報のみ、読み取り専用) |
システムとインフラストラクチャ
| ツール | 説明 |
|---|---|
get_system_info | システム情報(バージョン、Wi-Fi、ホスト名、ハードウェア)を取得します |
list_drivers | 利用可能なすべてのデバイスドライバーを一覧表示します |
get_backup_status | バックアップ設定と最終バックアップ時刻を取得します |
create_backup | 新しいバックアップをスケジュールします |
get_ledring | LED リングのスクリーンセーバーのオプションと現在の設定を取得します |
set_ledring | LED リングのスクリーンセーバーを設定します |
get_updates | システムの更新と更新設定を確認します |
get_session | 現在の API セッション情報(ユーザー、ロール、スコープ)を取得します |
reboot_homey | Homey Pro を再起動します |
get_memory_info | アプリおよびコンポーネントごとのメモリ使用量を取得します |
get_storage_info | ストレージ使用量の内訳を取得します |
set_system_name | Homey のシステム名を設定します |
高度な機能
| ツール | 説明 |
|---|---|
homey_api_call | 任意の Homey Web API エンドポイントを直接呼び出すための、低レベルの手段です |
プロンプト
MCP プロンプト API から利用できる組み込みのナレッジプロンプト:
| プロンプト | 説明 |
|---|---|
homey_best_practices | ゾーンの設計、デバイスの命名、プロトコルのヒント、エネルギー管理、セキュリティ |
homey_troubleshooting | オフラインデバイス、Z-Wave/Zigbee の問題、フローのデバッグ、パフォーマンスの診断 |
homey_flow_patterns | 自動化パターン、命名規則、避けるべきアンチパターン |
開発
npm run dev # Run with tsx (no build step)
npm run build # Compile TypeScript
npm run lint # ESLint
npm run typecheck # TypeScript strict check
npm start # Run compiled version
技術スタック
- TypeScript + Node.js (>=20)
- homey-api v3、公式 Homey Web API クライアント
- @modelcontextprotocol/sdk v1.29、MCP サーバー(
ToolAnnotationsを使用したregisterTool) - パラメーター検証用の zod
- セルフホスト可能なストリーミング HTTP トランスポート用の supergateway
セキュリティ
依存関係ツリー、ベースイメージ、コンテナー設定は、Trivy と npm audit で監査されています。公開イメージは、組み込みのシークレットを含まず、node:22-alpine 上で非 root ユーザーとして実行されます。また、本番環境の依存関係に含まれる重大または深刻なアドバイザリは 0 件です。監査の詳細、許容される残存リスク、スキャンの再現方法については、SECURITY.md をご覧ください。
ライセンス
リリース手順、初回セットアップ、Unraid Community Applications への申請については PUBLISHING.md に、主な変更点については CHANGELOG.md に記載されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。