Total npm downloads
7,946
GitHub stars
166
* Disclaimer

Downloads since first publication, through . Stars checked . Refreshed daily.

Downloads may include automated installs.

WHOOP MCP server · Read-only health data

whoop-mcp

Your recovery, sleep and strain. In your AI assistant.

Open-source software for your existing WHOOP. Not a device.

get_recovery_collection

Recovery.

Recovery scores, HRV and resting heart rate, matched to the right day.

get_sleep_debt

Sleep.

Sleep stages, naps and nightly deficits, kept separate from WHOOP's standing debt.

get_workout_collection

Strain.

Daily strain and every workout, with weekly summaries and trends.

get_baselines

You.

Personal baselines from your own history. Compared with you, not with a population.

Read-only. By design.

16 tools that read and never write. OAuth with PKCE. Tokens stay on the server host with 0600 permissions.

ReadWrite · not available

Choose your
assistant.

Works with the assistant you already use, over stdio or Streamable HTTP.2

Claude DesktopClaude CodeCodexGitHub Copilot

One command.

npx -y whoop-ai-mcp@latest setup

Node.js 20+ with npm. No global installation needed.

Client setup

16 tools · 4 resources · 5 prompts in standard mode

Onyx

Tools and capabilities

Personal analytics

Your history, with the gaps made visible.

Example data · HRV against your p25–p75 baseline

Aggregate-only access

Share summaries. Hold back the records.

All 16 read-only tools, including raw records and the latest observations.

MCP-native

Tools, resources and prompts. Drop it into Claude Desktop or host your own.

16tools
4resources
5prompts
stdioStreamable HTTPOAuth + PKCE

Telemetry

Usage counts, only with your permission.

Off by default.

Setup asks before sending usage counts. Declining does not affect WHOOP access.

Personal analytics

Observations, not diagnoses.

Sixteen read-only tools cover raw records, current health context and personal statistics. Missing data is labeled, never filled in.

get_baselines

What is typical for you?

Compares HRV, resting heart rate, sleep and recovery with your own history. Reports insufficient data when history is too short, rather than guessing a normal range.

get_sleep_debt

Sleep deficit, counted once.

Separates observed nightly deficits from WHOOP's standing debt. Uses scored asleep stages and accounts for naps.

get_today

Today, clearly labeled.

Matches recovery with the current cycle and primary sleep. Pending or invalid sleep never borrows an older score. Missing stays distinct from zero.

WHOOP_MCP_PRIVACY_MODE=aggregate

Summaries only.

Five summary and analytics tools. No record arrays, identity fields or exact activity timestamps. Aggregates are still sensitive data.1

Check your configuration offline with whoop-ai-mcp doctor --json. · Changelog

Consent-based telemetry

No is the default.

Setup asks before sharing command, tool or template usage. Existing clients are never silently opted in.

Saved with your client.

Desktop setup stores your choice in its config. Pass --telemetry=off to decline explicitly. No installation ID is created.

No health payloads.

Events carry versions, an allowlisted name, its kind and outcome. No arguments, results, chat text or identifiers.

Opt-out always wins.

DO_NOT_TRACK=1 and aggregate mode suppress sending even after opt-in. 500 ms deadline, no retry queue.

Counts, not people.

The collector stores daily counts, not raw events. Users and installations are not measured.

Consent is not an anonymity guarantee: networks can see IP addresses and arrival times. This page loads no telemetry client. · Consent and retention

Setup

Set up your assistant.

Choose Node.js or the native Rust binary, then pick your assistant. Both require WHOOP Developer App credentials. Optional telemetry defaults to No.

Run setup

npx -y whoop-ai-mcp@latest setup --client=claude-desktop

Merges the server into Claude Desktop with a backup. Fully quit and reopen Desktop, then authorize WHOOP on first start.

Node.js 20+with npm
WHOOP membershipplus a client ID and secret from developer.whoop.com
Redirect URLhttp://localhost:3000/callback