mcpField
S
SurePetcare

SurePetcare

本地服务
github.com/dirkjanfaber其他04 周前更新

关于 SurePetcare

SurePetcare 是面向 SurePetcare 设备的非官方 MCP 服务,供用户通过云 API 查看宠物活动并管理兼容的门 flap 和集线器。它结合宠物数据与设备控制功能。

主要功能

  1. 01查看宠物当前在室内或室外
  2. 02查看宠物数据和设备状态
  3. 03设置 SureFlap 门锁状态
  4. 04重命名设备并设置集线器 LED
  5. 05按日期范围查看宠物活动

适用场景

  1. 01确认宠物在室内还是室外
  2. 02更改猫门的锁定状态
  3. 03手动记录宠物位置
  4. 04查看室内外活动情况

MCP 相关

该服务将宠物位置、活动报告、设备状态、SureFlap 门锁、设备重命名和集线器 LED 控制作为 MCP 工具提供;支持标准输入输出模式和供远程连接器使用的 HTTP 模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dirkjanfaber-mcp-server-surepetcare": {
"command": "npx",
"args": [
"-y",
"mcp-server-surepetcare"
],
"env": {
"SUREPETCARE_EMAIL": "<SUREPETCARE_EMAIL>",
"SUREPETCARE_PASSWORD": "<SUREPETCARE_PASSWORD>",
"SUREPETCARE_DEVICE_ID": "<SUREPETCARE_DEVICE_ID>"
}
}
}
}
启动命令npx -y mcp-server-surepetcare
需要配置的环境变量
SUREPETCARE_EMAILEmail address of your SurePetcare account
SUREPETCARE_PASSWORD密钥Password of your SurePetcare account
SUREPETCARE_DEVICE_IDStable UUID identifying this client; a random one is generated on each start if omitted

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-server-surepetcare0.3.0

工具

8

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

mcp-server-surepetcare

CI

适用于 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_HOST127.0.0.1监听的网络接口;Docker 镜像将其设为 0.0.0.0
MCP_PORT3000
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 和移动应用中。

参考资料

评论

支持 Markdown

第一次接触 MCP?

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

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