关于 SurePetcare
SurePetcare 是面向 SurePetcare 设备的非官方 MCP 服务,供用户通过云 API 查看宠物活动并管理兼容的门 flap 和集线器。它结合宠物数据与设备控制功能。
主要功能
- 01查看宠物当前在室内或室外
- 02查看宠物数据和设备状态
- 03设置 SureFlap 门锁状态
- 04重命名设备并设置集线器 LED
- 05按日期范围查看宠物活动
适用场景
- 01确认宠物在室内还是室外
- 02更改猫门的锁定状态
- 03手动记录宠物位置
- 04查看室内外活动情况
MCP 相关
该服务将宠物位置、活动报告、设备状态、SureFlap 门锁、设备重命名和集线器 LED 控制作为 MCP 工具提供;支持标准输入输出模式和供远程连接器使用的 HTTP 模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y mcp-server-surepetcareSUREPETCARE_EMAILEmail address of your SurePetcare accountSUREPETCARE_PASSWORD密钥Password of your SurePetcare accountSUREPETCARE_DEVICE_IDStable UUID identifying this client; a random one is generated on each start if omitted本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
8收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
mcp-server-surepetcare
适用于 SurePetcare 云 API 的 MCP(Model Context Protocol)服务。它将宠物位置监控、SureFlap 门锁控制、设备重命名和集线器 LED 控制作为 MCP 工具提供。
免责声明: 本项目与 Sure Petcare Ltd. 无关联,未获得其认可,也不存在任何其他关联。这是由喜爱其硬件和软件的用户独立开发的社区集成项目。SurePetcare、SureFlap 和 SureFeed 是 Sure Petcare Ltd. 的商标。使用此软件包的风险由您自行承担。底层 API 未经官方认可,是由社区逆向工程得出的——它可能会在不另行通知的情况下发生变化或失效。
工具
| 工具 | 描述 |
|---|---|
list_pets | 列出所有宠物及其当前位置(室内/室外) |
get_pet_details | 获取宠物原始数据,包括微芯片标签信息 |
list_devices | 列出所有 SurePetcare 设备,包括实时门锁状态和宵禁计划 |
set_lock_state | 设置 SureFlap 猫门的门锁状态 |
rename_device | 重命名设备,并重新应用任何明确的门锁覆盖设置,以防重命名时门锁被悄悄解锁 |
set_pet_location | 手动标记宠物在室内/室外(例如,在让它们通过猫门以外的门后) |
set_led_mode | 设置集线器 LED 环的亮度(关闭/明亮/调暗) |
get_pet_report | 获取指定日期范围内宠物室内/室外活动的汇总统计数据 |
门锁状态值
| 值 | 含义 |
|---|---|
0 | 未上锁(两个方向均可通行) |
1 | 锁定进入(仅可进入) |
2 | 锁定离开(仅可离开) |
3 | 锁定(两个方向均不可通行) |
LED 模式值
| 值 | 含义 |
|---|---|
0 | 关闭 |
1 | 明亮 |
4 | 调暗 |
配置
启动服务前设置以下环境变量:
export SUREPETCARE_EMAIL="[email protected]"
export SUREPETCARE_PASSWORD="yourpassword"
export SUREPETCARE_DEVICE_ID="stable-uuid" # optional, auto-generated if omitted
在 Claude Desktop 中使用
将以下内容添加到你的 claude_desktop_config.json 中:
{
"mcpServers": {
"surepetcare": {
"command": "npx",
"args": ["mcp-server-surepetcare"],
"env": {
"SUREPETCARE_EMAIL": "[email protected]",
"SUREPETCARE_PASSWORD": "yourpassword"
}
}
}
}
远程使用:claude.ai 连接器(HTTP + OAuth)
若要从 claude.ai 和 Claude 移动应用中使用此服务,请在一台始终开机的机器上以 HTTP 模式运行,并将其添加为自定义连接器。claude.ai 从互联网连接,因此服务需要一个公开的 https:// URL。Cloudflare Tunnel 或 Tailscale Funnel 可以为你提供这样的 URL,无需在路由器上开放端口。ZeroTier 或普通 Tailscale 等私有覆盖网络并不足够:claude.ai 是从 Anthropic 的服务器连接,而不是从你的设备连接。
HTTP 模式仅支持单用户:连接 Claude 时,服务会显示一个页面,要求输入你的所有者密码短语。任何知道该密码短语的人都可以授权客户端,而任何持有令牌的人都可以解锁你的猫门——请选用强密码。
npx mcp-server-surepetcare --http # or MCP_TRANSPORT=http
| 变量 | 默认值 | |
|---|---|---|
MCP_PUBLIC_URL | (必需) | claude.ai 用于访问服务的 https:// URL |
MCP_OWNER_PASSWORD | (必需) | 用于授权 Claude 的密码短语,至少 12 个字符 |
MCP_HOST | 127.0.0.1 | 监听的网络接口;Docker 镜像将其设为 0.0.0.0 |
MCP_PORT | 3000 | |
MCP_STATE_FILE | ~/.mcp-server-surepetcare/oauth-state.json | 已注册的客户端和刷新令牌哈希值,以便 Claude 在重启后保持连接 |
此外,还需要配置中的 SUREPETCARE_* 变量。将
SUREPETCARE_DEVICE_ID 设置为固定 UUID,否则每次重启都会显示为新设备登录。
Docker(例如,在 Raspberry Pi 上)
每次发布都会提供适用于 amd64、arm64 和 arm/v7(32 位 Raspberry Pi OS)的 ghcr.io/dirkjanfaber/mcp-server-surepetcare,并使用版本号和 latest 作为标签。仅在回环地址上发布其端口,这样只能通过隧道访问:
# docker-compose.yml
services:
surepetcare-mcp:
image: ghcr.io/dirkjanfaber/mcp-server-surepetcare:latest # or pin a version
restart: unless-stopped
env_file: .env # SUREPETCARE_*, MCP_PUBLIC_URL, MCP_OWNER_PASSWORD
ports:
- "127.0.0.1:3200:3000"
volumes:
- surepetcare-data:/data
volumes:
surepetcare-data:
使用 Tailscale Funnel(无需域名)时,运行 sudo tailscale funnel --bg 3200,并将 tailscale funnel status 显示的 URL 用作 MCP_PUBLIC_URL。
claude.ai 只会连接端口 443,因此 Funnel 的其他端口(8443、10000)无法用于连接器。如果这台机器的名称已被另一台服务占用,请在旁边运行一个 Tailscale 容器,为此服务创建独立的 tailnet 机器。删除上面的 ports: 映射,将 MCP_PUBLIC_URL 设置为 https://surepet.<tailnet>.ts.net,并添加:
surepetcare-tailscale:
image: tailscale/tailscale:latest
hostname: surepet
restart: unless-stopped
environment:
TS_HOSTNAME: surepet
TS_AUTHKEY: ${TS_AUTHKEY} # only used for the first login
TS_STATE_DIR: /var/lib/tailscale
TS_SERVE_CONFIG: /config/serve.json
TS_USERSPACE: "true"
volumes:
- surepetcare-tailscale:/var/lib/tailscale
- ./surepet-ts:/config:ro
在 volumes: 下添加 surepetcare-tailscale:,并创建 surepet-ts/serve.json:
{
"TCP": { "443": { "HTTPS": true } },
"Web": {
"${TS_CERT_DOMAIN}:443": {
"Handlers": { "/": { "Proxy": "http://surepetcare-mcp:3000" } }
}
},
"AllowFunnel": { "${TS_CERT_DOMAIN}:443": true }
}
在 Tailscale 管理控制台的 Settings → Keys 下生成身份验证密钥。如果不提供密钥,容器会打印一个大约一分钟后过期的登录链接。登录后,这台机器会通过卷保持登录状态,可以移除密钥。
使用 Cloudflare Tunnel(需要在 Cloudflare 上拥有域名)时,请改为将公共主机名指向此服务。不要在它前面启用 Cloudflare Access:claude.ai 无法通过其登录页面。
连接 Claude 前,请检查公共 URL:
curl https://<your public host>/.well-known/oauth-authorization-server
它应返回 JSON,且其中的 issuer 与 MCP_PUBLIC_URL 一致。
运行 docker compose pull && docker compose up -d 进行更新。此服务会信任一个代理跃点(来自前置隧道的 X-Forwarded-For)以进行速率限制。不要同时将其端口直接开放到互联网。
连接 Claude
在 claude.ai 中:选择 Settings → Connectors → Add custom connector,并填写 URL https://<your public host>/mcp。Claude 会注册自身并打开密码短语页面;授权后,工具便会显示在 claude.ai 和移动应用中。
参考资料
- 逆向工程 API(PHP):https://github.com/alextoft/sureflap
- Python 客户端(surepy):https://github.com/benleb/surepy
- 本地 MQTT 替代方案(PetHubLocal):https://github.com/PetHubLocal/pethublocal
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。