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 Serverhow did I sleep last night and what's my recovery score 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
A Model Context Protocol (MCP) server that connects your Whoop health data to Claude. Designed to be hosted remotely and used as a custom connector in Claude.ai.
Built using the Whoop Developer API v2.
Features
Recovery Data: Daily recovery scores, HRV, resting heart rate, SpO2, skin temperature
Sleep Analysis: Sleep duration, stages, efficiency, performance, respiratory rate
Strain Tracking: Daily strain scores, calories burned, heart rate zones
Workout History: All logged workouts with detailed metrics
Auto-Sync: Automatically keeps data fresh with smart sync logic
90-Day History: Maintains local cache of your health data for trend analysis
Related MCP server: WHOOP MCP Server
MCP Tools
Tool | Description |
| Morning briefing with recovery, sleep, and strain |
| Recovery patterns over time with HRV/RHR |
| Sleep quality trends and stage breakdowns |
| Training load and calorie trends |
| Manually trigger a data sync |
| Get authorization URL for Whoop connection |
Setup
1. Create a Whoop Developer App
Go to developer.whoop.com
Create a new application
Note your Client ID and Client Secret
Set the redirect URI to your deployed server's callback URL (e.g.,
https://your-app.railway.app/callback)
2. Deploy to Railway
Fork/push this repo to GitHub
Create a new project on Railway
Connect your GitHub repo
Add environment variables:
WHOOP_CLIENT_ID: Your Whoop app client IDWHOOP_CLIENT_SECRET: Your Whoop app client secretWHOOP_REDIRECT_URI:https://your-app.railway.app/callback
MCP_AUTH_TOKEN: a long random secret — generate withopenssl rand -hex 32. The server refuses to start without it.DB_PATH:/data/whoop.db
Add a volume mounted at
/datafor persistent SQLite storageDeploy!
3. Authorize with Whoop
Visit
https://your-app.railway.app/healthto verify it's runningThe first time you use the
get_auth_urltool in Claude, it will provide an authorization linkVisit the link, log in to Whoop, and authorize the app
You'll be redirected back and the initial 90-day sync will begin
4. Connect to Claude
Go to Claude.ai settings → Connectors
Click "Add custom connector"
Enter:
Name: Whoop
Remote MCP server URL:
https://your-app.railway.app/mcp/<your MCP_AUTH_TOKEN>(the token in the URL is what authenticates Claude; anAuthorization: Bearerheader also works)
Use it in any chat!
Local Development
# Install dependencies
npm install
# Create .env file
cat > .env << EOF
WHOOP_CLIENT_ID=your_client_id
WHOOP_CLIENT_SECRET=your_client_secret
WHOOP_REDIRECT_URI=http://localhost:3000/callback
MCP_MODE=http
EOF
# Run in development mode
npm run devEnvironment Variables
Variable | Description | Default |
| Whoop OAuth client ID | Required |
| Whoop OAuth client secret | Required |
| OAuth callback URL |
|
| SQLite database path |
|
| HTTP server port |
|
|
|
|
Architecture
┌─────────────────────────────────────────────────┐
│ Whoop MCP Server │
│ │
│ ┌─────────────┐ ┌──────────────────┐ │
│ │ MCP Server │◄────►│ SQLite Database │ │
│ │ (HTTP) │ │ - cycles │ │
│ └─────────────┘ │ - recovery │ │
│ │ │ - sleep │ │
│ │ │ - workouts │ │
│ ▼ │ - tokens │ │
│ ┌─────────────┐ └──────────────────┘ │
│ │ Whoop API │ │
│ │ Client │ │
│ └─────────────┘ │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Claude.ai (Custom Connector) │
│ "Hey, what's my recovery today?" │
└─────────────────────────────────────────────────┘API Endpoints Used
This server uses the following Whoop API v2 endpoints:
GET /v2/user/profile/basic- User profileGET /v2/user/measurement/body- Body measurementsGET /v2/cycle- Physiological cycles (strain data)GET /v2/recovery- Recovery scoresGET /v2/activity/sleep- Sleep recordsGET /v2/activity/workout- Workout records
License
MIT - See LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceConnects WHOOP fitness data to Claude Desktop, enabling natural language queries about workouts, recovery, sleep patterns, and physiological cycles with secure OAuth authentication and local data storage.458 npm27MIT
- -licenseNot gradedqualityNot gradedmaintenanceConnects WHOOP fitness data to Claude Desktop, enabling natural language queries about workouts, recovery, sleep patterns, and health metrics while keeping data secure and private.-
- AlicenseNot gradedqualityCmaintenanceConnects Whoop health data to Claude via an MCP server, enabling retrieval of recovery, sleep, strain, and workout metrics through natural language tools.458 npmMIT
- AlicenseNot gradedqualityDmaintenanceConnects WHOOP fitness and recovery data to Claude Desktop, enabling users to query workouts, sleep, recovery, and trends through natural language.MIT