whoop-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WHOOP_MCP_HOME | No | Path to store tokens file (default: ~/.whoop-mcp). | |
| WHOOP_CLIENT_ID | Yes | Your WHOOP API Client ID from the developer dashboard. | |
| WHOOP_CLIENT_SECRET | Yes | Your WHOOP API Client Secret from the developer dashboard. | |
| WHOOP_REFRESH_TOKEN | No | Optional refresh token for deployment (skip authorization). | |
| UPSTASH_REDIS_REST_URL | No | Upstash Redis REST URL for token persistence in deployment. | |
| WHOOP_MCP_SHARED_SECRET | No | Shared secret for HTTP OAuth layer when running as remote connector. | |
| UPSTASH_REDIS_REST_TOKEN | No | Upstash Redis REST token. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| daily_summaryA | Get an at-a-glance snapshot of how the user is doing RIGHT NOW. Combines the latest recovery score (HRV, resting heart rate), last night's sleep, and today's accumulated strain into one view. Use this first when the user asks "how am I doing", "am I recovered", "did I sleep well", "what time did I wake up / go to bed", or anything about their current physical state. last_sleep includes local bedtime and wake time. |
| get_recoveryA | Get recovery records (score, HRV, resting heart rate) for the last N days. Recovery reflects how ready the body is for strain. days defaults to 7. |
| get_sleepA | Get sleep records for the last N days: performance %, stages, duration, and the local bedtime + wake time for each night. Use this (or daily_summary for just last night) to answer "what time did I wake up / go to bed", "how long was I awake", or sleep-stage questions. days defaults to 7. |
| get_strainB | Get daily strain / cycle data (day strain, avg & max heart rate) for N days. days defaults to 7. Strain is WHOOP's 0-21 cardiovascular load score. |
| get_workoutsA | Get workout activities (sport, strain, avg/max HR, zones) for the last N days. days defaults to 14. Each workout includes its local start and end time. |
| get_profileA | Get the user's basic WHOOP profile (name, email, user id). |
| get_body_measurementA | Get the user's body measurements: height, weight, and max heart rate. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool targets a distinct data category: profile, body measurements, recovery, sleep, strain, workouts, and a summary snapshot. The daily_summary tool could be confused with the historical get_recovery/get_sleep/get_strain tools, but descriptions clarify (current state vs historical). Overall clear.
Six tools follow the consistent 'get_' prefix pattern, while 'daily_summary' deviates. All use snake_case, so the deviation is minor. The naming is generally clear and predictable.
With 7 tools, the server covers the main WHOOP data categories without being overwhelming. Each tool serves a distinct purpose, and the count feels appropriate for a health/fitness API.
The server provides read access to core WHOOP metrics: recovery, sleep, strain, workouts, body measurements, profile, and a daily summary. Missing update functionality or fine-grained heart rate data, but for querying it covers the essential domain adequately.