mcpField
I
iaqualink-mcp

iaqualink-mcp

ローカル
github.com/chrischallその他03 日前に更新

iaqualink-mcp について

プールやスパの機器を使う人向けのiAqualink MCPサーバーです。状態の確認と機器の操作に対応し、変更前に確認を求め、再読み込みで結果を検証します。

主な機能

  1. 01温度と機器状態の読み取り
  2. 02ポンプ、ヒーター、照明、回路の操作
  3. 03温度設定値の調整
  4. 04スケジュールとOneTouchシーンの管理
  5. 05変更の確認と再読み込みによる検証

活用シーン

  1. 01プールやスパ機器の状態確認
  2. 02ポンプ、ヒーター、照明の切り替え
  3. 03プールやスパの温度目標の調整
  4. 04対応スケジュールの確認や変更

MCP 対応

iAqualinkアカウントの状態確認と機器操作のツールをMCPクライアントに公開します。機器の変更には確認が必要で、再読み込みによって状態を検証します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"chrischall-iaqualink": {
"command": "npx",
"args": [
"-y",
"@chrischall/iaqualink-mcp"
],
"env": {
"IAQUALINK_EMAIL": "<IAQUALINK_EMAIL>",
"IAQUALINK_PASSWORD": "<IAQUALINK_PASSWORD>",
"IAQUALINK_STATUS_CACHE_SECONDS": "<IAQUALINK_STATUS_CACHE_SECONDS>",
"IAQUALINK_WEBTOUCH_STREAM_HOSTS": "<IAQUALINK_WEBTOUCH_STREAM_HOSTS>"
}
}
}
}
起動コマンドnpx -y @chrischall/iaqualink-mcp
設定が必要な環境変数
IAQUALINK_EMAILThe email address you sign in to the iAqualink app with (needed by every tool; the server starts without it)
IAQUALINK_PASSWORDシークレットYour iAqualink password (needed by every tool; the server starts without it)
IAQUALINK_STATUS_CACHE_SECONDSSeconds a system's status read is reused before re-polling iAqualink (default 5; 0 disables)
IAQUALINK_WEBTOUCH_STREAM_HOSTSExtra hosts (comma-separated) the WebTouch display stream may be served from, beyond webtouch.iaqualink.net and prm.iaqualink.net. Leave unset unless a WebTouch error names a new host

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@chrischall/iaqualink-mcp0.2.2

ツール

8

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
viewenumいいえレスポンス形式:"compact"(デフォルト)は、レスポンス内の他の箇所にすでに含まれているフィールドを省略します。"full" はこのサーバーが認識するすべてのフィールドを返します。"raw" は上流のペイロードを加工せずに返します。compact = 正規化された状態、full = 補助機器/ライトの詳細と未処理のエントリも含む、raw = iAqualink のレスポンスをそのまま返します。compact | full | raw

詳細

iaqualink-mcp

iAqualink(Zodiac/Jandy/Fluidra)のプールおよびスパ設備向け MCP サーバーです。 温度、設定値、ポンプ、ヒーター、ライト、補助回路、塩素発生器の状態を読み取り、設備を切り替えます。変更はすべて確認を経てから実行され、再読み込みによって検証されます。ご自身の iAqualink アカウント(iAqualink アプリと同じメールアドレスとパスワード)でサインインします。ブラウザー、拡張機能、ブリッジは不要です。

リファレンスクライアントが対応する2種類のシステム、iAqua(Jandy iAquaLink パネル)と eXO(Zodiac の塩素発生器)に対応しています。アカウント上のその他のデバイス(ロボット式クリーナーなど)は一覧表示されますが、制御はできません。

状況:実機で一部検証済みです。 リクエスト形式は iaqualink-py 0.7.0(Home Assistant が使用)および WebTouch のキャプチャから取得しています( docs/IAQUALINK-API.md を参照)。

  • 2026-10-11/12 に実機の iAqua(RS)パネルで動作を確認済み: サインイン、システム一覧(devices.json)、iAqua の状態読み取り(get_home、 get_devices)、および WebTouch(場所の検索、初期化、ボタン操作、表示ストリーム)。
  • まだ実機では試していない推定仕様: iAqua の set_* コマンド(ポンプ、 ヒーター、補助回路、ライト、温度)、すべての eXO リクエスト(シャドウの読み取りと書き込み)、iaqualink_set_chlorinator の推定形式、および iQ20 のスケジュールのフォールバックです。書き込み後はすべて再読み込みを行い、結果を確認します。

