Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Check SimpliSafe system state and sensors, review events, arm/disarm, and control smart locks
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
SIMPLISAFE_REFRESH_TOKEN, SIMPLISAFE_TOKEN_CACHE, SIMPLISAFE_TOKEN_FILE「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"simplisafe": {
"command": "npx",
"args": [
"-y",
"simplisafe-mcp"
],
"env": {
"SIMPLISAFE_REFRESH_TOKEN": "your-value",
"SIMPLISAFE_TOKEN_CACHE": "your-value",
"SIMPLISAFE_TOKEN_FILE": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add simplisafe --env SIMPLISAFE_REFRESH_TOKEN=your-value --env SIMPLISAFE_TOKEN_CACHE=your-value --env SIMPLISAFE_TOKEN_FILE=your-value -- npx -y simplisafe-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"simplisafe": {
"command": "npx",
"args": [
"-y",
"simplisafe-mcp"
],
"env": {
"SIMPLISAFE_REFRESH_TOKEN": "your-value",
"SIMPLISAFE_TOKEN_CACHE": "your-value",
"SIMPLISAFE_TOKEN_FILE": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"simplisafe": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"simplisafe-mcp"
],
"env": {
"SIMPLISAFE_REFRESH_TOKEN": "your-value",
"SIMPLISAFE_TOKEN_CACHE": "your-value",
"SIMPLISAFE_TOKEN_FILE": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
SIMPLISAFE_TOKEN_CACHE envSIMPLISAFE_TOKEN_FILE envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント chrischall で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:SIMPLISAFE_REFRESH_TOKEN
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.4.0)がレジストリに届いたのは3 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, OpenTakeoff
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Construction takeoff for AI agents: load plans, set scale, measure, count, export with provenance.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
MCP server for SimpliSafe home security. Check whether the system is armed, review sensors and events, arm/disarm, and control smart locks — from Claude.
This server can disarm a home alarm and unlock doors. Every tool that
changes physical state, plus the tool that reads alarm PINs, asks you to confirm
first — nothing is sent until you do, and you see a preview of exactly what
would happen (see Confirmations). Install it only where you'd
be comfortable with that capability.
Developed and maintained by AI (Claude Code).
| Tool | |
|---|---|
simplisafe_list_systems | Systems on the account with current alarm state |
simplisafe_get_system | One system's state, connectivity, base-station messages |
simplisafe_list_sensors | Sensors with battery / offline / triggered status, filterable |
simplisafe_list_locks | Smart locks with locked / unlocked / jammed state |
simplisafe_get_events | Recent base-station events (arm, disarm, opens, alarms); view: "brief" gives one line per event |
simplisafe_get_settings | Entry/exit delays, volumes, base-station health |
simplisafe_get_pins | Alarm PINs — cleartext, asks you to confirm first |
simplisafe_set_alarm_state | Arm home / arm away / disarm — asks you to confirm first |
simplisafe_set_lock_state | Lock / unlock a door — asks you to confirm first |
simplisafe_healthcheck | Auth + API reachability |
Supports SimpliSafe 3 systems. Legacy SS2 systems are rejected with an explanation rather than an opaque upstream 404.
npm install -g simplisafe-mcp
Or add to .mcp.json:
{
"mcpServers": { "simplisafe": { "command": "npx", "args": ["-y", "simplisafe-mcp"], "env": { "SIMPLISAFE_REFRESH_TOKEN": "${SIMPLISAFE_REFRESH_TOKEN}" } } } }
SimpliSafe issues no API keys. The credential is an OAuth2 refresh token, minted by a browser login you perform one time:
git clone https://github.com/chrischall/simplisafe-mcp && cd simplisafe-mcp
node scripts/bootstrap-auth.mjs # prints an authorize URL
node scripts/bootstrap-auth.mjs " "
The token is written to .env (mode 0600) after being verified against the live API. SimpliSafe does not rotate refresh tokens, so it stays valid until you sign out of all devices in the SimpliSafe app — which is how you revoke it.
Capturing the code: open DevTools → Network and tick Preserve log *before* signing in; afterwards the browser fails to open a com.simplisafe.mobile://… link, and that failed entry's link address is what you paste. The code is single-use and expires in about two minutes.
Treat the resulting token like a house key: it grants full control of the alarm.
Arming, disarming, locking, unlocking and reading the PINs all ask you to confirm first. On a client that can show a confirmation prompt (Claude Code) you get the prompt, with the details below (unless MCP_CONFIRM_ELICITATION=off). On one that cannot (claude.ai, Claude Desktop) the first call sends nothing and returns a preview plus a confirmToken; only a repeat call with that token acts, once. The preview includes a plain statement of the physical consequence:
{
"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." }
The token is bound to that tool, target and preview. The system is re-read on the second call, and if what would happen no longer matches what you approved — different arguments, or the alarm or lock state moved in between — it is refused (DRAFT_CHANGED) with a fresh preview. A token that was already used is refused too (TOKEN_REUSED).
| variable | default | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | What a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). ask-user: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. auto: the same two steps, but the model may use the token after reviewing the preview itself. refuse: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt, unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse. |
MCP_CONFIRM_ELICITATION | on | off never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE behaviour. Set it for a client that says it can show prompts but never does (the write hangs — opencode 2.0.x). Any other value is treated as on, with a warning on stderr. |
MCP_CONFIRM_TTL_SECONDS | 600 | How long a token stays valid. |
MCP_CONFIRM_SECRET | random per process | Signing key; set it only if tokens must survive a server restart. |
Once confirmed, a write executes and then re-reads the system to check what actually happened, reporting confirmed, in_progress (the exit delay is counting down), or unconfirmed. A 2xx is never treated as proof.
For quick one-off queries there's a curl-based skill in skills/simplisafe-api/ — same API, no MCP process, sharing the same refresh token.
npm install
npm run build npm test
Verified endpoint shapes live in docs/SIMPLISAFE-API.md, including several things that are easy to get backwards:
location.system.version, not the top-level systemVersion;ss3/ prefix;numEvents has an undocumented hard ceiling of 50;settings.pins returns alarm codes in cleartext alongside harmless settings.Unofficial. Not affiliated with or endorsed by SimpliSafe. It uses the same private API the SimpliSafe mobile app uses, with your own account credentials. Use at your own discretion.
MIT