Whoop Mcp

io.github.rajdeepmondaldotcom由 GitHub 帳號 rajdeepmondaldotcom 發布v0.0.5更新於 Oct 24, 2026

WHOOP recovery, sleep, strain, and workouts for any AI. Analysis tools, demo mode, fast setup.

已驗證STDIO僅桌面位置與生活資料與分析

概覽

AI 產生的概覽

本機 MCP 伺服器,連接 WHOOP 帳號,讓助理讀取恢復、睡眠、負荷與訓練資料並解釋趨勢。

可以做什麼
讀取恢復、睡眠、週期、訓練與個人資料紀錄,可選擇回傳原始資料與依 ID 查詢,並提供舊版活動 ID 對應與連線狀態工具,以及供 ChatGPT 使用的 search 和 fetch 工具和現成的就緒度、週回顧、睡眠教練、訓練計畫提示詞。
適用情境
當你希望助理根據自己的 WHOOP 歷史回答個人訓練與恢復問題,例如今天是否該高強度訓練、什麼影響恢復、本月與上月比較時使用。
執行需求
需要 WHOOP 帳號與會員資格;以 uv 或 pipx 安裝這個 Python 套件;需要 Claude Desktop、Claude Code、Cursor、Windsurf、VS Code 或 ChatGPT 等 MCP 用戶端。安裝精靈會建立你自己的免費 WHOOP 開發者應用程式,需要 WHOOP_CLIENT_ID 與 WHOOP_CLIENT_SECRET,重新導向網址須與後台完全一致。需連線 api.prod.whoop.com。設定 WHOOP_MCP_DEMO=1 可在沒有帳號時使用產生的資料。
安裝前請注意
涉及健康資料:趨勢與相關性可能比單筆紀錄揭露更多資訊,只連接可信的 AI 用戶端。權杖與應用程式憑證存放在本機 ~/.whoop-mcp。ChatGPT 的 HTTP 通道方式沒有驗證,任何取得網址的人都能讀取你的資料。對 WHOOP 為唯讀,唯一的寫入是你要求的本機匯出檔案與 OAuth 流程。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Whoop Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

whoop-mcp-server

Your WHOOP shows you charts. It can't answer "should I train hard today" or "what actually hurts my recovery". This server can.

It connects your WHOOP data to Claude, ChatGPT, and any MCP client. You ask in plain English. It computes the answer from your own records and lets the AI explain it.

[CI] [Python 3.10+] [License: MIT] [MCP] [Glama]

text
You: should I train hard today?
AI:  Recovery 81% (green). HRV trending up. Sleep debt cleared.     Your 7-day load is 0.94x your 28-day base.     You are conditioned for more.

Runs on your machine. Read-only. The only network peer is api.prod.whoop.com. No telemetry. MIT.

What you need

  • A WHOOP account. Any membership works.
  • uv or pipx, to install one command line tool.
  • An MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, or ChatGPT.

One constraint to know before you start. WHOOP has no shared developer app, so during setup you create your own free one. It takes about two minutes of clicking, and it is the reason this is private by design: your tokens belong to your app, on your machine, and your health data never routes through anyone else's server. Including mine.

Set it up

Install the tool:

bash
uv tool install whoop-mcp-server

(pipx install whoop-mcp-server works the same.)

Then run the one command that does everything:

bash
whoop-mcp-server setup

Here is what happens, in order, so nothing surprises you:

  1. Your WHOOP app. The wizard opens WHOOP's developer dashboard and tells you exactly what to click: create a team, create an app, enable every scope including offline, set the redirect URL to exactly http://localhost:8765/callback. The form requires a privacy policy URL. Use this repo's: https://github.com/rajdeepmondaldotcom/whoop-mcp-server/blob/main/PRIVACY.md. Copy the Client ID and Secret, paste them into the terminal. They're stored locally with 0600 permissions.

  2. Authorize. Your browser opens WHOOP's consent screen. Approve it. Tokens land in ~/.whoop-mcp and refresh themselves from then on. You never do this again.

  3. Proof. The wizard makes a live API call and prints your actual latest recovery. If anything is misconfigured, you find out here, in the terminal, not later in a chat window.

  4. Your clients. It detects Claude Desktop, Cursor, Windsurf, VS Code, and Claude Code, and writes their configs for you. Existing config is backed up before any edit. If Claude Desktop is running, the wizard asks to quit it first, because Desktop silently overwrites config edits made while it's open. Then it launches the configured command once and confirms the server answers. "Done" means verified, not hopeful.

