关于 WHOOP (read-only)
WHOOP (read-only) 是供用户通过 MCP 客户端查询 WHOOP 健康与活动数据的本地 MCP 服务。它提供每日汇总和趋势数据,并强制只读访问,凭据保存在用户设备上。
主要功能
- 01读取恢复度、HRV、睡眠和压力
- 02获取锻炼、周期与个人资料
- 03在单次结果中汇总每日指标
- 04汇总最长 90 天的趋势
- 05在本地保存并刷新令牌
适用场景
- 01查看某日睡眠与恢复情况
- 02比较一段时间内的 HRV 和静息心率
- 03统计锻炼并了解平均压力
- 04分析压力与恢复模式的关系
MCP 相关
stdio MCP 服务向 MCP 客户端提供只读 WHOOP 数据工具,包括每日概览、趋势、睡眠、锻炼和个人资料。它使用 WHOOP 的只读权限,并在本地保存凭据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
WHOOP MCP 服务(只读)
向 Claude、Cursor、VS Code 或任何 MCP 客户端询问你的 WHOOP 恢复情况、HRV、睡眠、负荷和锻炼,同时不赋予其更改数据的能力。
基于真实 WHOOP 数据给出的真实回答,使用 npm run demo 录制。
“我昨晚睡得怎么样?为什么我今天的恢复率只有 41%?” “比较一下我过去 30 天的 HRV 和静息心率。” “我这个月跑了多少次?平均负荷是多少?” “负荷超过 15 的日子之后,我的恢复情况会更差吗?”
(安装前后均可执行一次性 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 分钟)
- 打开 WHOOP Developer Dashboard,如有提示则创建一个团队。
- 创建应用:
- 权限范围: 选择所有
read:*权限范围(恢复情况、周期、锻炼、睡眠、个人资料、身体测量)。 - 重定向 URI:
http://localhost:8787/callback
- 权限范围: 选择所有
- 复制 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_URI | http://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_SCORE | WHOOP 尚未完成对该睡眠、恢复或锻炼数据的评分。请稍后再询问。 |
| 客户端中未显示该服务 | 在终端中运行 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. 的商标。本文内容不构成医疗建议。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。