WhoopKit💪
╦ ╦╦ ╦╔═╗╔═╗╔═╗╦╔═╦╔╦╗
║║║╠═╣║ ║║ ║╠═╝╠╩╗║ ║
╚╩╝╩ ╩╚═╝╚═╝╩ ╩ ╩╩ ╩
用于WHOOP健康数据的Swift CLI+MCP服务器。遵循Quorum/Peekaboo架构构建。
特性
- 🔐 安全OAuth -存储在macOS Keychain中的令牌,具有自动刷新功能
- 📊 健康数据 -恢复、睡眠、锻炼、压力
- 💻 命令行界面 -功能齐全的命令行界面
- 🖥️ 文本用户界面 -终端仪表板(即将推出)
- 🔌 主控程序 -AI代理的模型上下文协议服务器
安装
# Clone and build
git clone https://github.com/RyanLisse/WhoopKit
cd WhoopKit
swift build -c release
# Install to PATH
cp .build/release/whoop ~/.local/bin/
cp .build/release/whoop-mcp ~/.local/bin/设置
1.获取WHOOP API证书
- 首选 developer.hop.com
- 创建应用程序
- 记下您的客户端ID、客户端密码,并将重定向URI设置为
http://localhost:8000/auth/callback
2.设置环境变量
export WHOOP_CLIENT_ID="your-client-id"
export WHOOP_CLIENT_SECRET="your-client-secret"
export WHOOP_REDIRECT_URI="http://localhost:8000/auth/callback"3.身份验证
whoop auth login这将打开您的OAuth浏览器。授权后,令牌安全地存储在Keychain中并自动刷新- 无需每小时登录!
CLI使用情况
# Quick summary
whoop summary
# Output: 2026-01-09 | Recovery: 41% | HRV: 44ms | RHR: 54 | Sleep: 41% | Strain: 0.5
# Pretty output
whoop summary --pretty
# Recovery details
whoop recovery --pretty
# Sleep analysis
whoop sleep --pretty
# Recent workouts
whoop workout --limit 5
# Specific date
whoop summary --date 2026-01-08
# JSON output (for scripting)
whoop recovery --jsonMCP 服务器
对于AI代理(Claude等):
whoop-mcp可用工具
| 工具 | 说明 |
|---|---|
whoop_get_summary | 日期的运行状况摘要 |
whoop_get_recovery | 恢复评分、HRV、RHR |
whoop_get_sleep | 睡眠表现和阶段 |
whoop_auth_status | 检查身份验证状态 |
建筑
Sources/
├── WhoopCore/ # Core library
│ ├── Models/ # Recovery, Sleep, Workout, etc.
│ ├── Auth/ # OAuth + Keychain storage
│ └── API/ # WHOOP API client
├── WhoopCLI/ # CLI (ArgumentParser)
├── WhoopTUI/ # TUI dashboard
└── WhoopMCP/ # MCP serverOAuth流
┌──────────────────────────────────────────────────────────┐
│ OAuth Flow │
├──────────────────────────────────────────────────────────┤
│ │
│ 1. First Run │
│ └─> Browser OAuth ──> Get Tokens ──> Save to Keychain│
│ │
│ 2. Subsequent Runs │
│ └─> Load from Keychain ──> Auto-refresh if needed │
│ │
│ 3. Token Expiry │
│ └─> access_token: 1 hour (auto-refresh) │
│ └─> refresh_token: ~30 days (re-login only then) │
│ │
└──────────────────────────────────────────────────────────┘依赖项
数据模型
恢复
struct Recovery {
let score: RecoveryScore // 0-100%
// score.recoveryScore, score.hrvRmssdMilli, score.restingHeartRate
}睡眠
struct Sleep {
let durationHours: Double
let score: SleepScore // performance, efficiency, stages
}锻炼
struct Workout {
let sportName: String
let score: WorkoutScore // strain, HR, calories
}许可证
麻省理工学院
作者
Ryan Lisse(@RyanLisse)
