mcpField
S
slhad-aha-mcp

slhad-aha-mcp

リモート
github.com/slhadその他057 週間前に更新
リポジトリ

slhad-aha-mcp について

Home Assistant の管理者やスマートホーム自動化向けの TypeScript 製 MCP サーバーです。エンティティ、自動化、設定、Lovelace ダッシュボードを扱い、STDIO、SSE、Streamable HTTP に対応します。

主な機能

  1. 01エンティティ状態の照会と更新
  2. 02自動化の作成・更新・追跡
  3. 03Home Assistant サービスの呼び出し
  4. 04レジストリとダッシュボードの管理
  5. 05STDIO・SSE・HTTP 対応

活用シーン

  1. 01照明やセンサーの確認・操作
  2. 02自動化の作成やトラブル調査
  3. 03Home Assistant 設定の検証
  4. 04複数のトランスポートでクライアント接続

MCP 対応

Home Assistant のエンティティ、サービス、自動化、設定、レジストリ、ダッシュボードの操作を MCP クライアントに公開します。STDIO、SSE、Streamable HTTP に対応します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://server.smithery.ai/@slhad/aha-mcp/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://server.smithery.ai/@slhad/aha-mcp/mcp認証が必要

ツール

詳細

AHA Model Context Protocol (MCP) サーバー

クイックインストールリンク

STDIO

VS Code にインストール

MCP サーバーをインストール

その他
smithery バッジ

IDE を使わずにテストするのにとても便利です

AHA は Another Home Assistant MCP Server の略です

このリポジトリは、Home Assistant と MCP クライアントの間をつなぐ、Home Assistant 用の Model Context Protocol(MCP)サーバーを実装しています。

このサーバーを使うと、次のことができます。

  • Home Assistant エンティティ(ライト、センサー、スイッチなど)の一覧表示とクエリ
  • エンティティの状態の取得と更新
  • Home Assistant サービスの呼び出し(例:デバイスのオン/オフ)
  • オートメーションの管理:一覧表示、作成、更新、検証
  • エンティティレジストリへのアクセスと更新
  • Lovelace ダッシュボードの統合と更新
  • Home Assistant 設定の検証
  • プレフィックスまたは正規表現によるエンティティの検索
  • エンティティのソースおよびレジストリ情報へのアクセス

このサーバーは、複数のトランスポート方式に対応しています。

  • STDIO:従来型の MCP クライアント通信(デフォルト)
  • Server-Sent Events(SSE):ウェブベースのリアルタイム通信
  • Streamable HTTP:ウェブ統合向けの HTTP ベース MCP 通信

目次

動機

Home Assistant 向けの既存の MCP サーバー実装を調べる中で、次のことが分かりました。

  • 多くのリポジトリでは、ビルド可能または動作する Docker イメージが提供されておらず、デプロイが困難、あるいは不可能でした。
  • README ファイルに記載された機能やプロトコルを、実際には実装していないプロジェクトがいくつかありました。
  • 古くなっていたり、メンテナンスされていなかったり、明確なドキュメントやテストカバレッジが不足していたりするソリューションもありました。

このプロジェクトは、実用性を重視し、シンプルな Docker サポートを備えた、信頼性の高い完全に機能する MCP サーバーを提供することで、こうした課題に対処することを目指しています。

特別な謝辞: このプロジェクトのドキュメントの大部分は、AI によって生成または支援されています。これはサイドプロジェクトであるため(開発者として働いていますが)、楽しく実用的な機能の開発に注力し、すべてを手作業で書くよりも、十分に良ければ生成されたドキュメントをレビューして採用することを好みます。

機能

  • Home Assistant クライアントとの連携
  • エンティティのレジストリと管理
  • オートメーションと設定用の MCP エンドポイント
  • Lovelace ダッシュボードのサポート
  • 複数のトランスポートオプション:stdio、Server-Sent Events(SSE)、Streamable HTTP
  • テストに Vitest を使用する TypeScript コードベース
  • 簡単にデプロイできる Docker サポート

利用可能なツール

この MCP サーバーは、Home Assistant と連携するための包括的なツールを提供します。次のような操作が可能です。

  • オートメーション管理:オートメーションの作成、更新、削除、トレース
  • エンティティ操作:Home Assistant エンティティの照会と操作
  • サービス呼び出し:Home Assistant サービスの実行
  • 設定:Home Assistant 設定の検証と管理
  • レジストリへのアクセス:エンティティおよびデバイスのレジストリへのアクセス
  • 設定エントリーフロー用ヘルパー:Home Assistant 統合フローの作成と管理

