{
  "markdown": "# simplisafe-mcp\n\nMCP server for [SimpliSafe](https://simplisafe.com) home security. Check whether\nthe system is armed, review sensors and events, arm/disarm, and control smart\nlocks — from Claude.\n\n> **This server can disarm a home alarm and unlock doors.** Every tool that\n> changes physical state, plus the tool that reads alarm PINs, is gated behind an\n> explicit `confirm: true`. Without it, no request is sent at all and you get a\n> dry-run preview of exactly what would happen. Install it only where you'd be\n> comfortable with that capability.\n\nDeveloped and maintained by AI (Claude Code).\n\n## What you get\n\n| Tool | |\n| --- | --- |\n| `simplisafe_list_systems` | Systems on the account with current alarm state |\n| `simplisafe_get_system` | One system's state, connectivity, base-station messages |\n| `simplisafe_list_sensors` | Sensors with battery / offline / triggered status, filterable |\n| `simplisafe_list_locks` | Smart locks with locked / unlocked / jammed state |\n| `simplisafe_get_events` | Recent base-station events (arm, disarm, opens, alarms) |\n| `simplisafe_get_settings` | Entry/exit delays, volumes, base-station health |\n| `simplisafe_get_pins` | Alarm PINs — **cleartext, confirm-gated** |\n| `simplisafe_set_alarm_state` | Arm home / arm away / disarm — **confirm-gated** |\n| `simplisafe_set_lock_state` | Lock / unlock a door — **confirm-gated** |\n| `simplisafe_healthcheck` | Auth + API reachability |\n\nSupports **SimpliSafe 3** systems. Legacy SS2 systems are rejected with an\nexplanation rather than an opaque upstream 404.\n\n## Install\n\n```bash\nnpm install -g simplisafe-mcp\n```\n\nOr add to `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"simplisafe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"simplisafe-mcp\"],\n      \"env\": { \"SIMPLISAFE_REFRESH_TOKEN\": \"${SIMPLISAFE_REFRESH_TOKEN}\" }\n    }\n  }\n}\n```\n\n## Authentication — one browser login, once\n\nSimpliSafe issues no API keys. The credential is an OAuth2 refresh token, minted\nby a browser login you perform **one time**:\n\n```bash\ngit clone https://github.com/chrischall/simplisafe-mcp && cd simplisafe-mcp\nnode scripts/bootstrap-auth.mjs             # prints an authorize URL\n# sign in (MFA included), then copy the com.simplisafe.mobile:// URL\nnode scripts/bootstrap-auth.mjs \"<that URL>\"\n```\n\nThe token is written to `.env` (mode 0600) after being verified against the live\nAPI. **SimpliSafe does not rotate refresh tokens**, so it stays valid until you\nsign out of all devices in the SimpliSafe app — which is how you revoke it.\n\nCapturing the code: open DevTools → Network and tick **Preserve log** *before*\nsigning in; afterwards the browser fails to open a `com.simplisafe.mobile://…`\nlink, and that failed entry's link address is what you paste. The code is\nsingle-use and expires in about two minutes.\n\nTreat the resulting token like a house key: it grants full control of the alarm.\n\n## Writes are gated, and verified\n\nCalling a write tool without `confirm: true` sends **nothing** and returns a\npreview, including a plain statement of the physical consequence:\n\n```json\n{\n  \"dryRun\": true,\n  \"action\": \"set alarm state to away\",\n  \"method\": \"POST\",\n  \"path\": \"/ss3/subscriptions/7858153/state/away\",\n  \"currentState\": \"OFF\",\n  \"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.\",\n  \"note\": \"Nothing was sent. Re-run with confirm: true to execute.\"\n}\n```\n\nWith `confirm: true`, the tool executes and then **re-reads the system** to check\nwhat actually happened, reporting `confirmed`, `in_progress` (the exit delay is\ncounting down), or `unconfirmed`. A `2xx` is never treated as proof.\n\n## Shell access without the server\n\nFor quick one-off queries there's a `curl`-based skill in\n[`skills/simplisafe-api/`](skills/simplisafe-api/SKILL.md) — same API, no MCP\nprocess, sharing the same refresh token.\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\nVerified endpoint shapes live in\n[docs/SIMPLISAFE-API.md](docs/SIMPLISAFE-API.md), including several things that\nare easy to get backwards:\n\n- lock state is encoded **1 = locked, 2 = unlocked**;\n- system version for routing is at `location.system.version`, not the top-level\n  `systemVersion`;\n- events and doorlock control are **not** under the `ss3/` prefix;\n- `numEvents` has an undocumented hard ceiling of **50**;\n- `settings.pins` returns alarm codes in cleartext alongside harmless settings.\n\n## Disclaimer\n\nUnofficial. Not affiliated with or endorsed by SimpliSafe. It uses the same\nprivate API the SimpliSafe mobile app uses, with your own account credentials.\nUse at your own discretion.\n\n## License\n\nMIT\n",
  "bytes": 4706,
  "sha": "5fc57456cf2ad13ec83fb621ec06097a3f5f555532668a7b96b432e0db563bbc",
  "repo_slug": "chrischall/simplisafe-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_chrischall_simplisafe_mcp_efca453c/readme"
}