Featured

Deploy OpenClaw in 60 seconds β€” 20% off logoDeploy OpenClaw in 60 seconds β€” 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger β†’
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger β†’
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free β†’
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free β†’
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data β€” no proxies, no parsers, no maintenance.

Start building free β†’
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it β€” secured from day one.

Get it set up for you β†’
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free β†’
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here β†’

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

rajdeepmondaldotcom/whoop-mcp-server MCP server](https://glama.ai/mcp/servers/rajdeepmondaldotcom/whoop-mcp-server/badges/score.svg)](https://glama.ai/mcp/servers/rajdeepmondaldotcom/whoop-mcp-server) 🐍 🏠 🍎 πŸͺŸ 🐧 - WHOOP recovery, sleep, strain, and...

README.md

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

![CI](https://github.com/rajdeepmondaldotcom/whoop-mcp-server/actions/workflows/ci.yml) ![Python 3.10+](https://github.com/rajdeepmondaldotcom/whoop-mcp-server) ![License: MIT](LICENSE) ![MCP](https://modelcontextprotocol.io) ![Glama](https://glama.ai/mcp/servers/rajdeepmondaldotcom/whoop-mcp-server)

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 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:

uv tool install whoop-mcp-server

(pipx install whoop-mcp-server works the same.)

Then run the one command that does everything:

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

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 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 ![Install in Cursor](https://cursor.com/install-mcp?name=whoop&config=eyJjb21tYW5kIjoid2hvb3AtbWNwLXNlcnZlciIsImFyZ3MiOlsic2VydmUiXX0%3D) | | Windsurf | auto via setup | | VS Code | auto via setup, or ![Install in VS Code](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:

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

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_MCP_DIR | ~/.whoop-mcp | Tokens, config, exports | | WHOOP_MCP_TZ | system zone | IANA timezone for "today" and week bounds | | WHOOP_MCP_CACHE_TTL / WHOOP_MCP_TIMEOUT | 60 / 30 | Seconds | | WHOOP_MCP_LOG_LEVEL | INFO | Logs go to stderr. stdout belongs to MCP | | WHOOP_ACCESS_TOKEN | none | Static token for testing, no refresh |

Privacy

Read-only against WHOOP. Tokens stored locally with 0600 permissions. The only writes are local files you ask for (export_data) and the OAuth flow you trigger. One thing worth knowing: aggregates like trends and correlations can reveal more about you than single records. Connect this only to AI clients you trust with health data. Full policy: PRIVACY.md. Vulnerabilities: SECURITY.md.

Contributing

uv venv && uv pip install -e ".[dev]" && pytest && ruff check .

The whole test suite runs offline. CONTRIBUTING.md lists the invariants that keep the data honest. The short version of the architecture: client.py talks to WHOOP, transform.py cleans the records, summaries.py and analytics.py do the math, server.py exposes the tools. oauth.py and tokens.py own auth. demo.py is the generated account.

Troubleshooting

| Symptom | Fix | | --- | --- | | "WHOOP authorization required" | whoop-mcp-server setup, or ask your AI to connect your WHOOP account | | Redirect fails after consent | The dashboard redirect URI must be exactly http://localhost:8765/callback | | 403 missing scope | Enable all read scopes plus offline on the app, then re-run whoop-mcp-server auth | | Tools missing in a client | Re-run whoop-mcp-server setup, then fully restart the client | | No recovery shown today | WHOOP scores it after you wake and sync. The summary says so | | Sleep stream "not available" | WHOOP doesn't expose it for every account. Nightly summaries still work | | Anything else | whoop-mcp-server doctor, or get_connection_status from chat, or open an issue |

License

MIT. See LICENSE. Not affiliated with or endorsed by WHOOP. WHOOP is a trademark of WHOOP, Inc.

See related servers & alternatives β†’

Related MCP servers

Browse all β†’

Related guides

Hand-picked reading to help you choose and use Developer Tools servers.