Restart your client. Ask it: "How did I sleep last night?" Then ask the better question: "Give me the full picture of my health this quarter."

Two useful asides. If you want to see the tools work before connecting anything, whoop-mcp-server serve --demo serves 150 days of realistic generated data through the same pipeline. And if anything misbehaves later, whoop-mcp-server doctor names what's wrong and the fix.

What you can ask

24 tools cover every public user-readable endpoint in WHOOP's API, plus the analysis layer that turns records into answers.

AskTool behind it
"Give me the full picture of my health"get_health_overview: status, trends, training load, records, and correlations in one call
"How am I doing today?"get_daily_summary: recovery, sleep, strain, workouts for any day
"What actually affects my recovery?"get_correlations: strain vs next-morning recovery, sleep vs recovery, with plain readings
"Am I overtraining?"get_strain_trends: acute vs chronic load, per-sport breakdown
"Is my HRV improving?"get_recovery_trends: direction, confidence, unusual days
"Show my overnight heart rate curve"get_sleep_stream: minute-level HR and skin temp, lowest point and when; include_raw=true keeps WHOOP's untouched stream
"This month vs last month?"compare_periods: every metric, improved or declined
"My records this year?"get_personal_records: bests, worsts, green streaks
"Export everything"export_data: full collection history to local JSON and CSV, with raw records by default
Week grids, raw records, profileget_weekly_report, get_sleeps/workouts/cycles/recoveries, by-id tools with include_raw, get_profile(include_raw=true)
"I have an old WHOOP activity id"get_activity_mapping: map a legacy v1 activity id to its v2 UUID
Connection troubleget_connection_status, connect_whoop_account

Dates are plain English everywhere: yesterday, last 30 days, this week, 2 years ago, 2026-05.

ChatGPT's required search and fetch tools are implemented too, plus 4 resources and 4 ready-made prompts (morning_readiness, weekly_review, sleep_coach, training_planner).

More questions worth asking: docs/PROMPTS.md.

Works with

ClientSetup
Claude Desktopwhoop-mcp-server setup configures it for you. No terminal at all: download whoop-mcp-server.mcpb from the latest release and open it (needs uv installed; demo mode is a toggle in its settings)
Claude Codeclaude mcp add whoop -- whoop-mcp-server serve (setup offers this too)
Cursorauto via setup, or [Install in Cursor]
Windsurfauto via setup
VS Codeauto via setup, or [Install in VS Code]
ChatGPTremote connector, see below
Dockerdocker build -t whoop-mcp-server . && docker run -i --rm -e WHOOP_MCP_DEMO=1 whoop-mcp-server (mount ~/.whoop-mcp for real data)
Any MCP clientcommand: whoop-mcp-server with args: ["serve"]. Inspector: npx @modelcontextprotocol/inspector whoop-mcp-server serve
ChatGPT setup

ChatGPT connects to remote MCP servers, so expose the HTTP transport and tunnel it:

bash
whoop-mcp-server serve --transport http --port 8000    # endpoint: /mcpngrok http 8000

Then in ChatGPT: Settings, Apps & Connectors, Advanced settings, enable Developer mode, create a connector with https://<your-tunnel>/mcp and no auth.

Be careful here: a no-auth tunnel means anyone with the URL can read your health data. Keep the URL private and the tunnel short-lived. Claude's stdio setup never exposes anything.

Why the answers hold up

