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 MCPshow my recovery and sleep for the last week"
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
WHOOP MCP connector by Tendle. Check out the full catalog of connectors at https://tendle.ai
A read-only connector for members who want their agent to review recovery, sleep, strain, and workouts over time. Uses the official WHOOP v2 API and browser OAuth.
MCP URL:
https://tendle.ai/connectors/whoop/mcp
OAuth configured: the hosted connector advertises OAuth discovery, accepts client registration and serves browser consent. A member must authorize WHOOP before personal-data reads can be tested. This is not yet a verified live account connection or a completed client integration test.
Tools
Tool | Purpose |
| Setup, workflows, generated input schemas, units and limitations |
| Confirm account identity; optionally read body measurements |
| Paginated cycles, recovery, sleep or workouts in a time window |
| One cycle/recovery by cycle ID, or sleep/workout by v2 UUID |
Get the latest recovery, follow its sleep_id, or retrieve complete date windows
for comparisons. There are no redundant daily/weekly wrappers: agents use the same
records and report coverage, missing observations, calibration and score states.
Scores are not medical diagnoses. No journal, strength-training sets, continuous
heart-rate stream, or write operations are exposed by this connector.
Related MCP server: WHOOP MCP
Authentication and privacy
Use the client's built-in or platform-managed OAuth connector setup. It should handle discovery, dynamic registration, authorization-code PKCE, secure credential storage, and refresh. Users do not need WHOOP developer app credentials.
WHOOP returns to Tendle's /auth/callback, then Tendle redirects to the callback
registered by the client. Hosted clients should provide a platform HTTPS callback.
Loopback callbacks are appropriate only when an active client listener is reachable
from the browser in the same network environment. Do not invent callback URLs or
create an ad hoc localhost listener for a hosted agent. If the client cannot
complete managed OAuth, report that limitation. Device-code and manual connection-key
flows are not implemented. Keep WHOOP's registered callback pointing to Tendle.
An OAuth-capable MCP client opens the WHOOP sign-in/consent flow. No Tendle account,
manual API token, password, or health data in tool arguments is needed. Confirm the
connected identity with whoop_get_profile. Reauthorize to change WHOOP accounts.
FastMCP's OAuth proxy issues audience-bound MCP tokens and keeps upstream tokens
behind encrypted persistent storage. PKCE is enforced between the client and
proxy; upstream WHOOP uses its documented confidential-client authorization-code
flow. Consent remains enabled to bind the requesting client and browser.
Token verification uses WHOOP's profile endpoint. WHOOP enforces each data scope.
Requested read scopes cover all four tools; offline enables refresh.
Health records are not persisted or cached by the connector, but your client sees
requested results. OAuth state persists under FASTMCP_HOME; protect that directory
and the signing key. The default refresh lifetime is 30 days if WHOOP omits expiry.
Expired encrypted files may remain until operator cleanup.
Revoke Tendle in WHOOP's connected integrations to stop upstream access. Client
removal alone is not upstream revocation. Contact hello@tendle.ai for earlier
server-side credential deletion. WHOOP tokens that are revoked or expire fail closed.
Run locally
Python 3.12+ and uv are required.
uv sync --locked
cp .env.example .env
# Fill the local .env through a secure editor, then:
uv run --env-file .env whoop-mcpRegister an app in the WHOOP developer dashboard.
Use the exact callback PUBLIC_URL/auth/callback, e.g.
http://localhost:8081/connectors/whoop/auth/callback locally, or
https://tendle.ai/connectors/whoop/auth/callback for the hosted connector.
Enable read:profile, read:body_measurement, read:cycles, read:recovery,
read:sleep, read:workout; request offline for refresh.
Set WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET, and an independently generated
JWT_SIGNING_KEY together. Generate the key locally with
python -c 'import secrets; print(secrets.token_urlsafe(48))'.
Keep the key stable across restarts. Never commit .env or .state.
With all credentials absent, public surfaces run but /mcp returns a clear 503
setup-pending error. Partial configuration fails startup. /healthz reports
liveness and configuration, not proof that WHOOP is reachable or a grant works.
For self-hosting, use HTTPS, one worker, a private persistent FASTMCP_HOME, and a
unique base URL. Route the connector prefix plus its host-root path-aware OAuth
well-known URLs to the application, preserving request paths. Disable access logs
on OAuth callback/token routes. WHOOP refresh tokens rotate; multiple workers or
replicas are unsupported. Use the locked dependencies and protect secret backups.
Update public manifest URLs and activation text for your own deployment.
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv buildOAuth diagnostics record stage, method, HTTP status, known OAuth error code, and registration callback host with a server-generated request ID. They exclude query strings, headers, raw bodies, tokens, and health data. Full access logging remains disabled.
Behavior and limits
Time windows require offsets; pagination pins the end time. A returned page is not
a complete inventory when has_more is true. At most ten pages of 25 records are
fetched per call; continue with the cursor and original bounds. Errors on later
pages fail the operation rather than returning a misleading complete report.
WHOOP does not promise snapshot consistency between pages. Use IDs to deduplicate.
Fresh retrieval does not mean the wearable has synced or scoring is finished.
WHOOP's default app quotas are 100 requests/minute and 10,000/day, shared across members, including profile reads for token validation. New apps support up to ten members on the Sandbox tier. Higher tiers require WHOOP review. No claim of WHOOP approval or verified compatibility with every client is made. Exact client OAuth setup and live member-data tests remain necessary before launch.
Verification
47 local tests pass, including an HTTP OAuth simulation through consent, PKCE, code replay rejection, token refresh, MCP reads, encrypted restart persistence, user isolation, pagination and upstream failures. Live WHOOP consent and real member-data reads still require an authorized member connection.
Research and provenance
Reviewed on 2026-09-28:
Official API and schema establish supported v2 reads, pagination, scopes and units.
OAuth documents confidential-client authorization and rotating refresh tokens.
App approval and rate limits constrain rollout and polling.
WHOOP community request asks for personal analysis outside WHOOP and cross-source context.
Existing official-API connector demonstrates read-only personal-agent workflows. This implementation is original, not a source-code fork.
Reddit discussion provides reported use cases, not proof of broad demand.
FastMCP OAuth proxy supplies the maintained MCP/OAuth protocol implementation; exact dependencies are in
uv.lock.
These sources support recovery/sleep comparisons, workout review and historical analysis. Community interest in journal data does not make it available through the official API. Private mobile APIs and trusted-healthcare-partner endpoints are deliberately outside this personal connector's scope.
The icon is the official WHOOP Circle Black asset from the WHOOP integration asset bundle, resized onto a 512x512 PNG canvas. WHOOP branding remains WHOOP's property, subject to its brand guidelines and terms. The Tendle-authored code is licensed under Apache-2.0; that license does not grant WHOOP trademark rights or relicense its icon.
This server cannot be deployed
Maintenance
Related MCP Connectors
Your WHOOP data in the assistant, read-only: recovery, sleep, strain, workouts, cycles and body meas
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Connect your Oura Ring account securely in minutes. Enable authorized access to your sleep, activi…
Connect your Oura Ring account and enable access to your wellness data in apps and automations. In…
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables access to WHOOP fitness and health data through all WHOOP v2 API endpoints. Supports OAuth 2.0 authentication and provides comprehensive access to user profiles, physiological cycles, recovery metrics, sleep analysis, and workout data.16371 npm17MIT
- FlicenseNot gradedqualityDmaintenanceGives LLM agents read-only access to your WHOOP data — recovery, sleep, strain, workouts, and profile.13 npm-
- AlicenseBqualityDmaintenanceIntegrates with Whoop API v2 to access user profile, sleep, recovery, cycles, and workout data via natural language, with OAuth2 authentication and automatic token refresh.1421 npmMIT
- AlicenseAqualityBmaintenanceEnables Claude to query personal WHOOP health data including recovery, sleep, strain, workouts, and profile via WHOOP's OAuth 2.0 REST API.613 npmMIT