使用说明
Whoop MCP服务器
MCP(模型上下文协议)服务器,可访问您的Whoop健康和健身数据,使Claude和其他人工智能助手能够为您提供个性化的健康建议。
新来的? 结账 HOW_TO_USE.md 获取分步设置指南。
特性
- 恢复数据:获取您的恢复评分、心率变异性、静息心率、血氧饱和度和皮肤温度
- 睡眠分析:详细的睡眠阶段(轻度、快速眼动、深度)、睡眠表现、效率和呼吸频率
- 训练跟踪:压力评分、燃烧的卡路里、心率区域、距离和海拔高度
- 每日压力:累积的每日压力和能量消耗
- 健康概述:将恢复、睡眠和压力与个性化建议相结合
- 轮廓和身体测量:用户资料和身体测量数据
先决条件
- Whoop设备:您需要一个活跃的Whoop会员
- Whoop开发者账户:在以下位置创建应用程序 developer.hop.com
- Node.js 18+:需要运行服务器
设置
1.创建Whoop开发者应用程序
- 首选 developer-dashboard.whoop.com
- 创建新应用程序
- 将重定向URL设置为
http://localhost:8080/callback - 注意你的 客户端ID 和 客户端密钥
- 请求以下范围:
read:recoveryread:cyclesread:workoutread:sleepread:profileread:body_measurementoffline(用于刷新令牌)
2.安装MCP服务器
cd whoop-mcp-server
npm install
npm run build
3.获取您的初始代币(一次性)
运行令牌助手脚本:
node get-tokens.mjs
按照提示操作:
- 输入您的客户端ID和客户端密码
- 在浏览器中打开授权URL
- 授权应用程序并从重定向URL复制代码
- 脚本将输出您的初始令牌
4.配置克劳德桌面
将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/path/to/whoop-mcp-server/dist/index.js"],
"env": {
"WHOOP_CLIENT_ID": "your-client-id",
"WHOOP_CLIENT_SECRET": "your-client-secret",
"WHOOP_ACCESS_TOKEN": "your-initial-access-token",
"WHOOP_REFRESH_TOKEN": "your-initial-refresh-token"
}
}
}
}
5.首次使用和代币持久性
在第一次API调用时,服务器将:
- 使用配置中的初始令牌
- 将它们保存到
tokens.json在服务器目录中 - 过期时自动刷新
初始设置后,您可以删除 WHOOP_ACCESS_TOKEN 和 WHOOP_REFRESH_TOKEN 从你的配置。服务器只需要:
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/path/to/whoop-mcp-server/dist/index.js"],
"env": {
"WHOOP_CLIENT_ID": "your-client-id",
"WHOOP_CLIENT_SECRET": "your-client-secret"
}
}
}
}
令牌架构
┌─────────────────────────────────────────────────────────────────┐
│ STARTUP │
├─────────────────────────────────────────────────────────────────┤
│ Claude Desktop starts → WHOOP MCP server launches │
│ │ │
│ ▼ │
│ Check for tokens.json │
│ / \ │
│ Found Not Found │
│ │ │ │
│ ▼ ▼ │
│ Use persisted Use env vars │
│ tokens (initial setup) │
│ \ / │
│ ▼ ▼ │
│ Token loaded in memory │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ ON API CALL │
├─────────────────────────────────────────────────────────────────┤
│ You ask "get my recovery" → check token expiry │
│ │ │
│ Token expired? │
│ / \ │
│ YES NO │
│ │ │ │
│ ▼ │ │
│ Refresh via WHOOP │ │
│ API (uses client │ │
│ credentials + │ │
│ refresh token) │ │
│ │ │ │
│ ▼ │ │
│ Save new tokens │ │
│ to tokens.json │ │
│ \ / │
│ ▼ ▼ │
│ Make API call with valid token │
└─────────────────────────────────────────────────────────────────┘
关键文件:
tokens.json-持久令牌(自动创建,重新启动后仍然有效)dist/index.js-MCP服务器
什么是自动的:
- 令牌过期时刷新
- 将新令牌保存到磁盘
- 重新启动时加载令牌
需要手动操作的内容:
- 初始OAuth设置(一次性)
- 如果未使用30-90天(刷新令牌过期),则重新进行身份验证
可用工具
whoop_get_profile
获取您的Whoop用户资料(姓名、电子邮件、用户ID)。
whoop_get_body_measurements
获取你的身体测量数据(身高、体重、最大心率)。
whoop_get_recovery
获取恢复数据,包括恢复评分、心率变异性、静息心率、血氧饱和度。
参数:
limit(1-25,默认值7):记录数start:开始日期过滤器(ISO 8601)end:结束日期过滤器(ISO 8601)
whoop_get_sleep
获取详细的睡眠数据,包括睡眠阶段、表现和效率。
参数:
limit(1-25,默认值7):记录数start:开始日期过滤器(ISO 8601)end:结束日期过滤器(ISO 8601)
whoop_get_workouts
获取锻炼数据,包括压力、卡路里、心率区域。
参数:
limit(1-25,默认10):记录数start:开始日期过滤器(ISO 8601)end:结束日期过滤器(ISO 8601)
whoop_get_cycles
获取每日生理周期数据(压力、卡路里、心率)。
参数:
limit(1-25,默认值7):记录数start:开始日期过滤器(ISO 8601)end:结束日期过滤器(ISO 8601)
whoop_get_health_overview
获得全面的健康概述,将恢复、睡眠和压力数据与个性化建议相结合。
Claude使用示例
配置后,您可以向Claude询问以下问题:
- “我今天恢复得怎么样了?”
- “让我看看上周的睡眠情况”
- “我最近做了什么锻炼?”
- “给我一个健康概述”
- “根据我的Whoop数据,我今天应该努力训练吗?”
- “我的HRV本周走势如何?”
- “我昨晚的睡眠质量怎么样?”
故障排除
“没有可用令牌”错误
跑 node get-tokens.mjs 获取初始令牌,或检查 tokens.json 存在。
“缺少WHOOP_LIENT_ID或WHOOP_CLIENT_SECRET”错误
这些必须始终在您的Claude Desktop配置中-它们永远不会过期。
“刷新令牌失败”错误
您的刷新令牌已过期(通常在30-90天未使用后)。跑 node get-tokens.mjs 重新验证。
未返回数据
- 确保您已佩戴Whoop设备,并且数据已同步
- 检查您的应用程序是否具有授权的所需范围
查看当前持久令牌
cat tokens.json
强制重新身份验证
rm tokens.json
# Then run get-tokens.mjs or add tokens back to Claude config
安全考虑
令牌存储
- 代币存储在
tokens.json具有受限权限(模式0600-仅限所有者读/写) - Windows用户: 文件权限在Windows上的工作方式不同,可能无法提供同等的保护。考虑额外的访问控制。
- 令牌以未加密的方式存储;确保您的系统具有适当的访问控制
配置安全
- 你的
claude_desktop_config.json以纯文本形式包含您的客户端机密 - 不要承诺 此配置文件用于版本控制
- 考虑限制配置文件的文件权限:
- macOS/Linux:
chmod 600 ~/Library/Application\ Support/Claude/claude_desktop_config.json
- macOS/Linux:
最佳实践
- 定期轮换您的Whoop开发者应用程序凭据
- 监控您的Whoop帐户是否存在未经授权的访问
- 跑
npm audit定期检查依赖性漏洞 - 初始设置后,删除
WHOOP_ACCESS_TOKEN和WHOOP_REFRESH_TOKEN从您的配置中(它们被持久化在tokens.json)
可选:自定义令牌位置
集 WHOOP_TOKEN_PATH 用于在特定位置存储令牌的环境变量:
"env": {
"WHOOP_TOKEN_PATH": "/path/to/secure/tokens.json",
"WHOOP_CLIENT_ID": "your-client-id",
"WHOOP_CLIENT_SECRET": "your-client-secret"
}
api参考
此服务器使用 Whoop API v2。有关数据模型和端点的更多详细信息,请参阅官方文档。
许可证
麻省理工学院