Skip to content

cbellbell-spin/whoop-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Whoop MCP Server

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

Prerequisites

  • Python 3.10+
  • A Whoop Developer account with a registered application
  • Your Whoop app's Client ID and Client Secret

Whoop Developer Dashboard Setup

  1. Go to developer.whoop.com and sign in
  2. Create a new application
  3. Set the Redirect URI to: http://localhost:8080/callback
  4. Enable these scopes: read:recovery, read:cycles, read:sleep, read:profile, read:body_measurement
    • Note: read:workout and offline may not be available on all developer apps. The server handles missing scopes gracefully.
  5. Note your Client ID and Client Secret

Installation

cd whoop-mcp
pip install -r requirements.txt

Authorization (One-Time Setup)

Export your app credentials and run the setup script:

export WHOOP_CLIENT_ID="your-client-id"
export WHOOP_CLIENT_SECRET="your-client-secret"
python scripts/setup_auth.py

This opens a browser to Whoop's authorization page. After you approve, tokens are encrypted and stored at ~/.whoop_mcp/. If the offline scope was granted, tokens refresh automatically. Otherwise, re-run this script when the token expires.

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

Tool Description
whoop_check_auth Verify tokens are valid and not expired
whoop_get_latest_recovery Most recent recovery score, HRV, resting HR, SpO2
whoop_get_recovery_range Recovery data for a date range
whoop_get_latest_sleep Last sleep session with stage breakdown
whoop_get_sleep_range Sleep data for a date range
whoop_get_latest_strain Current cycle strain, avg/max HR, kilojoules
whoop_get_strain_range Strain over past N days with average
whoop_get_workouts Workouts with sport ID, strain, HR zones
whoop_get_profile User profile and body measurements
whoop_get_training_summary Aggregated 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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages