mcpField
W
WHOOP (read-only)

WHOOP (read-only)

本地服务
github.com健康医疗12 周前更新

关于 WHOOP (read-only)

WHOOP (read-only) 是供用户通过 MCP 客户端查询 WHOOP 健康与活动数据的本地 MCP 服务。它提供每日汇总和趋势数据,并强制只读访问,凭据保存在用户设备上。

主要功能

  1. 01读取恢复度、HRV、睡眠和压力
  2. 02获取锻炼、周期与个人资料
  3. 03在单次结果中汇总每日指标
  4. 04汇总最长 90 天的趋势
  5. 05在本地保存并刷新令牌

适用场景

  1. 01查看某日睡眠与恢复情况
  2. 02比较一段时间内的 HRV 和静息心率
  3. 03统计锻炼并了解平均压力
  4. 04分析压力与恢复模式的关系

MCP 相关

stdio MCP 服务向 MCP 客户端提供只读 WHOOP 数据工具,包括每日概览、趋势、睡眠、锻炼和个人资料。它使用 WHOOP 的只读权限,并在本地保存凭据。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"oryanomer1-whoop": {
"command": "npx",
"args": [
"-y",
"@oryanomer/whoop-mcp"
]
}
}
}
启动命令npx -y @oryanomer/whoop-mcp

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

安装包
npm@oryanomer/whoop-mcp1.0.3

工具

10

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

此工具无需参数。

详细介绍

WHOOP MCP 服务(只读)

npm CI M8ven Score whoop-mcp MCP server – quality and maintenance score on Glama License: MIT

向 Claude、Cursor、VS Code 或任何 MCP 客户端询问你的 WHOOP 恢复情况、HRV、睡眠、负荷和锻炼,同时不赋予其更改数据的能力。

Claude 使用 whoop-mcp 回答“为什么我今天的恢复情况很差?”:它调用 get_daily_overview,指出恢复率实际为 76%(绿色),并结合良好的 HRV 和静息心率,说明睡眠时间短、规律性差且 REM 睡眠不足。

基于真实 WHOOP 数据给出的真实回答,使用 npm run demo 录制。

“我昨晚睡得怎么样?为什么我今天的恢复率只有 41%?” “比较一下我过去 30 天的 HRV 和静息心率。” “我这个月跑了多少次?平均负荷是多少?” “负荷超过 15 的日子之后,我的恢复情况会更差吗?”

Install in Cursor Install in VS Code

(安装前后均可执行一次性 auth 步骤。)

为什么选择此服务

  • 强制只读。 它只请求 WHOOP 的 read:* 权限范围。HTTP 客户端只能发送 GET,否则测试会导致构建失败,而且每个工具都带有 readOnlyHint: true。
  • 一次调用回答完整问题。 get_daily_overview 会一并返回一天的恢复情况、睡眠、小睡、负荷和锻炼。get_trends 会返回最多 90 天的平均值、范围和恢复区间。
  • 适合模型处理的输出。 它返回简洁的 JSON,使用小时、km、kcal 和当地时间,而非毫秒和千焦,可节省令牌并避免换算错误。传入 raw: true 可获取 WHOOP 的原始对象。
  • 令牌保留在你的设备上。 使用你自己的 WHOOP 开发者应用、权限为 0600 的令牌文件,并安全处理 WHOOP 会轮换的刷新令牌。不经过任何第三方服务。
  • 使用当前 API。 基于 WHOOP Developer API v2 构建。
  • 经过测试。 单元测试、MCP 集成测试、端到端测试和打包测试均在 Linux、macOS 和 Windows 上使用 Node 20、22 和 24 运行。

快速开始

你需要 Node.js 20.11+ 和 WHOOP 会员资格。

1. 创建 WHOOP 开发者应用(2 分钟)
  1. 打开 WHOOP Developer Dashboard,如有提示则创建一个团队。
  2. 创建应用:
    • 权限范围: 选择所有 read:* 权限范围(恢复情况、周期、锻炼、睡眠、个人资料、身体测量)。
    • 重定向 URI: http://localhost:8787/callback
  3. 复制 Client ID 和 Client Secret。
2. 连接你的 WHOOP 账户
npx -y @oryanomer/whoop-mcp auth

按提示输入 Client ID 和 Client Secret。密钥不会回显,因此不会显示在屏幕上,也不会留在 shell 历史记录中。随后,浏览器会打开 WHOOP 的授权页面。批准后,令牌会保存到 ~/.config/whoop-mcp/tokens.json,之后会自动刷新。

