Labsco
cbellbell-spin logo

Whoop MCP

from cbellbell-spin

Local MCP server that exposes Whoop recovery, sleep, and strain data to AI agents

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedAccount requiredNeeds API keys

Whoop MCP Server

MCP server that exposes your Whoop fitness data (recovery, sleep, strain, workouts) to Claude for use as a daily training coach.

Claude Desktop / Cowork MCP Config

Add this to your Claude MCP configuration:

{
  "mcpServers": {
    "whoop": {
      "command": "python",
      "args": ["/absolute/path/to/whoop-mcp/src/whoop_server.py"],
      "env": {
        "WHOOP_CLIENT_ID": "your-client-id",
        "WHOOP_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Replace /absolute/path/to/whoop-mcp with the actual path on your machine.

Available Tools

ToolDescription
whoop_check_authVerify tokens are valid and not expired
whoop_get_latest_recoveryMost recent recovery score, HRV, resting HR, SpO2
whoop_get_recovery_rangeRecovery data for a date range
whoop_get_latest_sleepLast sleep session with stage breakdown
whoop_get_sleep_rangeSleep data for a date range
whoop_get_latest_strainCurrent cycle strain, avg/max HR, kilojoules
whoop_get_strain_rangeStrain over past N days with average
whoop_get_workoutsWorkouts with sport ID, strain, HR zones
whoop_get_profileUser profile and body measurements
whoop_get_training_summaryAggregated coaching snapshot (start here)

Example Prompts

Once connected, you can ask Claude things like:

  • "What was my recovery yesterday?"
  • "How much strain did I accumulate last week?"
  • "Am I trending toward overtraining?"
  • "How has my HRV changed over the past two weeks?"
  • "What were my sleep stages last night?"
  • "Compare my strain to my recovery over the past 7 days."
  • "Should I do a hard workout today?"

Training Coach Workflow

Start each session by calling whoop_get_training_summary for an overview of recovery status, recent strain load, sleep quality, and a training readiness assessment.

Token Storage

Tokens are stored encrypted at ~/.whoop_mcp/:

  • .encryption_key โ€” Fernet encryption key (chmod 600)
  • tokens.enc โ€” Encrypted OAuth tokens (chmod 600)
  • Directory permissions: chmod 700

If token refresh fails, re-run python scripts/setup_auth.py.