⚠️ トークンコストに関する警告

重要: 各ツールの定義は、使用していない場合でも LLM のコンテキストでトークンを消費します!update-lovelace-config などの一部のツールだけで、4,000 トークン以上を消費することがあります。不要なツールを除外して、トークン消費を抑え、会話の効率を最大化することを検討してください。

利用可能なすべてのツールの詳細な説明とパラメーターについては、**ツールのドキュメント**を参照してください。

ツールのドキュメントの生成

ツールのドキュメントは MCP サーバーから自動生成されます。

npm run generate-docs

このコマンドは次の処理を行います。

  1. inspector を使用して、MCP サーバーから利用可能なすべてのツールを抽出します
  2. 包括的な Markdown ドキュメントファイル(tools.md)を生成します
  3. 一時ファイルを削除します

注: ツールのドキュメントによると、このサーバーは包括的な Home Assistant 連携のために、現在39 個のツールを提供しています。

プロジェクトの構成

  • src/ - メインのソースコード
    • hass/ - Home Assistant クライアントとヘルパー
    • server/ - MCP サーバーの実装
    • mcpTransports.ts - トランスポート層の実装(HTTP、SSE)
  • tests/ - テストファイルと Home Assistant 設定の例
  • scripts/ - ビルドとドキュメント生成用のスクリプト
  • Dockerfile - コンテナ化のサポート
  • package.json - プロジェクトの依存関係とスクリプト
  • tsconfig.json - TypeScript の設定
  • vitest.config.ts - Vitest テストランナーの設定

例:MCP サーバーの実行

MCP サーバーは複数のトランスポート方式をサポートしています。mcp_settings.json と同じコマンドおよび引数の構成で実行できます。

1. STDIO トランスポートで実行(デフォルト)

stdio を介して従来の MCP クライアントと連携する場合(サーバーは MCP クライアントによって起動されます)。

{
  "type": "stdio",
  "command": "tsx",
  "args": [
    "c:/dev/git/aha-mcp/src/index.ts"
  ],
  "env": {
    "LIMIT_RESOURCES": "-1",
    "RESOURCES_TO_TOOLS": "true",
    "DEBUG": "true",
    "HASS_URL": "https://your-home-assistant.local:8123",
    "HASS_ACCESS_TOKEN": "<your_token_here>"
  }
}
2. Server-Sent Events(SSE)トランスポートで実行

SSE ベースの MCP 通信を行うには、サーバーを別途実行してから、URL 経由で接続するように MCP クライアントを設定する必要があります。

ステップ 1:SSE サーバーを起動する

# Start the server with SSE transport using npm script
HASS_URL=https://your-home-assistant.local:8123 HASS_ACCESS_TOKEN=<your_token_here> npm run start:local:sse

# Or with additional configuration
RESOURCES_TO_TOOLS=true DEBUG=true HASS_URL=https://your-home-assistant.local:8123 HASS_ACCESS_TOKEN=<your_token_here> npm run start:local:sse

ステップ 2:URL 経由で接続するように MCP クライアントを設定する

{
  "url": "http://localhost:8081/sse",
  "alwaysAllow": [
    // your allowed tools here
  ]
}
3. Streamable HTTP トランスポートで実行する

HTTP ベースの MCP 通信では、サーバーを個別に起動してから、URL 経由で接続するよう MCP クライアントを設定する必要があります。

ステップ 1:HTTP サーバーを起動する

# Start the server with streamable HTTP transport using npm script
HASS_URL=https://your-home-assistant.local:8123 HASS_ACCESS_TOKEN=<your_token_here> npm run start:local:http

ステップ 2:URL 経由で接続するよう MCP クライアントを設定する

{
  "url": "http://localhost:8081/mcp",
  "alwaysAllow": [
    // your allowed tools here
  ]
}
4. SSE サーバーをすばやく起動する

npm スクリプトで SSE サーバーを直接起動します。

# Set your Home Assistant credentials first
export HASS_URL=https://your-home-assistant.local:8123
export HASS_ACCESS_TOKEN=<your_token_here>

# Start SSE server with RESOURCES_TO_TOOLS enabled
RESOURCES_TO_TOOLS=true DEBUG=true npm run start:local:sse