(对于脚本,你可以在环境中设置 WHOOP_CLIENT_ID 和 WHOOP_CLIENT_SECRET,而无需回答提示。)

连接即表示你同意使用条款(EULA)和 WHOOP 的 API 使用条款。有关数据处理方式,请参阅隐私政策。

3. 将其添加到 MCP 客户端
Claude Code

作为插件(推荐)。 添加服务以及 /whoop:auth 技能,引导你完成连接:

/plugin marketplace add oryanomer1/whoop-mcp
/plugin install whoop@whoop-mcp

或者只添加 MCP 服务:

claude mcp add whoop --scope user -- npx -y @oryanomer/whoop-mcp

二选一,不要同时使用,否则每个工具都会显示两次。

Claude Desktop

一键安装: 从最新版本下载 whoop-mcp-<version>.mcpb,然后双击它(或将其拖到 Claude Desktop 的 Settings → Extensions 页面)。

或者手动安装: 打开 Settings → Developer → Edit Config,并添加:

{
  "mcpServers": {
    "whoop": {
      "command": "npx",
      "args": ["-y", "@oryanomer/whoop-mcp"]
    }
  }
}

重启 Claude Desktop。在 Windows 上,如果服务无法启动,请使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "@oryanomer/whoop-mcp"]。

Cursor

点击上方的 Install in Cursor 按钮,或将以下内容添加到 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "whoop": {
      "command": "npx",
      "args": ["-y", "@oryanomer/whoop-mcp"]
    }
  }
}
VS Code (GitHub Copilot)

点击上方的 Install in VS Code 按钮,或将以下内容添加到 .vscode/mcp.json(或用户级 mcp.json):

{
  "servers": {
    "whoop": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@oryanomer/whoop-mcp"]
    }
  }
}
Windsurf

将以下内容添加到 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "whoop": {
      "command": "npx",
      "args": ["-y", "@oryanomer/whoop-mcp"]
    }
  }
}
OpenAI Codex CLI

将以下内容添加到 ~/.codex/config.toml:

[mcp_servers.whoop]
command = "npx"
args = ["-y", "@oryanomer/whoop-mcp"]
Docker

先在主机上运行 auth(步骤 2),然后挂载令牌目录:

docker build -t whoop-mcp https://github.com/oryanomer1/whoop-mcp.git
docker run -i --rm -v ~/.config/whoop-mcp:/home/node/.config/whoop-mcp whoop-mcp

在 MCP 客户端中,将 docker run 命令用作 stdio 命令。

任何其他 MCP 客户端

将 npx -y @oryanomer/whoop-mcp 作为 stdio 服务运行。无需设置环境变量:客户端 ID 和密钥会在 auth 期间与令牌一同保存。

然后提问:“给我看看今天的 WHOOP 概览。”

工具

工具返回内容
get_daily_overview某一天的恢复、睡眠、小睡、负荷、卡路里和锻炼数据(默认为今天)
get_trends按天排列的表格,以及 1–90 天内恢复、HRV、静息心率、负荷、睡眠等数据的平均值/最小值/最大值
get_profile姓名、电子邮件、身高、体重、最大心率
list_cycles / get_cycle生理周期:负荷、卡路里、平均/最大心率、步数
list_recoveries恢复率、HRV(RMSSD)、静息心率、SpO2、皮肤温度
list_sleeps / get_sleep睡眠表现、效率、一致性、阶段、干扰、呼吸频率、睡眠需求
list_workouts / get_workout运动项目、时长、负荷、心率、卡路里、距离、各心率区间的时长(可按运动项目筛选)

列表工具接受 start / end(YYYY-MM-DD 或 ISO 日期时间)、days 快捷参数、limit(最多 200,支持自动分页)和 next_token。所有参数和输出示例请参阅**工具参考**。

配置

变量默认值用途
WHOOP_CLIENT_ID来自令牌文件你的应用客户端 ID(未设置时,auth 会询问)
WHOOP_CLIENT_SECRET来自令牌文件你的应用客户端密钥(未设置时,auth 会在不回显的情况下询问)
WHOOP_REDIRECT_URIhttp://localhost:8787/callback必须与应用中注册的某个重定向 URI 完全匹配
WHOOP_TOKEN_PATH~/.config/whoop-mcp/tokens.json凭据的存储位置。必须是绝对路径(~/ 会展开)。遵循 XDG_CONFIG_HOME。
whoop-mcp            Start the MCP server on stdio (what your MCP client runs)
whoop-mcp auth       Connect your WHOOP account (opens your browser)
whoop-mcp status     Check the stored connection
whoop-mcp logout     Delete the locally stored tokens
whoop-mcp --version

