mcpField
S
simplisafe-mcp

simplisafe-mcp

ローカル
github.com/chrischallセキュリティ02 日前に更新

simplisafe-mcp について

simplisafe-mcpは、SimpliSafe 3のホームセキュリティシステムを確認・操作するMCPサーバーです。システムやセンサー、ロック、イベントを参照でき、警報やロックの変更などには事前確認を求めます。

主な機能

  1. 01システムと警報状態の確認
  2. 02センサーとロック状態の確認
  3. 03イベントと設定の参照
  4. 04警報のセットと解除
  5. 05ドアの施錠と解錠
  6. 06機密操作の事前確認

活用シーン

  1. 01警報のセット状態やセンサーの作動確認
  2. 02最近の警報やドアイベントの確認
  3. 03確認を経て警報やロック状態を変更

MCP 対応

MCPクライアントにSimpliSafeのシステム、センサー、ロック、イベント、設定、ヘルスチェックのツールを提供します。状態変更とPINの読み取りには実行前の確認が必要です。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"chrischall-simplisafe": {
"command": "npx",
"args": [
"-y",
"simplisafe-mcp"
],
"env": {
"SIMPLISAFE_REFRESH_TOKEN": "<SIMPLISAFE_REFRESH_TOKEN>",
"SIMPLISAFE_TOKEN_CACHE": "<SIMPLISAFE_TOKEN_CACHE>",
"SIMPLISAFE_TOKEN_FILE": "<SIMPLISAFE_TOKEN_FILE>"
}
}
}
}
起動コマンドnpx -y simplisafe-mcp
設定が必要な環境変数
SIMPLISAFE_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmsimplisafe-mcp1.3.2

ツール

10

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

このツールにパラメーターはありません。

詳細

simplisafe-mcp

SimpliSafe のホームセキュリティ向け MCP サーバーです。システムが警戒中かどうかの確認、センサーやイベントの確認、警戒モードの設定と解除、スマートロックの操作を Claude から行えます。

このサーバーはホームアラームの警戒を解除したり、ドアの鍵を解錠したりできます。 物理的な状態を変更するすべてのツールと、アラーム PIN を読み取るツールでは、事前に確認を求めます。確認するまで何も送信されず、実行される内容のプレビューも確認できます(確認を参照)。この機能を利用しても問題のない環境にのみインストールしてください。

AI(Claude Code)が開発・保守しています。

利用できる機能

ツール
simplisafe_list_systemsアカウント内のシステムと現在のアラーム状態
simplisafe_get_system1つのシステムの状態、接続状況、ベースステーションのメッセージ
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_MODEask-user確認プロンプトを表示できないクライアント(claude.ai、Claude Desktop)で書き込みを行う際の動作です。ask-user:2 段階で進みます。最初の呼び出しでは何も実行されず、プレビューとトークンが返されます。その後、トークンを付けて再度呼び出す前に、モデルがチャットでユーザーの承認を得る必要があります。auto:同じく 2 段階で進みますが、モデルはプレビューを自ら確認した後、トークンを使用できます。refuse:そのようなクライアントでの書き込みは拒否されます。プロンプトを表示できるクライアント(Claude Code)には、MCP_CONFIRM_ELICITATION=off の場合を除き、常に実際のプロンプトが表示されます。認識できない値は refuse として扱われます。
MCP_CONFIRM_ELICITATIONonoff にすると確認プロンプトは表示されず、すべてのクライアントで MCP_CONFIRM_MODE の動作が適用されます。プロンプトを表示できるとうたっているにもかかわらず、実際には表示せず、書き込みが停止したままになるクライアント(opencode 2.0.x)では、この値を設定してください。それ以外の値は on として扱われ、stderr に警告が出力されます。
MCP_CONFIRM_TTL_SECONDS600トークンの有効期間です。
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

コメント

MCP は初めてですか?

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

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