WHOOP recovery, sleep, strain, and workouts for any AI. Analysis tools, demo mode, fast setup.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
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.
Runs on your machine. Read-only. The only network peer is api.prod.whoop.com. No telemetry. MIT.
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.
Install the tool:
(pipx install whoop-mcp-server works the same.)
Then run the one command that does everything:
Here is what happens, in order, so nothing surprises you:
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.
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.
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.
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.
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.
| 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 and open it (needs 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 |
| Windsurf | auto via setup |
| VS Code | auto via setup, or |
| 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 |
ChatGPT connects to remote MCP servers, so expose the HTTP transport and tunnel it:
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.
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.
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.
Nothing required after whoop-mcp-server setup. Overrides, in priority order: process env, ./.env, ~/.whoop-mcp/.env, ~/.whoop-mcp/config.json.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/whoop-mcp-4)<a href="https://allmcps.com/mcp/whoop-mcp-4"><img src="https://allmcps.com/api/badge/whoop-mcp-4?style=directory" alt="Whoop MCP on AllMCPs" /></a>