このプロジェクトは AI(Claude Code)によって開発・保守されています。ご自身の判断でご利用ください。

ツール

ツール機能注釈
iaqualink_list_systemsアカウント上のシステムとそのシリアル番号読み取り
iaqualink_get_status温度、設定値、ポンプ、ヒーター、補助回路/ライト、塩素生成器、塩分濃度/pH/ORP(view: compact · full · raw)読み取り
iaqualink_healthcheckサインインが設定され、受け入れられているかどうか読み取り
iaqualink_set_equipmentプール/スパ用ポンプ、プール/スパ/ソーラーヒーター、eXO フィルターポンプ、生成、ブースト、低、加熱のオン/オフ書き込み、破壊的ではありません
iaqualink_set_aux補助回路またはライトのオン/オフ(番号、aux_<n>、またはラベルで指定)書き込み、破壊的ではありません
iaqualink_set_light調光可能な明るさ(0/25/50/75/100)またはカラー効果(iAqua)書き込み、破壊的ではありません
iaqualink_set_temperatureプールおよび/またはスパの設定温度(iAqua は °F/°C、eXO のプールは °C)書き込み、破壊的ではありません
iaqualink_set_chlorinatoreXO 塩素生成器の出力 % — 推定された形式であり、iaqualink-py にはありません書き込み、破壊的ではありません
iaqualink_list_schedulesWebTouch 経由の RS パネルプログラム(iAqua、iQ20 のフォールバックプローブ)、eXO タイマー読み取り
iaqualink_add_scheduleWebTouch 経由で RS パネルプログラム(回路、開始、停止、実行曜日)を追加書き込み、破壊的ではありません
iaqualink_edit_scheduleWebTouch 経由で RS パネルプログラムの開始/停止/実行曜日を変更書き込み、破壊的ではありません
iaqualink_delete_scheduleWebTouch 経由で RS パネルプログラムを削除 — 取り消し不可書き込み、破壊的
iaqualink_set_scheduleeXO タイマーを設定/時刻変更/無効化(可変速ポンプの開始〜停止、RPM)— eXO 専用、実機では未検証書き込み、破壊的ではありません
iaqualink_check_panelRS システムがオンラインか、パネルに何が表示されているか(画面、開いているダイアログ、未保存の変更がある編集モード)を確認します。アプリとこれらのツールの状態が一致しない場合に実行してください読み取り
iaqualink_list_pump_speedsWebTouch 経由で RS パネルの可変速ポンプの名前付き速度、その RPM、現在実行中の速度を取得読み取り
iaqualink_set_pump_speedWebTouch 経由で名前付き速度でポンプを稼働書き込み、破壊的ではありません
iaqualink_set_pump_speed_rpmWebTouch 経由で名前付き速度の RPM(600–3450)を変更します。実行中でない速度は設定中に短時間稼働し、その後、実行中だった速度に戻ります書き込み、破壊的ではありません
iaqualink_list_onetouchWebTouch 経由で RS パネルの OneTouch シーン(Spa Mode、All OFF、…)とその状態を取得読み取り
iaqualink_set_onetouchWebTouch 経由で OneTouch シーンをオン/オフ — トグルはまだ実機で試していません書き込み、破壊的ではありません

このセット内のすべての書き込みには元に戻す操作があり、他の人には影響しません。ただし、パネルプログラムの削除は例外です。パネルに即時保存され、取り消せないため、破壊的な操作としてマークされています。

