WHOOP MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WHOOP MCP Server how was my recovery today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WHOOP MCP Server
MCP server for WHOOP biometric data. Query recovery, strain, sleep, workouts, and heart rate from any MCP-compatible AI client.
Two Modes
Remote — Calls
/api/whoop/statson a deployed WHOOP-connected site (e.g., patrickwingert.com)Direct — Talks to the WHOOP API directly with local OAuth + token storage
Both modes expose the same 11 tools through a shared interface.
Related MCP server: Whoop MCP Server
Setup
1. Build
npm install
npm run build2. Configure Claude Code
Remote mode (uses an existing WHOOP-connected site):
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/path/to/whoop-mcp-server/dist/index.js"],
"env": {
"WHOOP_MODE": "remote",
"WHOOP_BASE_URL": "https://patrickwingert.com"
}
}
}
}Direct mode (standalone, talks to WHOOP API):
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/path/to/whoop-mcp-server/dist/index.js"],
"env": {
"WHOOP_MODE": "direct",
"WHOOP_CLIENT_ID": "your-client-id",
"WHOOP_CLIENT_SECRET": "your-client-secret"
}
}
}
}3. Direct Mode — WHOOP Developer Setup
Go to WHOOP Developer Portal
Create a new application
Set redirect URI to
http://localhost:8787/callbackEnable scopes:
read:profile,read:recovery,read:cycles,read:workout,read:sleep,read:body_measurementCopy Client ID and Client Secret to your config
4. Direct Mode — OAuth Flow
On first use, the server will need OAuth tokens. The OAuth flow:
Server starts a temporary listener on
localhost:8787Open the generated authorization URL in your browser
Authorize on WHOOP's site
Tokens are stored in
~/.whoop-mcp/tokens.json(chmod 600)Tokens auto-refresh going forward
Tools
Tier 1 — Biometric Data (read-only)
Tool | Description |
| Full biometric snapshot (recovery, strain, HR, sleep, workout) |
| Recovery score (0-100), resting HR, HRV, SpO2, skin temp |
| Daily strain (0-21), kilojoules, average/max HR |
| Latest workout: sport, duration, strain, HR zones, distance |
| Current HR with source context (resting/workout/decay) |
| Sleep performance, stages, efficiency, respiratory rate |
| Sleep need breakdown: baseline, debt, strain impact, nap offset |
Tier 2 — Diagnostics
Tool | Description |
| Endpoint status, token expiry, connection state |
| What's cached, staleness, TTL remaining |
| Force fresh data on next request |
| Current mode, target, scopes, cache TTL |
All tools support response_format: markdown (default, human-readable) or json (structured data).
Environment Variables
Variable | Mode | Required | Description |
| Both | Yes |
|
| Remote | Yes | Base URL of WHOOP-connected app |
| Direct | Yes | From WHOOP developer dashboard |
| Direct | Yes | From WHOOP developer dashboard |
Local Storage (Direct Mode)
~/.whoop-mcp/
├── tokens.json # OAuth tokens (chmod 600)
└── cache.json # Cached API responsesTesting
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsAvailable Tools
16 toolswhoop_authorizeA
Start OAuth flow to connect a WHOOP account. Returns an authorization URL to open in your browser. Direct mode only.
Inputs: no named parameters.
whoop_check_healthB
Connection and endpoint health: status per endpoint, token expiry, connection state
Inputs: response_format.
whoop_get_cache_statusB
Cache freshness: cached data status, age, TTL remaining
Inputs: response_format.
whoop_get_configA
Server configuration: mode, base URL or API target, enabled scopes, cache TTL
Inputs: response_format.
whoop_get_heart_rateB
Current heart rate with context: HR value, source (live/decay/resting), resting HR baseline
Inputs: response_format.
whoop_get_recoveryB
Recovery score and details: score (0-100), resting HR, HRV, SpO2, skin temp
Inputs: response_format.
whoop_get_recovery_historyA
Recent recovery scores: daily recovery, resting HR, HRV, SpO2 trends over multiple days
Inputs: limit, response_format.
whoop_get_sleepB
Latest sleep data: performance %, stages, efficiency, respiratory rate, disturbances, nap flag
Inputs: include_stages, response_format.
whoop_get_sleep_historyB
Recent sleep data: performance, duration, efficiency, stages over multiple nights
Inputs: limit, response_format.
whoop_get_sleep_needC
Sleep need analysis: baseline need, sleep debt, strain-based need, nap offsets
Inputs: response_format.
whoop_get_statsB
Full biometric snapshot: recovery, strain, HR, HRV, SpO2, skin temp, sleep, latest workout
Inputs: response_format.
whoop_get_strainC
Daily strain: strain score (0-21), kilojoules, average and max heart rate
Inputs: response_format.
whoop_get_strain_historyA
Recent daily strain: strain scores, calories, heart rate trends over multiple days
Inputs: limit, response_format.
whoop_get_workoutB
Latest workout: sport, duration, strain, distance, heart rate zones, altitude
Inputs: include_zones, response_format.
whoop_get_workout_historyC
Recent workouts: sport, duration, strain, calories for multiple past workouts
Inputs: limit, response_format.
whoop_invalidate_cacheA
Force fresh data on next request by invalidating the cache
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Most tools are clearly distinct by metric and time range, but whoop_get_stats overlaps with specific getters like whoop_get_recovery and whoop_get_sleep, which could cause an agent to misselect. The descriptions help, but the boundary between the aggregate and specific tools is slightly unclear.
All tools follow a consistent whoop_get_<metric> pattern with snake_case and descriptive names. The pattern is uniform and predictable across the entire set.
With 16 tools, the server is slightly above the typical 3-15 range but still remains well-scoped. Each tool has a distinct role in retrieving or managing WHOOP data, so the count feels reasonable rather than excessive.
The tool set comprehensively covers core WHOOP biometrics—recovery, strain, workout, sleep, and heart rate—with both current and historical data views. The inclusion of health, cache, and config management tools fills the operational gaps, leaving no significant missing operations for the domain.
Maintenance
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Your WHOOP data in the assistant, read-only: recovery, sleep, strain, workouts, cycles and body meas
Read WHOOP recovery, sleep, cycles, workouts and body measurements.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates WHOOP biometric data into Claude and other MCP-compatible applications, providing access to sleep analysis, recovery metrics, strain tracking, and biological age data through natural language queries.14 npm13MIT
- AlicenseNot gradedqualityDmaintenanceConnects Whoop health data to Claude via an MCP server, enabling retrieval of recovery, sleep, strain, and workout metrics through natural language tools.67 npmMIT
- AlicenseAqualityDmaintenanceExposes WHOOP recovery, sleep, strain, and workout metrics to MCP-compatible AI assistants using OAuth 2.0 authentication, enabling daily wellbeing snapshots, trend analysis, and workload recommendations.667 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables users to query WHOOP health data including recovery, sleep, workouts, and cycles through Claude Desktop using MCP tools.-