Back to the catalog

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).

More