Jandy AquaLink RS パネルでのスケジュールと OneTouch は、iAqualink Web アプリが使用するパネルエミュレーションである WebTouch 経由で実行されます。サーバーはパネルの表示ストリームを開き、人が操作するのと同じボタンを押します(押すたびに、パネルが想定される画面と行にあることを確認し、そうでなければ中止します)。その後、ホームに戻り、再読み込みして検証します。1 つのシステムで同時に実行できる WebTouch セッションは 1 つだけです。追加/編集/削除の手順は、RS パネルでの実機キャプチャ(2026-10-11)に基づいています。docs/IAQUALINK-API.md を参照してください。 WebTouch が利用できない場合、iaqualink_list_schedules は iQ20 スケジュールにフォールバックします(アダプターのファームウェア 3 以降)。r-api.iaqualink.net/v2(Bearer)、p-api.iaqualink.net/v2(Bearer)、p-api.iaqualink.net/v2(ベアトークン)、prm.iaqualink.net/v1(ベアトークン)をそれぞれ 1 回プローブし、すべての試行結果を報告します。 iQ20 スケジュールの書き込みは実装されていません。 書き込みの仕組み。 まず現在の状態を読み取り、すでに一致している場合は何も送信しません。iAquaのポンプ/ヒーター/補助機器のコマンドはトグルなので、状態を確認せずに送信すると、その時点の状態が反転してしまうためです。次に、確認を求めます(クライアントが対応している場合はエリシテーションプロンプト、それ以外の場合はプレビューと、計画の前提となった状態にひも付けられたconfirmTokenを提示します)。その後、コマンドを送信し、要求した値が反映されるまで再読み込みします。結果は、観測された内容とともにconfirmed、unchanged、sent-unconfirmedのいずれかです(eXOは変更を非同期で適用するため、再試行するのではなく、もう一度確認してください)。

セットアップ

npm i -g @chrischall/iaqualink-mcp
変数必須意味
IAQUALINK_EMAILすべてのツールで必須iAqualinkアプリへのサインイン用メールアドレス
IAQUALINK_PASSWORDすべてのツールで必須iAqualinkのパスワード(前後の空白は削除されません)
IAQUALINK_STATUS_CACHE_SECONDSいいえステータスの読み取り結果を再利用する秒数(デフォルトは5、0で無効)
IAQUALINK_WEBTOUCH_STREAM_HOSTSいいえWebTouchディスプレイストリームの接続先として追加できるホスト(カンマ区切り)。デフォルトはprm.iaqualink.netのみ
MCP_CONFIRM_MODEいいえask-user(デフォルト)/auto/refuse
MCP_CONFIRM_TTL_SECONDSいいえconfirmTokenの有効期間(デフォルトは600)
MCP_CONFIRM_ELICITATIONいいえoffにすると、エリシテーションを宣言しているクライアントでもプロンプトをスキップします

サーバーは認証情報なしでも起動し(ホスト側でツールを一覧表示できるようにするため)、最初の呼び出し時に認証情報が不足していることを報告します。パスワードが拒否されても、再試行は行いません。拒否された状態はサーバーの再起動まで記憶されるため、入力ミスでアカウントがロックされることはありません。

Claude Code:claude mcp add iaqualink -e IAQUALINK_EMAIL=… -e IAQUALINK_PASSWORD=… -- npx -y @chrischall/iaqualink-mcp

ホスト型(claude.ai)

mint.yamlでは、コネクターの認可ページにメールアドレス/パスワードの入力フォームを備えたユーザーごとの子プロセスを宣言します(各ユーザーは自分のアカウントでサインインします)。外部への接続先は、prod.zodiac-io.com、r-api.iaqualink.net、p-api.iaqualink.net(iQ20のプローブのみ)、prm.iaqualink.net(WebTouchおよびiQ20のプローブ)に限定されます。WebTouchディスプレイストリームは、IAQUALINK_WEBTOUCH_STREAM_HOSTS(および外部接続許可)に追加されていない限り、ほかのホストへの接続を拒否します。永続化される状態はありません。セッションはメモリ内に保持され、コールドスタート後は一度サインインすると再構築されます。

スキル

  • skills/iaqualink — これらのツールの使い方。
  • skills/iaqualink-curl — シェルからcurlを使って同じ読み取りを行う方法。認証情報はmacOS Keychainから取得します(サインイン、システム一覧、iAquaの読み取りはリアルタイムで確認できます。eXOのシャドー読み取りは引き続きiaqualink-pyから導出されます)。

開発

npm install
npm run build
npm run test:coverage   # typecheck (src + tests) + vitest, 100% coverage — what CI runs

テストでは、iaqualink-pyのフィクスチャから構築されたインメモリiAqualink(tests/support/fake-server.ts)に対して、実際のクライアントを実行します。

コメント

MCP は初めてですか?

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

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