WHOOP MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WHOOP MCP How has my recovery changed over two weeks?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WHOOP MCP
By Das Kreb. Private recovery, sleep and training conversations, powered by the official WHOOP API.
Project website · Download · Install · Documentation
Bring WHOOP data into Codex or another MCP assistant. Explore your recovery, sleep and recorded training, then compare periods with explicit units and missing values. An optional personal HTTPS endpoint supports OAuth connections from ChatGPT where your account allows them. Phone availability requires account-level verification.
What you can do
Ask | What the server provides |
“How has my recovery changed over two weeks?” | Recovery %, HRV ms, resting HR bpm and bounded comparisons |
“Review my primary sleep and naps.” | Sleep records, stage milliseconds, performance and consistency |
“Compare my recorded workouts.” | Strain, heart rate, HR zones, energy kJ and distance m when present |
“What evidence is available for today?” | Local-date view with recovery and sleep joined by exact cycle IDs |
“What are the data limits?” | Queryable guide, fixed page caps and explicit pagination completeness |
Related MCP server: Trainner AI MCP Server
Get started
Install from source with Python 3.12+ using scripts/install.ps1 -Plugin on Windows
or sh scripts/install.sh --plugin on macOS/Linux. The installer prints the absolute
launcher path. Native release archives, when available, include a Python runtime.
Run the installed launcher with setup, login, and verify. Configuration prompts
and browser consent stay on your machine. Enable the WHOOP plugin in Codex and
start a new chat. See installation and Codex setup.
Never send client secrets, passwords or tokens in chat.
Built for a private connection
Official API coverage. All six public WHOOP member-data categories, physiological cycle joins, daily evidence, summaries and comparisons across 15 focused tools.
Guided use. Three plugin skills cover training, recovery and daily check-ins; every MCP client can query the same capabilities and units from the server.
Encrypted local authorization. WHOOP OAuth tokens use OS-keyring-backed encryption, atomic state updates and serialized refresh rotation. Unsupported keyrings fail closed.
Separate remote consent. Personal HTTP uses OAuth, S256 PKCE, local terminal approval, resource-bound tokens, rotation and revocation. No public unauthenticated data.
Inspectable distribution. Cross-platform managed installers, native target-OS builds, CI, checksums, privacy documentation and a public MIT-licensed repository.
Compatibility and limits
The current implementation uses Python 3.12+ and the official WHOOP API v2. WHOOP's public member API is read-only for training data: workout creation/scheduling, journal edits, alarms, steps, continuous HR samples and FIT archives are not available. Trusted-partner laboratory APIs are outside this connector's scope.
This is self-hosted software for one owner. Linux requires an unlocked Secret Service; macOS uses Keychain and Windows uses Credential Manager. Remote access requires a trusted HTTPS forwarding service and an awake server machine. Executables are unsigned unless a release explicitly states otherwise.
Local offline tests cover real stdio MCP, HTTP OAuth and synthetic API responses. Live WHOOP authorization and authenticated empty-account MCP reads have been verified. Populated-record acceptance, ChatGPT acceptance and phone use remain unverified. See verification evidence for the distinction between implementation, automated checks and account-level acceptance. Metrics support descriptive conversations, not medical diagnosis or clearance.
Support and contribution
Read troubleshooting, then open an issue with a redacted reproduction. Do not upload credentials or health records. Report vulnerabilities privately using SECURITY.md. Contributions follow branch → PR → checks → merge; see CONTRIBUTING.md. Dependencies retain their own licenses; see NOTICE.
Independent project; not affiliated with WHOOP or OpenAI.
Available Tools
15 toolscompare_whoop_periodsCRead-onlyIdempotent
Compare two bounded periods; disclose counts and missingness. No causal claims.
Inputs: kind (required), first_end (required), second_end (required), first_start (required), +1 more.
get_whoop_body_measurementsARead-onlyIdempotent
Current body measurements: height m, weight kg and maximum heart rate bpm.
Inputs: no named parameters.
get_whoop_cycleCRead-onlyIdempotent
Retrieve one physiological cycle by its integer ID.
Inputs: cycle_id (required).
get_whoop_cycle_recoveryCRead-onlyIdempotent
Retrieve recovery joined to an exact integer cycle ID.
Inputs: cycle_id (required).
get_whoop_cycle_sleepBRead-onlyIdempotent
Retrieve primary sleep for an exact integer cycle ID.
Inputs: cycle_id (required).
get_whoop_dayCRead-onlyIdempotent
Local-date evidence with exact cycle joins. YYYY-MM-DD and IANA timezone required.
Inputs: timezone (required), calendar_date (required).
get_whoop_guideARead-onlyIdempotent
Capabilities, units, limits, privacy and first-use guidance. No account needed.
Inputs: no named parameters.
get_whoop_profileARead-onlyIdempotent
Explicitly retrieve WHOOP member profile including name/email. Sensitive identity data.
Inputs: no named parameters.
get_whoop_sleepBRead-onlyIdempotent
Retrieve one sleep by v2 UUID, preserving score state and stage milliseconds.
Inputs: sleep_id (required).
get_whoop_workoutARead-onlyIdempotent
Retrieve one workout by v2 UUID with recorded HR zones and strain.
Inputs: workout_id (required).
list_whoop_cyclesBRead-onlyIdempotent
Page through physiological cycles and day strain. Times require UTC offsets.
Inputs: end, limit, start, next_token.
list_whoop_recoveryCRead-onlyIdempotent
Page recovery, HRV ms, resting HR bpm, SpO2 % and skin temperature °C.
Inputs: end, limit, start, next_token.
list_whoop_sleepCRead-onlyIdempotent
Page sleep and naps, stage durations in milliseconds and respiratory rate.
Inputs: end, limit, start, next_token.
list_whoop_workoutsCRead-onlyIdempotent
Page recorded workouts, strain, heart rate, distance and HR-zone milliseconds.
Inputs: end, limit, start, next_token.
summarize_whoop_periodCRead-onlyIdempotent
Descriptive cycle/recovery/sleep/workout statistics, bounded to 250 records.
Inputs: end (required), kind (required), start (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Most tools have clearly distinct purposes (profile, body measurements, list vs. get-by-ID for each resource, plus aggregation tools). The only potential confusion is between get_whoop_sleep (by v2 UUID) and get_whoop_cycle_sleep (by cycle ID), and between list_whoop_recovery and get_whoop_cycle_recovery, but the descriptions explicitly clarify the keying difference.
All 15 tools follow a consistent verb_noun pattern (get_whoop_*, list_whoop_*, summarize_whoop_*, compare_whoop_periods) with the domain token 'whoop' embedded consistently. Resource-plus-qualifier names like get_whoop_cycle_sleep are predictable and readable.
15 tools sits at the top of the well-scoped range and each one earns its place: a guide, three static resources, four list endpoints, resource getters, a day join, and two analytics tools. No redundant or filler tools.
The read-only domain is well covered: listing and fetching for cycles, recovery, sleep, and workouts, plus a composite day view and period summaries/comparisons. Minor gaps exist (no per-resource fetch by UUID for cycles/recovery, and no write operations), but WHOOP member data is typically read-only and the day tool covers cross-resource joins.
Maintenance
Related MCP Connectors
Your endurance training data in your AI assistant: activities, recovery, plan, workout edits.
Your WHOOP data in the assistant, read-only: recovery, sleep, strain, workouts, cycles and body meas
Garmin watch data for AI assistants: activities, sleep, HRV, recovery. Never writes to Garmin.
Apple Health training load, recovery, HRV and workout detail for Claude, ChatGPT and any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceExposes personal health data (recovery, sleep, strain, etc.) as MCP tools for AI agents to query and analyze.5MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to access and analyze biometric and training data via MCP, supporting queries on sleep, performance, nutrition, and training load to generate adaptive training insights.-
- AlicenseAqualityBmaintenanceEnables local, read-only access to Garmin Connect health and training data through MCP, letting assistants summarize recovery, sleep, activities, and more without uploading your data.24MIT
- FlicenseNot gradedqualityAmaintenanceEnables users to query recovery, sleep, HRV, strain, workouts, and personal health analytics in natural language through supported AI assistants, using read-only tools for daily status, baselines, trends, and period comparisons.17 npm-