simplisafe-mcp について
simplisafe-mcpは、SimpliSafe 3のホームセキュリティシステムを確認・操作するMCPサーバーです。システムやセンサー、ロック、イベントを参照でき、警報やロックの変更などには事前確認を求めます。
主な機能
- 01システムと警報状態の確認
- 02センサーとロック状態の確認
- 03イベントと設定の参照
- 04警報のセットと解除
- 05ドアの施錠と解錠
- 06機密操作の事前確認
活用シーン
- 01警報のセット状態やセンサーの作動確認
- 02最近の警報やドアイベントの確認
- 03確認を経て警報やロック状態を変更
MCP 対応
MCPクライアントにSimpliSafeのシステム、センサー、ロック、イベント、設定、ヘルスチェックのツールを提供します。状態変更とPINの読み取りには実行前の確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y simplisafe-mcpSIMPLISAFE_REFRESH_TOKENシークレットOAuth refresh token from the one-time browser login (scripts/bootstrap-auth.mjs)SIMPLISAFE_TOKEN_CACHEシークレットSet to false to disable the on-disk token cache and re-authenticate on every process start. Defaults to enabled.SIMPLISAFE_TOKEN_FILEシークレットAbsolute path for the token cache file. Defaults to $MCP_DATA_DIR/.simplisafe-mcp/token.json.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
10掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
simplisafe-mcp
SimpliSafe のホームセキュリティ向け MCP サーバーです。システムが警戒中かどうかの確認、センサーやイベントの確認、警戒モードの設定と解除、スマートロックの操作を Claude から行えます。
このサーバーはホームアラームの警戒を解除したり、ドアの鍵を解錠したりできます。 物理的な状態を変更するすべてのツールと、アラーム PIN を読み取るツールでは、事前に確認を求めます。確認するまで何も送信されず、実行される内容のプレビューも確認できます(確認を参照)。この機能を利用しても問題のない環境にのみインストールしてください。
AI(Claude Code)が開発・保守しています。
利用できる機能
| ツール | |
|---|---|
simplisafe_list_systems | アカウント内のシステムと現在のアラーム状態 |
simplisafe_get_system | 1つのシステムの状態、接続状況、ベースステーションのメッセージ |
simplisafe_list_sensors | バッテリー残量、オフライン、トリガー状態を含むセンサー。フィルター可能 |
simplisafe_list_locks | ロック中、解錠済み、故障状態を含むスマートロック |
simplisafe_get_events | 最近のベースステーションのイベント(警戒、警戒解除、開閉、アラーム) |
simplisafe_get_settings | 入退室遅延、音量、ベースステーションの状態 |
simplisafe_get_pins | アラーム PIN — 平文で表示され、事前に確認を求めます |
simplisafe_set_alarm_state | 在宅警戒/外出警戒/警戒解除 — 事前に確認を求めます |
simplisafe_set_lock_state | ドアの施錠/解錠 — 事前に確認を求めます |
simplisafe_healthcheck | 認証と API の到達性 |
SimpliSafe 3 システムに対応しています。従来の SS2 システムは、内容の分からない上流の 404 エラーを返すのではなく、理由を説明して拒否します。
インストール
npm install -g simplisafe-mcp
または .mcp.json に追加します。
{
"mcpServers": {
"simplisafe": {
"command": "npx",
"args": ["-y", "simplisafe-mcp"],
"env": { "SIMPLISAFE_REFRESH_TOKEN": "${SIMPLISAFE_REFRESH_TOKEN}" }
}
}
}
認証 — ブラウザーで一度だけログイン
SimpliSafe は API キーを発行していません。認証情報には OAuth2 リフレッシュトークンを使用します。ブラウザーで一度ログインすると発行されます。
git clone https://github.com/chrischall/simplisafe-mcp && cd simplisafe-mcp
node scripts/bootstrap-auth.mjs # prints an authorize URL
# sign in (MFA included), then copy the com.simplisafe.mobile:// URL
node scripts/bootstrap-auth.mjs "<that URL>"
トークンは、実際の API で検証された後、.env(モード 0600)に書き込まれます。SimpliSafe はリフレッシュトークンをローテーションしないため、SimpliSafe アプリですべてのデバイスからサインアウトするまで有効です。これがトークンを無効化する方法です。
コードの取得方法:サインインする前に DevTools → Network を開き、Preserve log にチェックを入れます。サインイン後、ブラウザーは com.simplisafe.mobile://… リンクを開けずに失敗します。その失敗した項目のリンクアドレスをコピーして貼り付けてください。コードは一度しか使えず、約2分で期限切れになります。
取得したトークンは家の鍵と同じように大切に扱ってください。アラームを完全に操作できます。
確認
警戒の設定・解除、施錠・解錠、PIN の読み取りを行う前には、必ず確認が求められます。確認プロンプトを表示できるクライアント(Claude Code)では、以下の詳細を含むプロンプトが表示されます(MCP_CONFIRM_ELICITATION=off の場合を除く)。表示できないクライアント(claude.ai、Claude Desktop)では、最初の呼び出しでは何も実行されず、プレビューと confirmToken が返されます。そのトークンを付けて再度呼び出した場合に限り、一度だけ実行されます。プレビューには、物理的に起きることが明記されます。
{
"status": "confirmation-required",
"confirmed": false,
"dispatched": false,
"action": "alarm.set_state",
"preview": {
"action": "set alarm state to away",
"method": "POST",
"path": "/ss3/subscriptions/7858153/state/away",
"sid": 7858153,
"locationName": "Home",
"currentState": "OFF",
"requestedState": "AWAY",
"warning": "Arms ALL sensors including interior motion. Starts an exit delay; anyone still moving inside when it expires can trigger the siren and a monitoring-center dispatch."
},
"confirmToken": "…",
"expiresAt": "…",
"ttlSeconds": 600,
"instruction": "Show this preview to the user verbatim and proceed only after they explicitly approve in chat. Then call again with confirmToken."
}
トークンは、ツール、対象、プレビューにひも付けられます。2 回目の呼び出しではシステムを再読み込みし、実行される内容が承認時と一致しなくなっている場合(引数が異なる場合、またはその間に警報やロックの状態が変わった場合)は、拒否され、新しいプレビューが返されます(DRAFT_CHANGED)。すでに使用済みのトークンも拒否されます(TOKEN_REUSED)。
| 変数 | デフォルト | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | 確認プロンプトを表示できないクライアント(claude.ai、Claude Desktop)で書き込みを行う際の動作です。ask-user:2 段階で進みます。最初の呼び出しでは何も実行されず、プレビューとトークンが返されます。その後、トークンを付けて再度呼び出す前に、モデルがチャットでユーザーの承認を得る必要があります。auto:同じく 2 段階で進みますが、モデルはプレビューを自ら確認した後、トークンを使用できます。refuse:そのようなクライアントでの書き込みは拒否されます。プロンプトを表示できるクライアント(Claude Code)には、MCP_CONFIRM_ELICITATION=off の場合を除き、常に実際のプロンプトが表示されます。認識できない値は refuse として扱われます。 |
MCP_CONFIRM_ELICITATION | on | off にすると確認プロンプトは表示されず、すべてのクライアントで MCP_CONFIRM_MODE の動作が適用されます。プロンプトを表示できるとうたっているにもかかわらず、実際には表示せず、書き込みが停止したままになるクライアント(opencode 2.0.x)では、この値を設定してください。それ以外の値は on として扱われ、stderr に警告が出力されます。 |
MCP_CONFIRM_TTL_SECONDS | 600 | トークンの有効期間です。 |
MCP_CONFIRM_SECRET | プロセスごとにランダム | 署名キーです。サーバーの再起動後もトークンを有効にする必要がある場合に限り、設定してください。 |
書き込み内容を検証します
確認後、書き込みを実行し、システムを再読み込みして実際の状態を確認したうえで、confirmed、in_progress(退出遅延のカウントダウン中)、または unconfirmed を報告します。2xx が返っても、成功の証拠として扱うことはありません。
サーバーを使わないシェルアクセス
手早く一度だけクエリを実行するには、
skills/simplisafe-api/ にある curl ベースのスキルを利用できます。同じ API を使用し、MCP プロセスは不要です。リフレッシュトークンは共有されます。
開発
npm install
npm run build
npm test
検証済みのエンドポイントの形式は docs/SIMPLISAFE-API.md に記載されています。特に、以下の点は誤解しやすいため注意してください。
- ロック状態は 1 = 施錠、2 = 解錠 としてエンコードされています。
- ルーティングに使われるシステムバージョンは
location.system.versionにあり、最上位のsystemVersionにはありません。 - イベントとドアロックの制御は、
ss3/プレフィックスの配下にはありません。 numEventsには、文書化されていない上限 50 があります。settings.pinsは、無害な設定とともに警報コードを平文で返します。
免責事項
非公式です。SimpliSafe との提携関係はなく、同社からの承認も受けていません。SimpliSafe のモバイルアプリが使用するものと同じ非公開 API を、ご自身のアカウント認証情報で使用します。ご自身の判断でご利用ください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。