次のように MCP クライアントを設定します。

{
  "url": "http://localhost:3000/sse"
}
5. Podman/Docker で実行する - STDIO トランスポート

コンテナーで STDIO トランスポートを使用する場合:

{
  "type": "stdio",
  "command": "podman",
  "args": [
    "run",
    "-i",
    "--rm",
    "-e",
    "HASS_URL=https://your-home-assistant.local:8123",
    "-e",
    "HASS_ACCESS_TOKEN=<your_token_here>",
    "ghcr.io/slhad/aha-mcp:latest"
  ]
}
6. Podman/Docker で実行する - HTTP/SSE サーバー

HTTP/SSE トランスポートでは、サーバーをコンテナー内で個別に実行します。

ステップ 1:サーバーコンテナーを起動する

# For SSE transport
podman run -p 8081:8081 -e HASS_URL=https://your-home-assistant.local:8123 -e HASS_ACCESS_TOKEN=<your_token_here> ghcr.io/slhad/aha-mcp -- sse

# For HTTP transport  
podman run -p 8081:8081 -e HASS_URL=https://your-home-assistant.local:8123 -e HASS_ACCESS_TOKEN=<your_token_here> ghcr.io/slhad/aha-mcp -- http

ステップ 2:MCP クライアントを設定する

{
  "url": "http://localhost:3000/sse",  // for SSE
  // or
  "url": "http://localhost:3000/mcp"   // for HTTP
}

<your_token_here> を実際の Home Assistant アクセストークンに置き換えてください。

環境変数

次の環境変数を設定して、MCP サーバーを構成できます。

  • HASS_URL(必須):Home Assistant インスタンスの URL。例:https://your-home-assistant.local:8123(コード内のデフォルト値:http://localhost:8123)
  • HASS_ACCESS_TOKEN(必須):Home Assistant の長期有効アクセストークン。これを設定しないとサーバーは起動しません。
  • DEBUG:デバッグログを有効にするには true に設定します。デフォルト値:false。
  • RESOURCES_TO_TOOLS:リソースをツールにマッピングするには true に設定します。デフォルト値:false。
    • 詳細な説明: このオプションを有効にすると、Home Assistant のリソース(エンティティ、自動化、サービスなど)が、MCP クライアント向けの個別のツールとして公開されます。これは、汎用的なリソースクエリではなく、ツールベースのインターフェース経由でしかサーバーとやり取りできないクライアントやエージェントに特に役立ちます。こうしたクライアントが Home Assistant の機能を個別に呼び出し可能なツールとして検出して使用できるようになり、ツールが制限された環境での互換性と使いやすさが向上します。
  • LIMIT_RESOURCES:サーバーが返すリソース数の上限を設定します。デフォルト値:無制限。

**注:**サーバーのトランスポート方式は、環境変数ではなくコマンドライン引数(sse または http)で指定するようになりました。

はじめに

前提条件
  • Node.js(v18 以降を推奨)
  • Docker(任意、コンテナーでデプロイする場合)
インストール
npm install
サーバーの実行

STDIO トランスポートの場合(MCP クライアントによって起動):

# Set environment variables and run with npm
npm start

HTTP/SSE トランスポートの場合(サーバーを個別に実行):

# Run SSE server on port 8081
npm run start:local:sse

# Run HTTP server on port 8081:8081
npm run start:local:http

# Quick SSE server startup with environment variables
RESOURCES_TO_TOOLS=true DEBUG=true npm run start:local:sse

次の URL で接続するよう MCP クライアントを設定します。

  • SSE:"url": "http://localhost:3000/sse"
  • HTTP:"url": "http://localhost:8080/mcp"
テストの実行
npm run test:short

注: 現在、ユニットテストはモックを使用せず、実際の Home Assistant インスタンスに対して実行されます。そのため、テストを正常に実行するには、稼働中の Home Assistant サーバーと有効な認証情報が必要です。

Docker の使用方法

Docker コンテナー内でサーバーをビルドして実行します。

# Build the container
npm run docker

次に、以下の手順に従います。

HTTP/SSE モードでは、適切な URL で接続するよう MCP クライアントを設定します。

  • SSE:"url": "http://localhost:3000/sse"
  • HTTP:"url": "http://localhost:8081/mcp"

コントリビューション

プルリクエストを歓迎します。大きな変更を加える場合は、まず issue を作成して、変更したい内容についてご相談ください。

ライセンス

詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。