WHOOP MCP Server
Click on "Install 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 ServerWhat was my recovery score this morning?"
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
A Model Context Protocol server that gives Claude access to your WHOOP health data via the WHOOP Developer API (API v2).
Tools
Tool | Description |
| Start the OAuth 2.0 flow — call this once to connect your WHOOP account |
| Latest recovery score, HRV, resting heart rate, SpO2, skin temperature |
| Sleep duration, efficiency, stage breakdown, disturbances, respiratory rate |
| Recent workouts with strain, sport type, HR zones, calories |
| Physiological cycles (days) with strain and recovery summary |
| Height, weight, and max heart rate |
| Basic profile (name, email) |
Parameters: the data tools (get_recovery, get_sleep, get_workouts, get_cycles) accept optional filters:
limit— number of records to return (default 1 for recovery/sleep, 5 for workouts/cycles; max 25)start_date/end_date— ISO 8601 timestamps, e.g.2024-01-01T00:00:00.000Zinclude_naps—get_sleeponly; include nap records (defaultfalse)
get_body_measurements and get_profile take no parameters.
Related MCP server: Whoop MCP Server
Prerequisites
Node.js 18 or later
A WHOOP Developer account and OAuth app
Setup
1. Create a WHOOP Developer App
Go to https://developer.whoop.com/ and sign in.
Create a new application.
Add
http://localhost:8080/callbackas a Redirect URI (or use a custom port — just keep it consistent withWHOOP_REDIRECT_URI).Enable the following scopes on the app — the server requests all of them, and data tools will return empty or fail if any are missing:
offline(required — grants the refresh token so you only authenticate once)read:recoveryread:sleepread:workoutread:cyclesread:body_measurementread:profile
Copy your Client ID and Client Secret.
2. Install and build
git clone <this-repo>
cd whoop-mcp
npm install
npm run build3. Configure environment variables
cp .env.example .envEdit .env:
WHOOP_CLIENT_ID=your_client_id_here
WHOOP_CLIENT_SECRET=your_client_secret_here
WHOOP_REDIRECT_URI=http://localhost:8080/callbackSecurity note:
.envis never committed. Tokens are stored in~/.whoop-mcp-tokens.jsonwith600permissions (owner read/write only).
4. Add to Claude's MCP configuration
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/absolute/path/to/whoop-mcp/dist/index.js"],
"env": {
"WHOOP_CLIENT_ID": "your_client_id_here",
"WHOOP_CLIENT_SECRET": "your_client_secret_here",
"WHOOP_REDIRECT_URI": "http://localhost:8080/callback"
}
}
}
}You can either set the env vars here or rely on a
.envfile in the project root (loaded bydotenv).
Claude Code (.claude/settings.json or via claude mcp add)
claude mcp add whoop node /absolute/path/to/whoop-mcp/dist/index.js \
-e WHOOP_CLIENT_ID=your_client_id \
-e WHOOP_CLIENT_SECRET=your_client_secret \
-e WHOOP_REDIRECT_URI=http://localhost:8080/callbackOr manually in .claude/settings.json:
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/absolute/path/to/whoop-mcp/dist/index.js"],
"env": {
"WHOOP_CLIENT_ID": "...",
"WHOOP_CLIENT_SECRET": "...",
"WHOOP_REDIRECT_URI": "http://localhost:8080/callback"
}
}
}
}5. Authenticate
Once the server is running in Claude, call the authenticate tool:
You: Use the
authenticatetool to connect my WHOOP account.
Claude will display an authorization URL. Open it in your browser, approve access, and the tokens will be saved automatically to ~/.whoop-mcp-tokens.json.
Tokens refresh automatically — you only need to authenticate once.
Example prompts
What was my recovery score this morning?
Show me my last 7 days of sleep data.
How has my HRV trended over the past month?
What workouts did I do this week and what was my strain?
What are my body measurements on WHOOP?Token storage
Tokens are stored in
~/.whoop-mcp-tokens.json(or the path inWHOOP_TOKEN_FILE).The file is created with
0600permissions so only your user can read it.Access tokens are refreshed automatically 60 seconds before expiry using the stored refresh token.
Development
# Compile TypeScript in watch mode
npm run dev
# Run directly (after building)
npm startTroubleshooting
Problem | Fix |
| Ensure |
| Call the |
Port 8080 already in use | Change |
Token refresh fails | Delete |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/maangy/whoop-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server