Server data from the Official MCP Registry
MCP server for WHOOP health data — recovery, sleep, workouts, cycles, and more.
MCP server for WHOOP health data — recovery, sleep, workouts, cycles, and more.
Valid MCP server (1 strong, 1 medium validity signals). 3 known CVEs in dependencies (0 critical, 3 high severity) Package registry verified. Imported from the Official MCP Registry.
4 files analyzed · 4 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: WHOOP_CLIENT_ID
Environment variable: WHOOP_CLIENT_SECRET
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-shashankswe2020-ux-whoop": {
"env": {
"WHOOP_CLIENT_ID": "your-whoop-client-id-here",
"WHOOP_CLIENT_SECRET": "your-whoop-client-secret-here"
},
"args": [
"-y",
"whoop-ai-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
An MCP (Model Context Protocol) server that connects AI assistants like Claude to your WHOOP health and fitness data. Ask questions about your recovery, sleep, workouts, and more — all through natural conversation.
📦 Published on the MCP Registry as
io.github.shashankswe2020-ux/whoop— discoverable by any MCP-compatible client.
~/.whoop-mcp/tokens.json with 0600 permissions@modelcontextprotocol/sdk + zod)Based on npm search results for whoop mcp on 2026-04-17.
| Package | Latest version | Last publish (UTC) | MCP Registry metadata (mcpName) | Runtime deps | npm |
|---|---|---|---|---|---|
| whoop-ai-mcp (this repo) | 0.2.1 | 2026-04-16 | ✅ io.github.shashankswe2020-ux/whoop | 2 | https://www.npmjs.com/package/whoop-ai-mcp |
| whoop-mcp-server | 0.0.5 | 2026-03-13 | — | 2 | https://www.npmjs.com/package/whoop-mcp-server |
| whoop-mcp | 0.1.2 | 2026-03-11 | — | 2 | https://www.npmjs.com/package/whoop-mcp |
| @alacore/whoop-mcp-server | 1.0.1 | 2025-10-09 | — | 2 | https://www.npmjs.com/package/@alacore/whoop-mcp-server |
| @iflow-mcp/nissand-whoop-mcp-server | 1.0.3 | 2026-03-24 | — | 3 | https://www.npmjs.com/package/@iflow-mcp/nissand-whoop-mcp-server |
| @roebot0/whoop-mcp | 1.0.0 | 2026-04-06 | — | 3 | https://www.npmjs.com/package/@roebot0/whoop-mcp |
Why this package stands out
mcpName metadata)Evidence basis: npm registry metadata + npm-hosted README signals + package manifest fields (dependencies, repository, mcpName) collected on 2026-04-17.
Scoring dimensions (0–5):
0600)mcpName), repository metadata present, and lean runtime dependency count (<=2)Ratings are documentation/metadata-driven and are not a source-code security audit.
| Package | Security & resilience | Freshness | Docs & verification | Discoverability | Overall rating | Key observed gap vs whoop-ai-mcp |
|---|---|---|---|---|---|---|
| whoop-ai-mcp (this repo) | 5.0/5 | 5.0/5 | 5.0/5 | 5.0/5 | 5.0/5 | Baseline |
| whoop-mcp-server | 3.8/5 | 4.0/5 | 2.5/5 | 3.3/5 | 3.4/5 | No explicit 0600 token permission docs; no mcpName; no Inspector/changelog signal in npm README |
| @roebot0/whoop-mcp | 2.5/5 | 5.0/5 | 1.3/5 | 1.7/5 | 2.7/5 | No 0600 docs; no mcpName; no explicit Inspector/changelog/testing signal in npm README |
| @alacore/whoop-mcp-server | 2.5/5 | 2.0/5 | 2.5/5 | 3.3/5 | 2.5/5 | Older publish cadence; no explicit 0600 docs; no mcpName; retry/backoff not explicitly documented |
| @iflow-mcp/nissand-whoop-mcp-server | 2.5/5 | 4.0/5 | 1.3/5 | 1.7/5 | 2.4/5 | No explicit token-refresh/0600 docs; no repository metadata in npm manifest; no mcpName |
| whoop-mcp | 0.0/5 | 4.0/5 | 0.0/5 | 3.3/5 | 1.5/5 | OAuth/refresh/retry/0600 behavior not explicitly documented in npm README; no mcpName |
Watch a detailed walkthrough of setting up and using whoop-ai-mcp with Claude Desktop:
Covers: creating a WHOOP Developer App, configuring Claude Desktop, OAuth authentication, and querying your health data through natural conversation.
http://localhost:3000/callbackDon't have a WHOOP yet? Here's how to get started:
This server is published on the official MCP Registry. MCP clients that support the registry can discover and install it automatically:
Server name: io.github.shashankswe2020-ux/whoop
You can also browse it via the registry API:
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.shashankswe2020-ux/whoop"
Add this to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": ["whoop-ai-mcp"],
"env": {
"WHOOP_CLIENT_ID": "your_client_id",
"WHOOP_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Replace your_client_id and your_client_secret with the credentials from your WHOOP Developer App.
On first launch, a browser window will open for you to authorize access to your WHOOP data. After authorizing, tokens are cached locally and refresh automatically.
Then ask Claude something like:
"How was my recovery this week?"
"Show me my sleep data from the last 3 days"
"What workouts did I do this month?"
whoop-mcp connected in Claude Desktop:

Chatting with WHOOP data through Claude:

No installation needed — Claude Desktop runs it automatically with the config above.
npm install -g whoop-ai-mcp
git clone https://github.com/shashankswe2020-ux/whoop-mcp.git
cd whoop-mcp
npm install
npm run build
| Variable | Required | Description |
|---|---|---|
WHOOP_CLIENT_ID | Yes | Your WHOOP Developer App client ID |
WHOOP_CLIENT_SECRET | Yes | Your WHOOP Developer App client secret |
Set these in your Claude Desktop config (see Quickstart) or as shell environment variables:
export WHOOP_CLIENT_ID=your_client_id
export WHOOP_CLIENT_SECRET=your_client_secret
http://localhost:3000/callbackhttps://github.com/shashankswe2020-ux/whoop-mcp or your own URLread:profileread:recoveryread:sleepread:workoutread:cyclesread:body_measurementget_profileGet the authenticated user's basic profile — name and email.
Parameters: None
get_body_measurementGet the user's body measurements — height, weight, and max heart rate.
Parameters: None
get_recovery_collectionGet recovery scores for a date range. Returns HRV, resting heart rate, SpO2, and skin temp for each day.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | No | Return records after this time (inclusive). ISO 8601 format. |
end | string | No | Return records before this time (exclusive). Defaults to now. |
limit | number | No | Max records to return (1–25). Defaults to 10. |
nextToken | string | No | Pagination token from a previous response. |
get_sleep_collectionGet sleep records for a date range. Returns sleep stages, duration, respiratory rate, and performance scores.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | No | Return records after this time (inclusive). ISO 8601 format. |
end | string | No | Return records before this time (exclusive). Defaults to now. |
limit | number | No | Max records to return (1–25). Defaults to 10. |
nextToken | string | No | Pagination token from a previous response. |
get_workout_collectionGet workout records for a date range. Returns strain, heart rate zones, calories, and sport type.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | No | Return records after this time (inclusive). ISO 8601 format. |
end | string | No | Return records before this time (exclusive). Defaults to now. |
limit | number | No | Max records to return (1–25). Defaults to 10. |
nextToken | string | No | Pagination token from a previous response. |
get_cycle_collectionGet physiological cycles for a date range. Returns strain, calories, and heart rate data per cycle.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
start | string | No | Return records after this time (inclusive). ISO 8601 format. |
end | string | No | Return records before this time (exclusive). Defaults to now. |
limit | number | No | Max records to return (1–25). Defaults to 10. |
nextToken | string | No | Pagination token from a previous response. |
whoop-ai-mcp uses OAuth2 Authorization Code flow with PKCE:
~/.whoop-mcp/tokens.jsonToken files are stored with 0600 permissions (user-only read/write).
Your WHOOP credentials aren't set. Add them to your Claude Desktop config or set them as environment variables. See Configuration.
Check your internet connection. The WHOOP API must be reachable at https://api.prod.whoop.com.
You've hit the rate limit. The server retries automatically with exponential backoff (up to 3 attempts). If this persists, reduce the frequency of your requests.
Your access token has expired. The server attempts an automatic refresh. If that fails, delete ~/.whoop-mcp/tokens.json and restart to re-authenticate:
rm ~/.whoop-mcp/tokens.json
If the browser doesn't open automatically, check the terminal output for the authorization URL and open it manually.
You can interactively test the server using the MCP Inspector — a browser-based tool for exploring and invoking MCP tools.
WHOOP_CLIENT_ID=your_client_id \
WHOOP_CLIENT_SECRET=your_client_secret \
WHOOP_REDIRECT_URI=http://localhost:3000/callback \
npx @modelcontextprotocol/inspector node dist/index.js
Then open http://localhost:6274 in your browser. The Inspector connects to the server, lists all available tools, and lets you invoke them with custom parameters.
OAuth grant access screen (first-run authorization):

Testing get_profile tool in MCP Inspector:

git clone https://github.com/shashankswe2020-ux/whoop-mcp.git
cd whoop-mcp
npm install
| Command | Description |
|---|---|
npm run build | Build TypeScript |
npm test | Run tests (Vitest) |
npm run typecheck | Type check (tsc --noEmit) |
npm run lint | Lint (ESLint) |
npm run lint:fix | Lint + auto-fix |
npm run format | Format (Prettier) |
npm run dev | Run in dev mode (tsx) |
src/
├── index.ts # Entry point — auth, client, server, stdio
├── server.ts # MCP server + tool registration
├── auth/
│ ├── oauth.ts # OAuth2 Authorization Code flow
│ ├── token-store.ts # Secure token persistence
│ └── callback-server.ts # Local OAuth callback server
├── api/
│ ├── client.ts # HTTP client with retry + refresh
│ ├── types.ts # WHOOP API response types
│ └── endpoints.ts # API URL constants
└── tools/
├── get-profile.ts
├── get-recovery.ts
├── get-sleep.ts
├── get-workout.ts
├── get-cycle.ts
├── get-body-measurement.ts
└── collection-utils.ts
This project is published on npm as whoop-ai-mcp.
npm install -g whoop-ai-mcp
Or run directly with npx:
npx whoop-ai-mcp
package.json and add a new entry in CHANGELOG.mdgit commit -am "Release vX.Y.Z"git tag vX.Y.Zgit push origin main vX.Y.ZSee CHANGELOG.md for a full list of changes in each release.
See CONTRIBUTING.md for development workflow, coding conventions, and the project's Copilot agent/skill configuration.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.