Whoop MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP server port | 3000 |
| DB_PATH | No | SQLite database path | ./whoop.db |
| MCP_MODE | No | http for remote, stdio for local | http |
| WHOOP_CLIENT_ID | Yes | Whoop OAuth client ID | |
| WHOOP_REDIRECT_URI | No | OAuth callback URL | http://localhost:3000/callback |
| WHOOP_CLIENT_SECRET | Yes | Whoop OAuth client secret |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_todayA | Returns the user's latest WHOOP status as Markdown, every value WHOOP sent: the most recent recovery (score %, Green/Yellow/Red zone, HRV in ms, resting heart rate, SpO2, skin temperature, whether WHOOP is still calibrating), last night's sleep (time asleep and in bed, awake and no-data time, light/deep/REM stages, sleep cycles, disturbances, performance, efficiency, consistency, respiratory rate, the sleep needed before it with its baseline, debt, strain and nap parts, and today's naps) and today's strain so far (0–21) with calories, heart rate and steps. Each section is dated. Use it first for questions like "how am I today?" or "should I train hard?". For more than one day, use get_recovery_trends, get_sleep_analysis, get_strain_history or get_workouts. When a newer version of this server is out, the answer ends with a one-line notice to pass on to the user. Read-only: it never changes the user's WHOOP data. It fetches the data live from WHOOP on every call and keeps no copy, so the answer is current; if WHOOP can't be reached, it says so. If WHOOP isn't connected yet, it returns a message asking to call get_auth_url. |
| get_recovery_trendsA | Returns daily recovery for the last |
| get_sleep_analysisA | Returns nightly sleep for the last |
| get_strain_historyA | Returns daily strain for the last |
| get_workoutsA | Returns individual workouts from the last |
| get_auth_urlA | Returns a one-time link that connects the user's WHOOP account to this server through WHOOP's own login. Use it when a data tool such as get_today says WHOOP isn't connected or its authorization expired. Give the link to the user to open in a browser: it works once and expires in 10 minutes. Once they have logged in, get_today and the other data tools work. It doesn't read any WHOOP data. A server running in stdio mode can't receive WHOOP's login, so there it returns setup instructions instead; a server whose WHOOP app isn't configured yet answers with the address of its set-up page. |
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 6 tools
Each tool targets a distinct data slice (today snapshot, recovery, sleep, strain, workouts, auth), and the descriptions explicitly cross-reference each other to steer selection (e.g. 'for today alone use get_today; for the sleep behind the numbers use get_sleep_analysis'). Boundaries between the single-day and trend tools are clearly spelled out, so misselection is unlikely.
All six tools use a uniform snake_case get_* pattern (get_auth_url, get_today, get_recovery_trends, get_sleep_analysis, get_strain_history, get_workouts). The convention is predictable and readable throughout.
Six tools is well-scoped for a read-only WHOOP data server: one auth helper, one current-status snapshot, and four trend/history tools. Each tool earns its place with no redundancy or filler.
The surface covers the core lifecycle of WHOOP data: auth, today's recovery/sleep/strain, and trend views for recovery, sleep, strain, and workouts. Minor gaps exist (e.g. no user profile/basic account info and no auth-revocation tool), but agents can work around these.