The model is maybe 20% of this product. The other 80% is making the numbers right. Models are bad at arithmetic over 90 days of records, so this server computes first and lets the model explain.

  • Trend lines are fit to date-sorted series. WHOOP returns records newest-first. Fit arrival order instead and every trend reads backwards.
  • Direction respects what the metric means. Rising HRV is improvement. Rising resting heart rate is not.
  • Records land on calendar days using their own timezone offset. A sleep belongs to the morning you woke up, even when you travel.
  • WHOOP rotates both OAuth tokens on every refresh. Refreshes here are serialized, saved before use, and shared across concurrent requests. Re-running auth rescues a live server without a restart.
  • The client honors WHOOP's rate-limit headers, retries with backoff, and caps pagination. When a result is truncated or approximate, the output says so instead of pretending it's complete.

What it can't do: WHOOP's public API has no endpoints yet for Peak features like the stress monitor and healthspan. When WHOOP ships them, they land here. The overnight sensor stream isn't enabled for every account, and the tool reports that instead of failing. Bulk export intentionally fetches the collection endpoints; raw sleep streams are available per sleep with get_sleep_stream(include_raw=true).

105 tests, all offline against a faked WHOOP API. CI on Python 3.10 to 3.13.

CLI

text
whoop-mcp-server setup     Guided setup: app, authorize, auto-configure clientswhoop-mcp-server serve     Run the server (--demo, --transport stdio|http|sse, --host, --port)whoop-mcp-server status    Config and token statewhoop-mcp-server doctor    Diagnose setup and connectivitywhoop-mcp-server auth      Scriptable OAuth flowwhoop-mcp-server logout    Delete tokens (--revoke also revokes at WHOOP)

Configuration

Nothing required after whoop-mcp-server setup. Overrides, in priority order: process env, ./.env, ~/.whoop-mcp/.env, ~/.whoop-mcp/config.json.

VariableDefaultPurpose
WHOOP_CLIENT_ID / WHOOP_CLIENT_SECRETnoneWHOOP app credentials
WHOOP_REDIRECT_URIhttp://localhost:8765/callbackMust exactly match the dashboard
WHOOP_MCP_DEMOoff1 serves demo data (same as --demo)
WHOOP_MCP_DIR~/.whoop-mcpTokens, config, exports
WHOOP_MCP_TZsystem zoneIANA timezone for "today" and week bounds
WHOOP_MCP_CACHE_TTL / WHOOP_MCP_TIMEOUT60 / 30Seconds
WHOOP_MCP_LOG_LEVELINFOLogs go to stderr. stdout belongs to MCP
WHOOP_ACCESS_TOKENnoneStatic token for testing, no refresh

Privacy

Read-only against WHOOP. Tokens stored locally with 0600 permissions. The only writes are local files you ask for (export_data) and the OAuth flow you trigger. One thing worth knowing: aggregates like trends and correlations can reveal more about you than single records. Connect this only to AI clients you trust with health data. Full policy: PRIVACY.md. Vulnerabilities: SECURITY.md.

Contributing

bash
uv venv && uv pip install -e ".[dev]" && pytest && ruff check .

The whole test suite runs offline. CONTRIBUTING.md lists the invariants that keep the data honest. The short version of the architecture: client.py talks to WHOOP, transform.py cleans the records, summaries.py and analytics.py do the math, server.py exposes the tools. oauth.py and tokens.py own auth. demo.py is the generated account.

Troubleshooting

SymptomFix
"WHOOP authorization required"whoop-mcp-server setup, or ask your AI to connect your WHOOP account
Redirect fails after consentThe dashboard redirect URI must be exactly http://localhost:8765/callback
403 missing scopeEnable all read scopes plus offline on the app, then re-run whoop-mcp-server auth
Tools missing in a clientRe-run whoop-mcp-server setup, then fully restart the client
No recovery shown todayWHOOP scores it after you wake and sync. The summary says so
Sleep stream "not available"WHOOP doesn't expose it for every account. Nightly summaries still work
Anything elsewhoop-mcp-server doctor, or get_connection_status from chat, or open an issue

License

MIT. See LICENSE. Not affiliated with or endorsed by WHOOP. WHOOP is a trademark of WHOOP, Inc.

來源:README.md,提交 e7a4d5d

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.0.5最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分