关于 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 | 查看一个系统的状态、连接情况和基站消息 |
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 应用中退出所有设备——这也是撤销令牌的方式。
获取代码:打开开发者工具 → 网络,并在登录之前勾选保留日志;登录后,浏览器无法打开 com.simplisafe.mobile://… 链接,而你要粘贴的是该失败请求的链接地址。代码只能使用一次,并会在约两分钟后过期。
请像保管家门钥匙一样保管生成的令牌:它可以完全控制警报系统。
确认
布防、撤防、上锁、解锁和读取 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."
}
令牌与对应的工具、目标和预览绑定。第二次调用时会重新读取系统;如果即将发生的情况与已批准的内容不再一致——参数不同,或期间警报或门锁状态发生变化——则会拒绝操作(DRAFT_CHANGED),并返回新的预览。已使用过的令牌也会被拒绝(TOKEN_REUSED)。
| 变量 | 默认值 | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | 对于无法显示确认提示的客户端(claude.ai、Claude Desktop),写入操作的处理方式。ask-user:分两步操作——首次调用不执行任何操作,只返回预览和令牌;模型必须先在聊天中获得你的批准,然后才能再次使用该令牌调用。auto:同样分两步,但模型查看预览后可以自行使用令牌。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 视为操作成功的证明。
不通过服务使用 Shell
如需快速查询,可使用基于 curl 的技能
skills/simplisafe-api/——使用相同的 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 无关联,也未获其认可。此项目使用的私有 API 与 SimpliSafe 移动应用相同,并使用你自己的账户凭据。 使用风险由你自行承担。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。