プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Whoop MCP

作者:AshwanthramKLバージョン 0.8.5i★ –iパソコンで動く
レジストリ名io.github.AshwanthramKL/whoop-mcp

インストール

概要

作者による説明(英語の原文)

Read-only WHOOP v2 data for MCP clients, with local SQLite cache and CSV/JSONL/Parquet exports.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: データベース・データセット
  • 入力が必要なもの:WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET, WHOOP_REDIRECT_URI, WHOOP_LOG_LEVEL, WHOOP_LOG_FILE, WHOOP_LOG_JSON

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "whoop": {
      "command": "uvx",
      "args": [
        "whoop-mcp"
      ],
      "env": {
        "WHOOP_CLIENT_ID": "your-value",
        "WHOOP_CLIENT_SECRET": "your-value",
        "WHOOP_REDIRECT_URI": "your-value",
        "WHOOP_LOG_LEVEL": "your-value",
        "WHOOP_LOG_FILE": "your-value",
        "WHOOP_LOG_JSON": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add whoop --env WHOOP_CLIENT_ID=your-value --env WHOOP_CLIENT_SECRET=your-value --env WHOOP_REDIRECT_URI=your-value --env WHOOP_LOG_LEVEL=your-value --env WHOOP_LOG_FILE=your-value --env WHOOP_LOG_JSON=your-value -- uvx whoop-mcp

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "whoop": {
      "command": "uvx",
      "args": [
        "whoop-mcp"
      ],
      "env": {
        "WHOOP_CLIENT_ID": "your-value",
        "WHOOP_CLIENT_SECRET": "your-value",
        "WHOOP_REDIRECT_URI": "your-value",
        "WHOOP_LOG_LEVEL": "your-value",
        "WHOOP_LOG_FILE": "your-value",
        "WHOOP_LOG_JSON": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "whoop": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "whoop-mcp"
      ],
      "env": {
        "WHOOP_CLIENT_ID": "your-value",
        "WHOOP_CLIENT_SECRET": "your-value",
        "WHOOP_REDIRECT_URI": "your-value",
        "WHOOP_LOG_LEVEL": "your-value",
        "WHOOP_LOG_FILE": "your-value",
        "WHOOP_LOG_JSON": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • WHOOP_CLIENT_ID 必須 env
    Client ID from your WHOOP developer app (https://developer-dashboard.whoop.com/apps/create).
  • WHOOP_CLIENT_SECRET 秘密 必須 env
    Client secret from your WHOOP developer app. Used for OAuth token refresh.
  • WHOOP_REDIRECT_URI env
    OAuth redirect URI. Defaults to http://localhost:8000/callback — only change if you registered a different URI.
  • WHOOP_LOG_LEVEL env
    Log level (DEBUG / INFO / WARNING / ERROR). Default INFO.
  • WHOOP_LOG_FILE env
    Path to the rotating log file. Set to empty string to disable file logging. Default ~/.whoop-mcp-server/logs/whoop-mcp.log.
  • WHOOP_LOG_JSON env
    Structured JSON logs (true) vs human-readable (false). Default true.

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント AshwanthramKL で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

データベース・データセットのほかのサーバーとの比較i

  • このカテゴリのほかの1151件のうち0%よりスターが多い
  • このカテゴリのほかの1151件のうち10%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1151件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Whoop MCPは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.8.5)がレジストリに届いたのは7 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:Supabase, MongoDB MCP Server, Elasticsearch MCP Server

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Supabase

MCP server for interacting with the Supabase platform

作者:supabase広く使われている↓ 23.5万/週★ 2993一昨日更新

パソコンでもクラウドでも✓ supabase.com

MongoDB MCP Server

MongoDB Model Context Protocol Server

作者:mongodb-js広く使われている↓ 15.7万/週★ 11574 日前更新

パソコンで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

WHOOP MCP Server

A local Model Context Protocol (MCP) server that gives an LLM read-only access to your WHOOP fitness data. Authentication is direct OAuth against your own WHOOP developer app — there is no third-party proxy in the path. All records are mirrored into a local SQLite cache at ~/.whoop-mcp-server/whoop.db, and no data ever leaves your machine except for the authenticated calls the server itself makes to the WHOOP v2 API.

Current version: 0.8.5 — see CHANGELOG.md.

Pre-1.0 status. The API surface (tool names, response shapes, error

codes) is stabilizing but not frozen. Breaking changes may land in

0.x minor bumps during dogfooding. Patch bumps (0.8.x) are

bugfix-only. 1.0.0 will be cut when the surface has been stable for

2+ weeks of real use. Pin the minor version in CI if you're building

on top of this.

Just want to try it? Copy the prompt in

docs/AGENT_INSTALL_PROMPT.md, paste

it into Claude Code / Claude Desktop / Cursor / Windsurf, and your

agent will do the install end-to-end.

Building on this repo? Start with AGENTS.md and

docs/ARCHITECTURE.md — they're the

load-bearing conventions and one-page system map.

Table of contents

  • What this is
  • Install (one line via uvx)
  • Install with your agent
  • Install from source
  • Analysis skill: whoop-insights
  • Quick start
  • Tool catalog
  • MCP resources
  • Data model
  • Sync model
  • Event feed
  • Exports
  • What's not supported
  • Updating
  • Operations
  • Security and privacy
  • Development
  • For agents building on this repo
  • Versioning

What this is

The WHOOP MCP Server is a small Python process that speaks MCP over stdio. It exposes WHOOP v2 data (profile, body measurement, cycles, recoveries, sleeps, workouts) to any MCP-capable client — primarily Claude Desktop and Claude Code. The server is read-only. It authenticates with WHOOP using an OAuth app you register yourself, so your tokens never travel through a third-party server. The WHOOP records you fetch are written to a local SQLite cache (mode 0o600) so subsequent reads are free and offline, and the cache file never leaves your machine.

Install (one line via uvx)

# 1. Create a WHOOP developer app (one-time, free, self-serve):

https://developer-dashboard.whoop.com/apps/create

Redirect URI: http://localhost:8000/callback

Scopes: read:profile read:body_measurement read:recovery

read:cycles read:sleep read:workout offline

2. One-shot OAuth — opens browser, catches callback, saves encrypted tokens.

WHOOP_CLIENT_ID=" " \ WHOOP_CLIENT_SECRET=" " \ uvx --from whoop-mcp whoop-mcp-oauth

3. Register with Claude Code. The --env flags are required so the

server can refresh tokens when the 1-hour access token expires.

claude mcp add whoop --scope user \ --env WHOOP_CLIENT_ID="$WHOOP_CLIENT_ID" \ --env WHOOP_CLIENT_SECRET="$WHOOP_CLIENT_SECRET" \ -- uvx --from whoop-mcp whoop-mcp

No clone, no venv, no absolute paths. Don't have uv? Install it once: curl -LsSf https://astral.sh/uv/install.sh | sh (or brew install uv).

Install with your agent

Paste the prompt in docs/AGENT_INSTALL_PROMPT.md into any MCP-aware agent (Claude Code, Claude Desktop, Cursor, Windsurf, Zed, Aider). The agent will run the install for you.

Install from source (for development)

git clone https://github.com/AshwanthramKL/whoop-mcp.git

cd whoop-mcp python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt -r requirements-dev.txt .venv/bin/pytest -q # 183 tests, ~6s, all respx-mocked

Then register with -- /abs/path/to/whoop-mcp/.venv/bin/python /abs/path/to/whoop-mcp/src/whoop_mcp_server.py.

For Claude Desktop, add the equivalent entry to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), pointing command at the venv Python and args at src/whoop_mcp_server.py. Run ./scripts/fresh_install_check.sh if you want a clean-env smoke of the install path end-to-end (minus the browser OAuth flow).

Quick start

Once the server is registered, try these prompts:

  1. Sync the cache. "Sync my WHOOP data from the last 30 days." Claude calls sync_whoop() and reports per-resource counts.
  2. Inspect a day. "Give me yesterday's WHOOP daily summary." Claude calls get_whoop_daily_summary(date="YYYY-MM-DD") and shows a joined cycle + recovery + primary sleep + workouts record.
  3. Export. "Export all my cached workouts to ~/whoop-workouts.csv." Claude calls export_whoop(kind="workouts", format="csv", path="...").

Analysis skill: whoop-insights

Bundled with the repo: skills/whoop-insights.

Install (one command):

whoop-mcp-install-skills            # writes to ~/.claude/skills/

That fetches the latest skill from this repo's main branch and drops it where Claude Code (and Cursor / Windsurf / Zed) auto-discovers user-scope skills. Restart your MCP client session and ask:

*"How am I doing? Run the whoop-insights skill."*

*"Generate my weekly WHOOP report."*

*"Am I overtraining? Check the last 30 days."*

The skill pulls 30 days from the cache, computes personal baselines (HRV, recovery, sleep, strain), flags anomalies with evidence, runs two correlations (sleep→next-day-recovery, strain→next-day-recovery), and optionally generates a self-contained HTML dashboard with Chart.js visualizations. Every claim cites a specific date and a specific number — the skill is instructed never to fabricate.

For repo-native developers iterating on the skill itself: whoop-mcp-install-skills --source ./skills installs from your local working tree instead of GitHub.

Tool catalog

17 tools. All list tools accept start / end as ISO-8601 and auto-paginate. Every read tool takes fresh: bool = False — pass True to bypass the cache and hit the WHOOP API, write-through to cache, and return the live response. Errors are returned as a structured {"error": {...}} envelope; tools never raise.

ToolWhat it doesKey parameters
get_whoop_auth_statusReport OAuth token status. Call first if other tools return AUTH_FAILED.—
get_whoop_profileAuthenticated user's WHOOP profile (name, email).fresh
get_whoop_body_measurementLatest body measurements: height, weight, max HR.fresh
list_whoop_cyclesPhysiological cycles in a time window.start, end, limit, fresh
get_whoop_cycleOne cycle by integer ID.cycle_id, fresh
get_whoop_cycle_sleepSleep record tied to a given cycle.cycle_id, fresh
get_whoop_cycle_recoveryRecovery record tied to a given cycle.cycle_id, fresh
list_whoop_recoveriesRecoveries (HRV / RHR / recovery score) in a window.start, end, limit, fresh
list_whoop_sleepsSleep activities incl. naps in a window.start, end, limit, fresh
get_whoop_sleepOne sleep activity by UUID.sleep_id, fresh
list_whoop_workoutsWorkouts with zone durations (seconds).start, end, limit, fresh
get_whoop_workoutOne workout by UUID.workout_id, fresh
get_whoop_daily_summaryJoined cycle + recovery + primary sleep + workouts for a UTC date.date
sync_whoopRefresh cache from WHOOP API. Idempotent, incremental by default.full, since, resources
get_whoop_eventsChronological "what's new" feed across cached resources.since, until, resources, limit
export_whoopDump cached records to CSV / JSONL / Parquet.kind, format, path, start, end, overwrite
health_checkComposite status (auth, API, cache, schema). Never raises.live

Error codes: AUTH_FAILED, RATE_LIMITED, NOT_FOUND, UPSTREAM_ERROR, VALIDATION_ERROR, CACHE_ERROR, CACHE_EMPTY, FILE_EXISTS, EXPORT_ERROR, SYNC_ERROR.

MCP resources

The cache is also exposed as read-only MCP resources, so the client can browse date slices without invoking a tool.

URIContent
whoop://db/cycles/{start}/{end}Cached cycles in [start, end) (dates YYYY-MM-DD).
whoop://db/recoveries/{start}/{end}Cached recoveries.
whoop://db/sleeps/{start}/{end}Cached sleeps (including naps).
whoop://db/workouts/{start}/{end}Cached workouts.
whoop://db/profileLatest profile snapshot.
whoop://db/body_measurementLatest body_measurement snapshot.
whoop://db/sync_runs/{limit}Most recent sync audit rows.
whoop://db/events/{since}Event feed since since, until = now.
whoop://db/events/{since}/{until}Event feed for explicit window.

All resources return application/json. Bad inputs return the same {"error": {"code","message"}} envelope used by tools.

Data model

Responses are flattened: the WHOOP score wrapper is lifted, milliseconds become seconds (*_seconds, 1 decimal), kilojoules become calories (calories, rounded int), heart-rate keys are renamed to avg_hr_bpm / max_hr_bpm, and sleep stages are named deep_sleep_seconds, rem_sleep_seconds, light_sleep_seconds, awake_seconds, in_bed_seconds. Raw user_id, v1_id, and per-record created_at are dropped.

`score_state` convention. WHOOP scores are not always computed. When score_state != "SCORED" (e.g. PENDING_SCORE, UNSCORABLE) every derived score field is null and the top-level score_state is preserved so callers know why.

One flattened record per resource:

// Cycle

{ "id": 123456, "start": "2026-04-20T04:00:00.000Z", "end": "2026-04-21T04:00:00.000Z", "timezone_offset": "+00:00", "score_state": "SCORED", "strain": 12.4, "avg_hr_bpm": 62, "max_hr_bpm": 168, "calories": 2810 }

// Recovery

{ "cycle_id": 123456, "sleep_id": "bb68db7b-...", "score_state": "SCORED", "recovery_score": 74, "resting_heart_rate_bpm": 48, "hrv_rmssd_ms": 87.3, "spo2_pct": 97.4, "skin_temp_c": 33.1, "user_calibrating": false }

// Sleep

{ "id": "bb68db7b-...", "cycle_id": 123456, "start": "2026-04-20T03:10:00.000Z", "end": "2026-04-20T10:42:00.000Z", "nap": false, "score_state": "SCORED", "sleep_performance_pct": 88.0, "in_bed_seconds": 27120.0, "light_sleep_seconds": 12540.0, "rem_sleep_seconds": 5280.0, "deep_sleep_seconds": 6840.0, "awake_seconds": 1080.0 }

// Workout

{ "id": "a91f...", "start": "2026-04-20T17:00:00.000Z", "end": "2026-04-20T17:48:00.000Z", "sport_name": "Running", "score_state": "SCORED", "strain": 9.3, "avg_hr_bpm": 142, "max_hr_bpm": 176, "calories": 511, "distance_meter": 8030.0, "zone_durations

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く