Ask your AI anything about your WHOOP data
claude mcp add whoop -- python -m -e{
"mcpServers": {
"whoop": {
"command": "python",
"args": ["-m", "-e"]
}
}
}MCP Servers overview
<!-- mcp-name: io.github.rajdeepmondaldotcom/whoop-mcp-server -->
# whoop-mcp-server
Your WHOOP shows you charts. It can't answer "should I train hard today" or "what actually hurts my recovery". This server can.
It connects your WHOOP data to Claude, ChatGPT, and any MCP client. You ask in plain English. It computes the answer from your own records and lets the AI explain it.
[](https://github.com/rajdeepmondaldotcom/whoop-mcp-server/actions/workflows/ci.yml)
[](https://github.com/rajdeepmondaldotcom/whoop-mcp-server)
[](LICENSE)
[](https://modelcontextprotocol.io)
[](https://glama.ai/mcp/servers/rajdeepmondaldotcom/whoop-mcp-server)
```text
You: should I train hard today?
AI: Recovery 81% (green). HRV trending up. Sleep debt cleared.
Your 7-day load is 0.94x your 28-day base.
You are conditioned for more.
```
Runs on your machine. Read-only. The only network peer is api.prod.whoop.com. No telemetry. MIT.
## What you need
- A WHOOP account. Any membership works.
- [uv](https://docs.astral.sh/uv/) or pipx, to install one command line tool.
- An MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, or ChatGPT.
One constraint to know before you start. WHOOP has no shared developer app, so during setup you create your own free one. It takes about two minutes of clicking, and it is the reason this is private by design: your tokens belong to your app, on your machine, and your health data never routes through anyone else's server. Including mine.
## Set it up
Install the tool:
```bash
uv tool install whoop-mcp-server
```
(`pipx install whoop-mcp-server` works the same.)
Then run the one command that does everything:
```bash
whoop-mcp-server setup
```
Here is what happens, in order, so nothing surprises you:
1. **Your WHOOP app.** The wizard opens WHOOP's developer dashboard and tells you exactly what to click: create a team, create an app, enable every scope including `offline`, set the redirect URL to exactly `http://localhost:8765/callback`. The form requires a privacy policy URL. Use this repo's: `https://github.com/rajdeepmondaldotcom/whoop-mcp-server/blob/main/PRIVACY.md`. Copy the Client ID and Secret, paste them into the terminal. They're stored locally with 0600 permissions.
2. **Authorize.** Your browser opens WHOOP's consent screen. Approve it. Tokens land in `~/.whoop-mcp` and refresh themselves from then on. You never do this again.
3. **Proof.** The wizard makes a live API call and prints your actual latest recovery. If anything is misconfigured, you find out here, in the terminal, not later in a chat window.
4. **Your clients.** It detects Claude Desktop, Cursor, Windsurf, VS Code, and Claude Code, and writes their configs for you. Existing config is backed up before any edit. If Claude Desktop is running, the wizard asks to quit it first, because Desktop silently overwrites config edits made while it's open. Then it launches the configured command once and confirms the server answers. "Done" means verified, not hopeful.
Restart your client. Ask it: "How did I sleep last night?" Then ask the better question: "Give me the full picture of my health this quarter."
Two useful asides. If you want to see the tools work before connecting anything, `whoop-mcp-server serve --demo` serves 150 days of realistic generated data through the same pipeline. And if anything misbehaves later, `whoop-mcp-server doctor` names what's wrong and the fix.
## What you can ask
24 tools cover every public user-readable endpoint in WHOOP's API, plus the analysis layer that turns records into answers.
| Ask | Tool behind it |
| --- | --- |
| "Give me the full picture of my health" | `get_health_overview`: status, trends, training load, records, and correlations in one call |
| "How am I doing today?" | `get_daily_summary`: recovery, sleep, strain, workouts for any day |
| "What actually affects my recovery?" | `get_correlations`: strain vs next-morning recovery, sleep vs recovery, with plain readings |
| "Am I overtraining?" | `get_strain_trends`: acute vs chronic load, per-sport breakdown |
| "Is my HRV improving?" | `get_recovery_trends`: direction, confidence, unusual days |
| "Show my overnight heart rate curve" | `get_sleep_stream`: minute-level HR and skin temp, lowest point and when; `include_raw=true` keeps WHOOP's untouched stream |
| "This month vs last month?" | `compare_periods`: every metric, improved or declined |
| "My records this year?" | `get_personal_records`: bests, worsts, green streaks |
| "Export everything" | `export_data`: full collection history to local JSON and CSV, with raw records by default |
| Week grids, raw records, profile | `get_weekly_report`, `get_sleeps/workouts/cycles/recoveries`, by-id tools with `include_raw`, `get_profile(include_raw=true)` |
| "I have an old WHOOP activity id" | `get_activity_mapping`: map a legacy v1 activity id to its v2 UUID |
| Connection trouble | `get_connection_status`, `connect_whoop_account` |
Dates are plain English everywhere: yesterday, last 30 days, this week, 2 years ago, 2026-05.
ChatGPT's required `search` and `fetch` tools are implemented too, plus 4 resources and 4 ready-made prompts (`morning_readiness`, `weekly_review`, `sleep_coach`, `training_planner`).
More questions worth asking: [docs/PROMPTS.md](docs/PROMPTS.md).
## Works with
| Client | Setup |
| --- | --- |
| Claude Desktop | `whoop-mcp-server setup` configures it for you. No terminal at all: download `whoop-mcp-server.mcpb` from the [latest release](https://github.com/rajdeepmondaldotcom/whoop-mcp-server/releases/latest) and open it (needs [uv](https://docs.astral.sh/uv/) installed; demo mode is a toggle in its settings) |
| Claude Code | `claude mcp add whoop -- whoop-mcp-server serve` (setup offers this too) |
| Cursor | auto via setup, or [](https://cursor.com/install-mcp?name=whoop&config=eyJjb21tYW5kIjoid2hvb3AtbWNwLXNlcnZlciIsImFyZ3MiOlsic2VydmUiXX0%3D) |
| Windsurf | auto via setup |
| VS Code | auto via setup, or [](https://insiders.vscode.dev/redirect/mcp/install?name=whoop&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22whoop-mcp-server%22%2C%22args%22%3A%5B%22serve%22%5D%7D) |
| ChatGPT | remote connector, see below |
| Docker | `docker build -t whoop-mcp-server . && docker run -i --rm -e WHOOP_MCP_DEMO=1 whoop-mcp-server` (mount `~/.whoop-mcp` for real data) |
| Any MCP client | `command: whoop-mcp-server` with `args: ["serve"]`. Inspector: `npx @modelcontextprotocol/inspector whoop-mcp-server serve` |
<details>
<summary><b>ChatGPT setup</b></summary>
ChatGPT connects to remote MCP servers, so expose the HTTP transport and tunnel it:
```bash
whoop-mcp-server serve --transport http --port 8000 # endpoint: /mcp
ngrok http 8000
```
Then in ChatGPT: Settings, Apps & Connectors, Advanced settings, enable Developer mode, create a connector with `https://<your-tunnel>/mcp` and no auth.
Be careful here: a no-auth tunnel means anyone with the URL can read your health data. Keep the URL private and the tunnel short-lived. Claude's stdio setup never exposes anything.
</details>
## Why the answers hold up
The model is maybe 20% of this product. The other 80% is making the numbers right. Models are bad at arithmetic over 90 days of records, so this server computes first and lets the model explain.
- Trend lines are fit to date-sorted series. WHOOP returns records newest-first. Fit arrival order instead and every trend reads backwards.
- Direction respects what the metric means. Rising HRV is improvement. Rising resting heart rate is not.
- Records land on calendar days using their own timezone offset. A sleep belongs to the morning you woke up, even when you travel.
- WHOOP rotates both OAuth tokens on every refresh. Refreshes here are serialized, saved before use, and shared across concurrent requests. Re-running auth rescues a live server without a restart.
- The client honors WHOOP's rate-limit headers, retries with backoff, and caps pagination. When a result is truncated or approximate, the output says so instead of pretending it's complete.
What it can't do: WHOOP's public API has no endpoints yet for Peak features like the stress monitor and healthspan. When WHOOP ships them, they land here. The overnight sensor stream isn't enabled for every account, and the tool reports that instead of failing. Bulk export intentionally fetches the collection endpoints; raw sleep streams are available per sleep with `get_sleep_stream(include_raw=true)`.
105 tests, all offline against a faked WHOOP API. CI on Python 3.10 to 3.13.
## CLI
```text
whoop-mcp-server setup Guided setup: app, authorize, auto-configure clients
whoop-mcp-server serve Run the server (--demo, --transport stdio|http|sse, --host, --port)
whoop-mcp-server status Config and token state
whoop-mcp-server doctor Diagnose setup and connectivity
whoop-mcp-server auth Scriptable OAuth flow
whoop-mcp-server logout Delete tokens (--revoke also revokes at WHOOP)
```
## Configuration
Nothing required after `whoop-mcp-server setup`. Overrides, in priority order: process env, `./.env`, `~/.whoop-mcp/.env`, `~/.whoop-mcp/config.json`.
| Variable | Default | Purpose |
| --- | --- | --- |
| `WHOOP_CLIENT_ID` / `WHOOP_CLIENT_SECRET` | none | WHOOP app credentials |
| `WHOOP_REDIRECT_URI` | `http://localhost:8765/callback` | Must exactly match the dashboard |
| `WHOOP_MCP_DEMO` | off | `1` serves demo data (same as `--demo`) |
| `WHOOP_MCWhat people ask about whoop-mcp-server
What is rajdeepmondaldotcom/whoop-mcp-server?
+
rajdeepmondaldotcom/whoop-mcp-server is mcp servers for the Claude AI ecosystem. Ask your AI anything about your WHOOP data It has 0 GitHub stars and was last updated today.
How do I install whoop-mcp-server?
+
You can install whoop-mcp-server by cloning the repository (https://github.com/rajdeepmondaldotcom/whoop-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is rajdeepmondaldotcom/whoop-mcp-server safe to use?
+
rajdeepmondaldotcom/whoop-mcp-server has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains rajdeepmondaldotcom/whoop-mcp-server?
+
rajdeepmondaldotcom/whoop-mcp-server is maintained by rajdeepmondaldotcom. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to whoop-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy whoop-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/rajdeepmondaldotcom-whoop-mcp-server)<a href="https://claudewave.com/repo/rajdeepmondaldotcom-whoop-mcp-server"><img src="https://claudewave.com/api/badge/rajdeepmondaldotcom-whoop-mcp-server" alt="Featured on ClaudeWave: rajdeepmondaldotcom/whoop-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。