Skip to main content
Glama

WHOOP MCP

By Das Kreb. Private recovery, sleep and training conversations, powered by the official WHOOP API.

Tests MIT

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 tools
compare_whoop_periodsC
Read-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_measurementsA
Read-onlyIdempotent

Current body measurements: height m, weight kg and maximum heart rate bpm.

Inputs: no named parameters.

get_whoop_cycleC
Read-onlyIdempotent

Retrieve one physiological cycle by its integer ID.

Inputs: cycle_id (required).

get_whoop_cycle_recoveryC
Read-onlyIdempotent

Retrieve recovery joined to an exact integer cycle ID.

Inputs: cycle_id (required).

get_whoop_cycle_sleepB
Read-onlyIdempotent

Retrieve primary sleep for an exact integer cycle ID.

Inputs: cycle_id (required).

get_whoop_dayC
Read-onlyIdempotent

Local-date evidence with exact cycle joins. YYYY-MM-DD and IANA timezone required.

Inputs: timezone (required), calendar_date (required).

get_whoop_guideA
Read-onlyIdempotent

Capabilities, units, limits, privacy and first-use guidance. No account needed.

Inputs: no named parameters.

get_whoop_profileA
Read-onlyIdempotent

Explicitly retrieve WHOOP member profile including name/email. Sensitive identity data.

Inputs: no named parameters.

get_whoop_sleepB
Read-onlyIdempotent

Retrieve one sleep by v2 UUID, preserving score state and stage milliseconds.

Inputs: sleep_id (required).

get_whoop_workoutA
Read-onlyIdempotent

Retrieve one workout by v2 UUID with recorded HR zones and strain.

Inputs: workout_id (required).

list_whoop_cyclesB
Read-onlyIdempotent

Page through physiological cycles and day strain. Times require UTC offsets.

Inputs: end, limit, start, next_token.

list_whoop_recoveryC
Read-onlyIdempotent

Page recovery, HRV ms, resting HR bpm, SpO2 % and skin temperature °C.

Inputs: end, limit, start, next_token.

list_whoop_sleepC
Read-onlyIdempotent

Page sleep and naps, stage durations in milliseconds and respiratory rate.

Inputs: end, limit, start, next_token.

list_whoop_workoutsC
Read-onlyIdempotent

Page recorded workouts, strain, heart rate, distance and HR-zone milliseconds.

Inputs: end, limit, start, next_token.

summarize_whoop_periodC
Read-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

    B3.3/5.0

    Scored across 15 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables 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.
      -
    • A
      license
      A
      quality
      B
      maintenance
      Enables 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.
      24
      MIT
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables 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
      -