Your WHOOP data, inside your AI assistant
FitnessPeak is a hosted MCP server for WHOOP. Paste one URL and one key into Claude, Cursor or VS Code — then ask your assistant why your recovery tanked, whether to train today, or what your HRV did all month.
Stop exporting CSVs. Just ask.
Your assistant calls the tool, reads the table, and answers in context — with the rest of your conversation, your training plan and your calendar already in mind.
- Ask in plain language across any date range
- Follow-up questions work — the data stays in context
- Combine WHOOP data with everything else your assistant knows
Your recovery dropped to 43% Monday and 38% Tuesday — the two lowest of the week. HRV fell from 94 ms to 51 ms and resting heart rate climbed 9 bpm, which usually points at accumulated load or illness rather than one bad night. Skin temperature was also up 0.8°C. It rebounded to 82% by Thursday, so this looks like a transient dip, not a trend.
Two minutes, two paste operations
No developer account. No local process. No OAuth dance in your client.
Connect WHOOP once, here
Sign in, click Connect WHOOP, approve on WHOOP's own screen. We hold the tokens and refresh them forever. You never see a client secret.
Copy your key
Your dashboard shows an MCP URL and a key that starts with
fp_live_. That's the whole credential.Paste into your client
One command for Claude Code, one JSON block for everything else.
Claude Codeclaude mcp add --transport http fitnesspeak https://fitnesspeak.app/mcp \ --header "Authorization: Bearer fp_live_YOUR_KEY_HERE"claude_desktop_config.json / mcp.json{ "mcpServers": { "fitnesspeak": { "type": "http", "url": "https://fitnesspeak.app/mcp", "headers": { "Authorization": "Bearer fp_live_YOUR_KEY_HERE" } } } }Ask a question
“How did I sleep this week?” Your assistant discovers the tools on its own and calls them when they're relevant.
Five WHOOP tools, one status tool
Each returns a compact markdown table — cheaper in tokens than raw JSON and easier for a model to reason over.
whoop_recovery
Recovery %, resting heart rate, HRV (RMSSD), blood oxygen and skin temperature, one row per physiological day.
Tool reference →whoop_sleep
Time asleep, REM / deep / light / awake breakdown, sleep performance, efficiency and respiratory rate. Naps optional.
Tool reference →whoop_workouts
Per-session sport, strain, duration, average and max heart rate, calories and distance.
Tool reference →whoop_cycles
Whole-day, wake-to-wake strain with average and max heart rate — the number to use for weekly training load.
Tool reference →whoop_profile
Name, WHOOP user id, height, weight and max heart rate — what a calculation needs when it has to normalise by body mass.
Tool reference →fitnesspeak_status
What's connected and whether the subscription is live. The tool your assistant calls when something else says “not connected”.
All tools →Sample output from whoop_recovery({ days: 7 }):
## WHOOP Recovery — 2026-08-07 to 2026-08-14 (7 records)
| Date | Recovery | RHR | HRV | SpO2 | Skin temp | Notes |
|---|---|---|---|---|---|---|
| 2026-08-08 | 71% | 48 bpm | 94 ms | 96% | 33.4°C | |
| 2026-08-09 | 64% | 50 bpm | 81 ms | 96% | 33.6°C | |
| 2026-08-10 | 43% | 55 bpm | 58 ms | 95% | 34.1°C | |
| 2026-08-11 | 38% | 57 bpm | 51 ms | 95% | 34.2°C | |
| 2026-08-12 | 59% | 51 bpm | 74 ms | 96% | 33.7°C | |
| 2026-08-13 | 78% | 46 bpm | 103 ms | 97% | 33.3°C | |
| 2026-08-14 | 82% | 45 bpm | 111 ms | 97% | 33.2°C | |
**Period average:** avg Recovery 62% · avg HRV 82 ms · avg RHR 50 bpm
_Data by WHOOP._
Works with the client you already use
Any MCP client that can call an HTTPS endpoint. That's the advantage of hosting it.
Clients that spawn a local process, and clients that can't spawn anything at all — mobile assistants, browser-based clients, scheduled agents — both work here. A local stdio server only covers the first kind.
The only hosted MCP server built specifically for WHOOP.
Every WHOOP MCP server we can find on GitHub runs locally on your own machine. They are genuinely good software — and every one of them puts these five jobs on you.
01No WHOOP developer account
Self-hosting means registering your own app on WHOOP's developer dashboard, naming a redirect URI, and copying a client secret into a config file. With FitnessPeak you click Connect WHOOP, approve, done.
02Nothing to keep running
A stdio MCP server only exists while your laptop is awake and the client that spawned it is open. Ours answers over HTTPS from a server that stays up — so the same key works from your phone's assistant, your work laptop, and a scheduled agent at 6am.
03Token refresh is our problem
WHOOP access tokens last about an hour and the refresh token rotates on every use. Get that wrong once and the connection silently dies. We serialise refreshes per account and tell you by email if one ever fails for good.
04Works in clients that can't spawn processes
Mobile assistants, browser-based clients and scheduled agents cannot launch a local binary. A hosted HTTPS endpoint is the only thing they can talk to at all.
05Updates without a git pull
WHOOP moved from API v1 to v2 and changed sleep and workout IDs from integers to UUIDs. Self-hosters had to notice, read the changelog, and update. Hosted users had nothing to do.
| Self-hosted open-source MCP | FitnessPeak | |
|---|---|---|
| WHOOP developer app required | Yes | No |
| Runs when your laptop is closed | No | Yes |
| Works in mobile and browser clients | No | Yes |
| Token refresh handled for you | No | Yes |
| Survives WHOOP API changes without a git pull | No | Yes |
| Cost | Free + your time | $39/year |
Read the full comparison, including when you should self-host instead →
Read-only, encrypted, and yours to revoke
This is health data. We treat it that way.
- Read-only. We request only WHOOP's
read:scopes. There is no write path in the codebase. - Encrypted at rest. WHOOP tokens are sealed with AES-256-GCM under a key that lives in the environment, not the database.
- Never in a tool result. Your tokens are never returned to the model or the client.
- One-click revoke. Kill an API key or disconnect WHOOP whenever you like.
- Real deletion. Delete your account and every row goes with it.
We are not a data business. FitnessPeak charges $39 a year because that's the product. We don't sell, share, or train on your WHOOP data, and we don't have an advertising surface that would tempt us to.
Why a bearer key and not OAuth
An OAuth flow between your MCP client and us would mean a consent screen in every client, on every device, plus token storage in each one. You already did one OAuth flow — to WHOOP, on our site, once. A revocable bearer key is simpler for you and no weaker in practice, because it's scoped to read-only data and you can rotate it instantly.
Frequently asked
Do I need a WHOOP developer account?
Does my AI client have to support OAuth?
Can FitnessPeak change anything in my WHOOP account?
What does it cost?
Which AI clients work with it?
Isn't there a free open-source WHOOP MCP server?
Ask your assistant how you slept
14-day free trial. Card required so there's no second signup at the end; cancel before day 14 and you're charged nothing.
$39 per year after the trial. Cancel in one click.