whoop-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WHOOP_CLIENT_ID | Yes | Your WHOOP developer app Client ID | |
| WHOOP_REDIRECT_URI | Yes | The redirect URI registered in your WHOOP developer app, e.g. http://localhost:3000/callback | |
| WHOOP_CLIENT_SECRET | Yes | Your WHOOP developer app 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 | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Returns pong |
| get_profileA | Returns the user's basic Whoop profile (user id, name, email). Use it to identify whose data is being read. |
| get_recoveryA | Returns daily recovery records (recovery score, HRV, resting heart rate, SpO2, skin temperature) for the last N days. Use it to see how recovered the user is. recovery_score_pct is 0-100% (0-33 red/low, 34-66 yellow/medium, 67-100 green/high). |
| get_sleepA | Returns sleep records (performance, duration, efficiency, time in each stage) for the last N days, including naps. Use it to analyze sleep quality and habits. sleep_performance_pct is 0-100% (actual sleep vs. sleep needed); efficiency is the share of time in bed spent asleep. Summary stats exclude naps. |
| get_workoutsA | Returns workout records (sport, duration, strain, average and max heart rate) for the last N days. Use it to review training activity. strain is 0-21 on Whoop's logarithmic scale (0-9 light, 10-13 moderate, 14-17 high, 18-21 all-out). |
| get_cyclesA | Returns daily physiological cycles (day strain and average heart rate) for the last N days. Use it to see overall daily strain. strain is 0-21 on Whoop's logarithmic scale (0-9 light, 10-13 moderate, 14-17 high, 18-21 all-out); the latest cycle may still be in progress. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| weekly_review | Fetches recent Whoop data and writes a short review of recovery, sleep, and workload. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| profile-summary | The user's basic Whoop profile (user id and name), fetched live. Contains no email address. |
TDQS
Scored across 6 tools
Each data tool targets a clearly distinct Whoop resource: profile, recovery, sleep, workouts, and daily cycles. The only potential overlap—strain in get_workouts vs. day strain in get_cycles—is well separated by descriptions as workout-level vs. daily physiological cycle data.
Five of six tools follow a clean get_noun snake_case pattern: get_profile, get_recovery, get_sleep, get_workouts, get_cycles. The lone ping tool is a conventional health-check exception, but it is a minor deviation from the otherwise consistent naming scheme.
Six tools are well-scoped for a focused Whoop data retrieval server. Each data tool maps to a distinct core resource, and ping is a lightweight utility that does not bloat the surface.
The tool set covers the main Whoop data domains: profile, recovery, sleep, workouts, and daily cycles. For a read-only health-data integration, this provides complete core coverage with no obvious dead ends.