所有命令都通过 npx -y @oryanomer/whoop-mcp <command> 运行,也可以使用 npm install -g @oryanomer/whoop-mcp 全局安装。

隐私与安全

请阅读完整的 隐私政策。简而言之:

  • whoop-mcp 只与 api.prod.whoop.com 通信,不会收集遥测数据,也没有中间服务器。
  • 令牌和客户端密钥保存在一个只有你的用户才能读取的文件中(0600)。它们绝不会被记录到日志中,也不会由工具返回。
  • 你的 MCP 客户端会将工具结果发送给其大模型。 你询问的健康数据会根据模型提供商的条款与其共享,因此请使用你信任的客户端和提供商。
  • 若要断开连接,请运行 whoop-mcp logout 删除本地令牌。若要完全撤销访问权限,请在 WHOOP Developer Dashboard 中删除应用或轮换其密钥。

完整的威胁模型见 SECURITY.md。请通过 GitHub 安全公告私下报告漏洞。

身份验证的工作方式

  • WHOOP 访问令牌的有效期为一小时。whoop-mcp 会在令牌过期前约一分钟刷新令牌;如果 WHOOP 返回 401,也会再次刷新。
  • WHOOP 每次刷新都会签发新的刷新令牌,并拒绝并发刷新。whoop-mcp 会逐个刷新请求,使用锁文件确保同一台机器上的多个客户端(例如 Claude Desktop 和 Claude Code)不会同时刷新,并以原子方式写入新令牌。如果写入失败,新令牌仍保存在内存中,因此磁盘空间耗尽也不会导致你无法登录。
  • 对速率限制(429)、WHOOP 服务器错误、超时(每个请求 30s)和网络错误,系统会遵循 Retry-After 并采用退避策略重试。在客户端取消请求后,系统会停止对 WHOOP 的调用。

故障排除

症状解决方法
WHOOP 登录页面显示 400 Bad Request: Request Header Or Cookie Too Large浏览器中 whoop.com 的 Cookie 太多。请将 auth 打印的链接复制到隐私/无痕窗口中打开,或清除 whoop.com 的 Cookie,然后重试。
WHOOP 显示与重定向 URI 有关的错误WHOOP 应用中的重定向 URI 必须与 WHOOP_REDIRECT_URI 完全匹配,包括 http://、端口和 /callback,且末尾不能有斜杠或空格。
Port 8787 is in use在应用中注册另一个 URI(例如 http://localhost:9876/callback),然后运行 auth 并将 WHOOP_REDIRECT_URI 设置为该 URI。
工具错误 Not connected to WHOOP执行 auth 步骤。如果客户端以其他用户身份运行或使用不同的 HOME,请在客户端配置中将 WHOOP_TOKEN_PATH 设为令牌文件的路径。
工具错误 WHOOP rejected the refresh token重新运行 auth。如果应用密钥已轮换、访问权限已撤销,或令牌文件被复制到另一台机器并在那里使用,就会发生这种情况。请在每台机器上运行 auth,不要复制令牌。
工具错误 403 ... missing a scope在 WHOOP 应用中启用所有 read:* 范围,然后重新运行 auth。
缺少值,score_state: PENDING_SCOREWHOOP 尚未完成对该睡眠、恢复或锻炼数据的评分。请稍后再询问。
客户端中未显示该服务在终端中运行 npx -y @oryanomer/whoop-mcp --version,检查 Node 和 npx,然后重启客户端。首次启动时会下载软件包,可能需要几秒钟。

随时检查连接:

npx -y @oryanomer/whoop-mcp status

卸载

npx -y @oryanomer/whoop-mcp logout

然后从 MCP 客户端的配置中移除 whoop 条目;如果不再需要,也请在 WHOOP Developer Dashboard 中删除该应用。

贡献

欢迎提交问题和拉取请求;请参阅 CONTRIBUTING.md。唯一的硬性规则是:whoop-mcp 始终保持只读。发布说明见 CHANGELOG.md。

法律声明

  • 许可证: MIT © Oryan Omer
  • 使用条款(EULA): EULA.md。安装或使用 whoop-mcp 即表示你同意这些条款。
  • 隐私政策: PRIVACY.md
  • 安全政策: SECURITY.md

这是一个非官方项目,与 WHOOP, Inc. 无关联,也未获其认可。“WHOOP” 是 WHOOP, Inc. 的商标。本文内容不构成医疗建议。

评论

支持 Markdown

第一次接触 MCP?

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

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