whoop-mcp-serverCAUTION
Your WHOOP recovery, sleep, strain and workouts in Claude, ChatGPT or other MCP apps. Self-hosted.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/yuridivonis/whoop-mcp-server/actions/workflows/ci.yml) [](https://scorecard.dev/viewer/?uri=github.com/yuridivonis/whoop-mcp-server) [](https://www.bestpractices.dev/projects/14971) [](https://github.com/yuridivonis/whoop-mcp-server/releases/latest) [](LICENSE)
Your WHOOP data in whichever AI you use, or, soon, in your own code. Self-hosted, private, and open source.
Ask Claude, ChatGPT or another MCP app "How did I sleep this week?" and get the answer from your own recovery, sleep, strain and workouts. You run the server yourself: it fetches your data from WHOOP when you ask and keeps no copy, and only the apps you've allowed can reach it.
This is an independent open-source project. It uses the WHOOP API to access data from WHOOP products, and is not affiliated with, endorsed by, or sponsored by WHOOP.
Two ways in
- Talk to your data. Deploy the server, connect it to your AI, and ask. Start with Setup, then Add to your AI, which also lists the apps tested so far.
- Build with it. The WHOOP client inside this server (typed, tested, and careful with WHOOP's single-use refresh tokens) is being split out as a library for your own code. It isn't published yet: watch this repository's releases to hear when it is.
Built on the Whoop Developer API v2, and the [Model Context Protocol](https://modelcontextp
35f5e64f1579OBSERVED · 2026-10-10Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add whoop-mcp-server:1.5.1 --env WHOOP_CLIENT_SECRET=${WHOOP_CLIENT_SECRET} --env MCP_AUTH_PASSWORD=${MCP_AUTH_PASSWORD} --env ENCRYPTION_SECRET=${ENCRYPTION_SECRET} -- docker run -i --rm ghcr.io/yuridivonis/whoop-mcp-server:1.5.1:NoneExposed tools (5)
5 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
get_auth_url | read | Returns a one-time link that connects the user |
get_recovery_trends | read | Returns daily recovery for the last |
get_sleep_analysis | read | Returns nightly sleep for the last |
get_strain_history | read | Returns daily strain for the last |
get_workouts | read | Returns individual workouts from the last |
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (1 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (10)
process.stdout.write(`Whoop MCP server running on http://0.0.0.0:${config.port}\n`);const PASSWORD = 'a-long-enough-password';
{ name: 'VS Code, on 127.0.0.1:33418 with no path', redirectUri: 'http://127.0.0.1:33418', destination: 'an app on this computer', resource: mcp, tokenAuth: 'none' },'http://127.0.0.1:33418/callback',
for (const uri of [`https://${good}/cb`, `https://${good.toUpperCase()}/cb`, `http://127.0.0.1:${port}/cb`, `http://localhost:${port}`, 'cursor://anysphere.cursor-mcp/oauth/callback']) {@modelcontextprotocol/sdk, better-sqlite3, express, express-rate-limit, @types/better-sqlite3, @types/express, @types/node, fast-check
- **Sign-in page:** a clearer design. The heading names where your WHOOP data goes, what the app can read shows at a glance, the password field says it's the server password and not your WHOOP passwor
| 1. Use of WHOOP APIs, *Permitted Access* | One set of WHOOP credentials per application | Give each deployment its own Whoop developer app. |
cat > .env << EOF
**Not yet tested live.** From [VS Code's docs](https://code.visualstudio.com/docs/agent-customization/mcp-servers), run **MCP: Add Server** from the Command Palette, or add this to `.vscode/mcp.json`
Gates applied: no_behavioural_pass.
35f5e64f1579full audit observations/trust-audit/mcp-server/yuridivonis__whoop-mcp-server.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | 35f5e64f1579 | CAUTION | B | 89 | first audit |
Questions
What is the whoop-mcp-server MCP server?
Your WHOOP recovery, sleep, strain and workouts in Claude, ChatGPT or other MCP apps. Self-hosted.
What tools does whoop-mcp-server expose?
5 in total: 5 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is whoop-mcp-server safe to connect to an agent?
With care. The audit graded it B (89/100) and found 10 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does whoop-mcp-server need?
It reads ENCRYPTION_SECRET, MCP_AUTH_PASSWORD and WHOOP_CLIENT_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does whoop-mcp-server run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @yuridivonis/whoop-client at 0.0.0.
How current is this page?
The grade is for one exact copy of the source (35f5e64f1579), read on 2026-10-10. The repository is watched and re-audited when it changes.