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_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_MODEask-user对于无法显示确认提示的客户端(claude.ai、Claude Desktop),写入操作的处理方式。ask-user:分两步操作——首次调用不执行任何操作,只返回预览和令牌;模型必须先在聊天中获得你的批准,然后才能再次使用该令牌调用。auto:同样分两步,但模型查看预览后可以自行使用令牌。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 视为操作成功的证明。

不通过服务使用 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。