
Research
/Security News
737 Chrome VPN Extensions Linked to Brand Impersonation and Browser Traffic Redirection
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.
@davidbatista/whoop-mcp-server
Advanced tools
Unofficial MCP server for connecting AI agents to the WHOOP API.
Unofficial MCP server for connecting AI agents to the WHOOP API.
Unofficial project: this repository is not affiliated with, endorsed by, sponsored by, or supported by WHOOP, Inc. WHOOP is a trademark of its respective owner. Use this project only with your own WHOOP account and according to WHOOP's Developer Terms and API policies.
whoop-mcp-server lets MCP-compatible agents read WHOOP data through the official WHOOP OAuth API:
doctor and auth CLI commands for setup without manual code copyingThe server runs over MCP stdio, so it works well as a local integration for agents such as Hermes, OpenClaw, Claude Desktop, Cursor, and other MCP clients.
~/.whoop-mcp/tokens.json with 0600 permissions.whoop_revoke_access is intentionally destructive and removes access.WHOOP_PRIVACY_MODE defaults to structured; full raw WHOOP payloads are opt-in.Official WHOOP API docs: https://developer.whoop.com/api/
After npm publication:
npx -y @davidbatista/whoop-mcp-server doctor
For MCP clients, use the package with no subcommand so it starts the MCP stdio server.
git clone https://github.com/davidmosiah/whoop-mcp.git
cd whoop-mcp
npm install
npm run build
export WHOOP_CLIENT_ID="your-client-id"
export WHOOP_CLIENT_SECRET="your-client-secret"
export WHOOP_REDIRECT_URI="http://127.0.0.1:3000/callback"
# Optional
export WHOOP_TOKEN_PATH="$HOME/.whoop-mcp/tokens.json"
export WHOOP_SCOPES="read:recovery read:cycles read:workout read:sleep read:profile read:body_measurement"
export WHOOP_PRIVACY_MODE="structured" # summary | structured | raw
export WHOOP_CACHE="sqlite" # optional: true/sqlite/on
export WHOOP_CACHE_PATH="$HOME/.whoop-mcp/cache.sqlite"
Default scopes:
read:recovery read:cycles read:workout read:sleep read:profile read:body_measurement
This is the recommended path for non-technical setup:
npx -y @davidbatista/whoop-mcp-server setup
npx -y @davidbatista/whoop-mcp-server auth
npx -y @davidbatista/whoop-mcp-server doctor
What these commands do:
setup asks for WHOOP credentials, writes local config, and creates a client config/snippet.doctor checks Node.js, required WHOOP env vars, redirect URI, token file, privacy mode and cache.auth starts a temporary local callback server, opens the WHOOP authorization page, captures the OAuth code and saves tokens locally.doctor --json returns the same setup state in machine-readable form.~/.whoop-mcp/config.json with 0600 permissions, so MCP client configs do not need to contain your WHOOP secret.For automatic auth, configure the WHOOP Developer app redirect URI as:
http://127.0.0.1:3000/callback
Example local config:
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/absolute/path/to/whoop-mcp/dist/index.js"]
}
}
}
For npm/npx usage after publication:
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": ["-y", "@davidbatista/whoop-mcp-server"]
}
}
}
If you do not run setup, you can still provide WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET and WHOOP_REDIRECT_URI through your MCP client env block. Prefer setup for less secret sprawl.
Recommended for humans:
npx -y @davidbatista/whoop-mcp-server auth
Manual MCP-client flow:
whoop_get_auth_url.code or full redirect URL.whoop_exchange_code with that code/URL.whoop_list_recoveries or whoop_get_profile.The exchange tool stores tokens locally and intentionally does not return token values.
whoop_get_auth_url - Generate an OAuth authorization URL.whoop_exchange_code - Exchange authorization code for local tokens.whoop_revoke_access - Revoke WHOOP OAuth access and delete local tokens.whoop_connection_status - Check env, token, Node, redirect, privacy and cache readiness without calling WHOOP.whoop_get_profile - Get basic profile.whoop_get_body_measurements - Get height, weight and max heart rate.whoop_cache_status - Show optional SQLite cache status.whoop_privacy_audit - Show local privacy, cache, env-presence and redaction posture without revealing secrets.All collection tools support:
start: ISO date-time filterend: ISO date-time filterlimit: WHOOP page size, max 25next_token: cursor from a previous callall_pages: fetch multiple pagesmax_pages: cap for multi-page fetchesresponse_format: markdown or jsonprivacy_mode: optional override: summary, structured, or rawTools:
whoop_list_cycleswhoop_list_recoverieswhoop_list_sleepswhoop_list_workoutswhoop_get_cyclewhoop_get_sleepwhoop_get_workoutwhoop_get_cycle_sleepwhoop_get_cycle_recoveryThese tools fetch the required WHOOP collections, compute defensive baselines, and return structured coaching context for agents. They are read-only and do not store data locally.
whoop_daily_summary - Latest recovery/sleep/load signals plus action candidates for the next 24 hours.whoop_weekly_summary - Weekly scorecard, prior-window comparison, bottlenecks, action candidates and next-week success metrics.whoop://latest/recoverywhoop://latest/sleepwhoop://latest/cyclewhoop://summary/dailywhoop://summary/weeklydaily_performance_coachweekly_training_reviewsleep_recovery_investigatorDaily summary inputs:
days: lookback window for baseline, default 10, min 7, max 30timezone: display timezone, default UTCresponse_format: markdown or jsonWeekly summary inputs:
days: recent analysis window, default 7compare_days: prior comparison window, default 7, use 0 to disable comparisontimezone: display timezone, default UTCresponse_format: markdown or jsonUse the WHOOP MCP server to summarize my last 7 days of sleep and recovery. Compare HRV, RHR, sleep performance, consistency and strain. Do not provide medical advice.
Fetch my latest recovery, latest sleep and workouts from the last 3 days. Give me a practical training recommendation for today based only on the data.
Call whoop_weekly_summary with response_format=json, then turn the bottlenecks and success metrics into a concrete training, sleep and focus plan for next week.
npm install
npm test
npm run typecheck
npm run build
Run locally:
npm run build
node dist/index.js
Test with MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.js
Optional local HTTP transport:
WHOOP_MCP_TRANSPORT=http WHOOP_MCP_PORT=3000 node dist/index.js
curl http://127.0.0.1:3000/health
This software is provided as-is. It is not a medical device, does not provide medical advice, and should not be used for diagnosis or treatment. Always consult qualified professionals for medical concerns.
FAQs
Unofficial MCP server for connecting AI agents to the WHOOP API.
The npm package @davidbatista/whoop-mcp-server receives a total of 0 weekly downloads. As such, @davidbatista/whoop-mcp-server popularity was classified as not popular.
We found that @davidbatista/whoop-mcp-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.