健康数据CLI工具

WhoopKit是一个基于Swift的CLI工具和MCP服务器,用于获取和管理WHOOP健康数据,包括恢复、睡眠、锻炼等指标。

  • by RyanLisse
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 RyanLisse/WhoopKit

使用说明

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证书

  1. 首选 developer.hop.com
  2. 创建应用程序
  3. 记下您的客户端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 --json

MCP 服务器

对于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 server

OAuth流

┌──────────────────────────────────────────────────────────┐
│                     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)