io.github.souravpn/whoop-mcp
MCP server for WHOOP — gives Claude access to your recovery, sleep, strain, and workout data
Open source Open in the app JSON README (API)
About
MCP server for WHOOP — gives Claude access to your recovery, sleep, strain, and workout data
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- souravpn
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.0.2
- Last push
- 2026-05-27T06:47:22Z
- Repository state
- ativo
- Language
- TypeScript
- Added
- 2026-08-29 04:01:26
- Updated
- 2026-08-29 04:01:26
- Origin id
io.github.souravpn/whoop-mcp
README
# whoop-mcp
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that gives Claude access to your WHOOP biometric data — recovery, sleep, strain, and workouts.
Ask Claude things like:
- _"How's my recovery today?"_
- _"How did I sleep last night?"_
- _"How has my HRV trended this week?"_
- _"What was my strain from yesterday's workout?"_
---
## Privacy
This app accesses your WHOOP data locally on your device. No data is sent to any third-party server.
---
## Tools
| Tool | What it returns |
| --------------------- | --------------------------------------------------------------------- |
| `get_recovery` | Recovery score, HRV, resting HR, SpO2 |
| `get_sleep` | Sleep duration, stages (light/deep/REM), efficiency, respiratory rate |
| `get_strain` | Day strain score, avg/max HR, calories |
| `get_latest_workout` | Most recent workout — sport, duration, strain, HR zones |
| `get_recovery_trend` | Recovery scores over N days (default 7) |
| `get_sleep_trend` | Sleep data over N days (default 7) |
| `get_workout_history` | Recent workout history (default 5) |
| `get_profile` | Profile + body measurements |
---
## Setup
### 1. Create a WHOOP developer app
1. Go to [developer-dashboard.whoop.com](https://developer-dashboard.whoop.com)
2. Sign in with your WHOOP account
3. Create a new App:
- Name: `whoop-mcp` (or anything)
- Redirect URI: `http://localhost:8080/callback`
- Scopes: select all read scopes + `offline`
4. Copy your **Client ID** and **Client Secret**
### 2. Install
```bash
npm install -g @souravpn/whoop-mcp
```
### 3. Run one-time auth setup
This opens your browser, you log into WHOOP, and your tokens are saved to `~/.whoop-mcp-tokens.json`:
```bash
WHOOP_CLIENT_ID=your_id WHOOP_CLIENT_SECRET=your_secret whoop-mcp-auth-setup
```
You only need to do this once. The server will auto-refresh tokens after that.
### 4. Add to Claude Desktop
Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
```json
{
"mcpServers": {
"whoop": {
"command": "@souravpn/whoop-mcp",
"env": {
"WHOOP_CLIENT_ID": "your_client_id",
"WHOOP_CLIENT_SECRET": "your_client_secret"
}
}
}
}
```
Restart Claude Desktop. You should see a green "running" badge in **Settings → Developer**.
### 5. Test it
Open a new chat and ask:
```
How's my recovery today?
```
---
## Example queries
**Daily check-in:**
```
What's my recovery, sleep, and strain for today?
```
**Trend analysis:**
```
How has my HRV trended over the past 7 days?
```
**Workout correlation:**
```
Look at my workouts this week and my recovery scores
the day after each one. Is there a pattern?
```
**Full briefing:**
```
Give me a complete health briefing — recovery, last
night's sleep breakdown, and any workouts from yesterday
```
---
## Pairing with Oura
If you also use Oura Ring, you can run both MCP servers together and ask Claude to cross-reference:
```json
{
"mcpServers": {
"whoop": {
"command": "/path/to/whoop-mcp",
"env": { "WHOOP_ACCESS_TOKEN": "your_whoop_token" }
},
"oura": {
"command": "/path/to/oura-mcp",
"env": { "OURA_ACCESS_TOKEN": "your_oura_token" }
}
}
}
```
Then ask:
```
Compare my WHOOP and Oura HRV readings for this week.
Do they agree? Which is trending higher?
```
---
## Development
```bash
git clone https://github.com/yourusername/whoop-mcp
cd whoop-mcp
npm install
npm run build
# Test locally
WHOOP_ACCESS_TOKEN=your_token node dist/index.js
```
### Project structure
```
whoop-mcp/
├── src/
│ ├── index.ts # MCP server + tool definitions
│ └── whoop.ts # WHOOP API client + formatters
├── package.json
├── tsconfig.json
└── README.md
```
---
## Contributing
PRs welcome. Some ideas for extension:
- Heart rate time series data
- Sleep stage timeline (light/deep/REM per hour)
- Strain goal recommendations
- Weekly summary tool
---
## License
MIT
---
## Acknowledgements
Built with the [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) and the [WHOOP Developer API](https://developer.whoop.com).