Whoop Mcp Unofficial について
WHOOP MCP Unofficial は、WHOOP の回復、睡眠、負荷、HRV データを使う AI エージェント向けのローカル優先サーバーです。プライバシーモード、SQLite キャッシュ、セットアップ診断を備え、OAuth トークンはローカルに保管します。
主な機能
- 01回復・睡眠・負荷・HRV データの取得
- 02日次・週次サマリーの提供
- 03サマリー・構造化・raw 出力の選択
- 04SQLite によるデータキャッシュ
- 05設定とプライバシー構成の確認
- 06プロンプト・リソース・合成デモデータの提供
活用シーン
- 01トレーニング前の回復状態と睡眠の確認
- 02週ごとの回復状況の比較と計画
- 03OAuth 設定前のデータ形式の確認
- 04個人向け AI ワークフローへの WHOOP データ接続
MCP 対応
公式 WHOOP OAuth API を使い、WHOOP データ、サマリー、プロンプト、リソースを MCP 対応エージェントに公開します。既定は stdio で、ステートレス HTTP も選択でき、トークンはユーザーの端末に保管されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y whoop-mcp-unofficialWHOOP_CLIENT_IDWHOOP OAuth client ID. Optional when configured with whoop-mcp-server setup.WHOOP_CLIENT_SECRETシークレットWHOOP OAuth client secret. Prefer whoop-mcp-server setup so this secret is stored in ~/.whoop-mcp/config.json instead of MCP client config.WHOOP_REDIRECT_URIRedirect URI configured in the WHOOP Developer Dashboard. Optional when configured with whoop-mcp-server setup.WHOOP_TOKEN_PATHシークレットOptional local path for OAuth tokens. Defaults to ~/.whoop-mcp/tokens.json.WHOOP_PRIVACY_MODEOptional payload mode: summary, structured, or raw. Defaults to structured. raw means full WHOOP API payloads, not raw device sensor streams.WHOOP_CACHEOptional SQLite cache toggle. Set to true or sqlite to enable.WHOOP_CACHE_PATHOptional local SQLite cache path. Defaults to ~/.whoop-mcp/cache.sqlite.WHOOP_NO_CACHESet to true to bypass the in-memory HTTP response cache (60s TTL for GET only). POST/PUT/DELETE and 4xx/5xx responses are never cached regardless.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
30掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| response_format | enum | いいえ | markdown | json |
詳細
WHOOP MCP
アプリからコピー&ペーストすることなく、WHOOP のリカバリー、睡眠、ストレイン、HRV を AI エージェントに渡せます。
ローカル優先の MCP サーバー — トークンがマシンの外に出ることはありません。
⚡ Delx Wellness for Hermes を使えば、ワンコマンドでインストールできます。
npx -y delx-wellness-hermes setup— 専用の Hermes プロファイルに、このコネクターと Delx Wellness のスタック一式を事前設定します。または、Claude Desktop/Cursor/ChatGPT Desktop に単体で接続できます。以下のインストールセクションをご覧ください。実行可能なサンプルはDelx Wellness ハブにあります。
公開情報: WHOOP MCP は、ダウンロード数、スター数、次のアクションの優先事項とともに、Delx のオープンソース成長スナップショットで追跡されています。OAuth と MCP のセットアップ時間を節約できたら、他のリカバリー重視のエージェント開発者がすぐに見つけられるよう、このリポジトリにスターを付けてください。
最初に試すプロンプト:
Use whoop_connection_status, then whoop_daily_summary, then give me a 5-line operating brief for today.
AI エージェントを WHOOP のリカバリー、睡眠、ストレイン、HRV データに接続する、ローカル優先の MCP サーバーです。
非公式プロジェクトです。 WHOOP, Inc. とは提携しておらず、同社から承認、推奨、サポートを受けていません。WHOOP はそれぞれの所有者の商標です。ご自身の WHOOP アカウントでのみ、WHOOP の開発者利用規約に従ってご利用ください。
Claude、Cursor、Hermes、OpenClaw、その他の MCP 対応エージェントを使って、WHOOP アプリの数値をコピー&ペーストすることなくトレーニング、睡眠、リカバリーについて考えたい方のために、David Mosiah が開発しました。 Delx Wellnessの一部である、ローカルファーストのウェルネス MCP コネクターのレジストリです。
これまでの取り組みとクレジット
WHOOP MCP Unofficial は、Shashank Mishraによる先行の WHOOP MCP の基盤を引き継いでいます。これには、OAuth/WHOOP API の方向性と、以前の MIT ライセンスのwhoop-ai-mcpパッケージ(ソース)が含まれます。このプロジェクトはその基盤を拡張し、ローカルファーストのセットアップ、プライバシー監査、デュアルトランスポート、エージェントマニフェスト、サマリー、キャッシュ、レジストリメタデータ、Delx Wellness ハブとの連携を追加しています。
このコネクターがエージェントのワークフローに役立った場合は、リポジトリにスターを付けてください。スターが増えると、ほかの AI 開発者がこのプロジェクトを見つけやすくなり、Delx がローカルファーストのウェルネスインフラを提供し続ける助けになります。
このプロジェクトの目的
WHOOP では、回復スコア、HRV、睡眠ステージ、運動負荷など、豊富な生理データを利用できます。しかし、そのデータは OAuth API とクローズドなアプリの向こう側にあります。現在、AI エージェントで利用するには、OAuth の一連の処理を自分で実装し、トークンを安全に保存し、レスポンスを正規化して、ページネーションにも対応する必要があります。
このパッケージは、これらすべてをローカルで処理し、Model Context Protocol を通じて WHOOP を公開します。設定をひとつ追加するだけで、MCP 対応のエージェントならどれでも WHOOP のコンテキストを読み取れます。トークンがマシンの外に出ることはありません。
60 秒でセットアップ
WHOOP Developer アプリ(こちらで作成)が必要です。リダイレクト URI はhttp://127.0.0.1:3000/callbackにしてください。
npx -y whoop-mcp-unofficial setup # interactive: paste client id + secret
npx -y whoop-mcp-unofficial auth # opens browser, captures the OAuth code
npx -y whoop-mcp-unofficial doctor # verifies you're ready
次に、MCP クライアントの設定に以下を追加します。
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": ["-y", "whoop-mcp-unofficial"]
}
}
}
Claude Desktop の場合は、setup --client claudeを実行すると、設定スニペットが自動で書き込まれます。
接続する前に試す
まだ WHOOP アカウントをお持ちでない場合は、whoop_demoを呼び出してください。OAuth を行う前にエージェントがデータの仕様を学習できるよう、現実的な合成データの回復、睡眠、運動負荷のペイロード(is_demo: trueのタグ付き)が返されます。次のように尋ねてください。
Call whoop_demo and explain what my daily WHOOP signals would look like.
デフォルト(markdown)の出力:
# WHOOP Demo
- **is_demo**: true
- **recovery_score**: 67
- **sleep_score**: 88
- **strain_score**: 11.2
- **recent_training_load**: normal
- **recommended_handoff**: exercise_catalog_recommend_session
response_format=jsonを指定すると、ライブツールが返すデータの完全な構造が得られます。
{
"ok": true,
"is_demo": true,
"sample": {
"whoop_daily_summary": {
"kind": "daily_summary",
"generated_at": "2026-05-01T09:20:00.000Z",
"lookback_days": 10,
"data_quality": {
"confidence": "high",
"counts": {
"recoveries": 8,
"sleeps": 8,
"cycles": 8,
"workouts": 3
},
"pages_fetched": {
"recoveries": 1,
"sleeps": 1,
"cycles": 1,
"workouts": 1
}
},
"latest": {
"recovery": {
"date": "2026-05-01, 6:12 a.m.",
"score": 67,
"band": "green",
"hrv_rmssd_milli": 58,
"hrv_delta_pct": -6,
"resting_heart_rate": 52,
"resting_hr_delta_bpm": 2,
"score_state": "SCORED"
},
"sleep": {
"start": "2026-04-30, 10:48 p.m.",
"performance_pct": 88,
"consistency_pct": 74,
"efficiency_pct": 91,
"actual_sleep_hours": 7.7,
"sleep_need_hours": 8.4,
"sleep_debt_hours": 0.6,
"awake_minutes": 26,
"disturbances": 5,
"score_state": "SCORED"
},
"cycle": {
"start": "2026-05-01, 5:04 a.m.",
"strain": 11.2,
"baseline_strain": 12.4,
"score_state": "SCORED"
},
"workout": {
"start": "2026-05-01, 6:35 a.m.",
"sport": "running",
"strain": 8.2,
"high_zone_minutes": 15,
"aerobic_minutes": 50,
"score_state": "SCORED"
}
},
"diagnostic": {
"primary_signal": "Recovery is 67 (green).",
"signals": [
"Recovery is 67 (green).",
"HRV is 58 ms (-6% vs recent baseline).",
"Resting HR is 52 bpm (2 bpm vs recent baseline).",
"Sleep performance is 88%; actual sleep 7.7h vs need 8.4h.",
"Latest cycle strain is 11.2 vs baseline 12.4.",
"Latest workout: running, strain 8.2."
],
"action_candidates": [
"Training: good window for progressive load if sleep, soreness and schedule are aligned.",
"Cognition: schedule deep work during the most stable energy window; use shorter analytical blocks if readiness is low."
],
"disclaimer": "Performance coaching only; not medical advice."
}
},
"whoop_wellness_context": {
"source": "whoop",
"context_contract_version": "delx-wellness-context/v1",
"context_type": "wellness_context",
"generated_at": "2026-05-01T09:20:00.000Z",
"recovery_score": 67,
"sleep_score": 88,
"strain_score": 11.2,
"recent_training_load": "normal",
"soreness": [],
"injury_flags": [],
"notes": [
"WHOOP recovery band: green.",
"Latest workout: running."
],
"data_quality": {
"confidence": "high",
"counts": {
"recoveries": 8,
"sleeps": 8,
"cycles": 8,
"workouts": 3
},
"pages_fetched": {
"recoveries": 1,
"sleeps": 1,
"cycles": 1,
"workouts": 1
}
},
"recommended_handoff": {
"tool": "exercise_catalog_recommend_session",
"reason": "Use WHOOP recovery, sleep and strain to scale workout intensity and volume."
},
"telegram_summary": "WHOOP wellness context | Recovery: 67 | Sleep: 88 | Strain: 11.2 | Load: normal"
},
"whoop_list_recoveries": {
"endpoint": "/v2/recovery",
"privacy_mode": "structured",
"count": 3,
"records": [
{
"cycle_id": 93101,
"sleep_id": "1a2b3c4d-0000-4000-8000-000000000001",
"created_at": "2026-05-01T09:14:00.000Z",
"updated_at": "2026-05-01T09:14:00.000Z",
"score_state": "SCORED",
"recovery_score": 67,
"resting_heart_rate": 52,
"hrv_rmssd_milli": 58,
"user_id": 10000001,
"user_calibrating": false,
"spo2_percentage": 96.1,
"skin_temp_celsius": 33.7,
"score": {
"user_calibrating": false,
"recovery_score": 67,
"hrv_rmssd_milli": 58,
"resting_heart_rate": 52,
"spo2_percentage": 96.1,
"skin_temp_celsius": 33.7
}
}
],
"next_token": "c3ludGhldGljLWRlbW8tcGFnZS0y",
"has_more": true,
"pages_fetched": 1
}
},
"notes": [
"All sample data is synthetic; tagged with is_demo=true.",
"Real calls return live data from the WHOOP Developer API after OAuth setup.",
"Shapes are verified against the real tools by scripts/demo-contract-test.mjs on every build.",
"whoop_list_recoveries is shown in the default privacy_mode=structured; summary mode drops the nested score object.",
"Performance coaching only; not medical advice."
]
}
ここではrecords配列を最初の項目に絞っています。ライブツールは、同じキーを持つ項目を3つすべて返します。records[].scoreは未加工の WHOOP オブジェクトであり、数値ではありません。これをスカラー値として読み取るパーサーは、エラーを出さずにundefinedを取得します。
以下で OAuth のセットアップを完了すると、whoop_daily_summary、whoop_wellness_context、whoop_list_recoveriesは、実際の WHOOP データで同じ形式を返します。
実データのデモを安全に記録する
OAuth 接続後、README のデモ、イシューの更新、エージェント評価に使用する、プライバシーを保護したトランスクリプトを生成できます。
npx -y whoop-mcp-unofficial demo-capture \
--output whoop-recovery-demo.redacted.json \
--markdown whoop-recovery-demo.redacted.md \
--assert-sanitized
demo-captureは、エージェントが使うべきものと同じ準備状況確認の手順を実行します。まずwhoop_connection_statusの形式を確認し、次にwhoop_daily_summaryを呼び出してから、回復状況を考慮した短いプロンプトを実行します。セットアップが不完全な場合は処理を安全側に停止します。また、サニタイザーが OAuth シークレット、ローカルのトークンパス、生のペイロード、正確な回復数値、詳細な睡眠情報をブロックします。コミット済みの編集ルールはフィクスチャ専用のサンプルです。実際に取得したデータを公開する前には、必ず確認してください。
エージェントで試す
まず、次の3つを尋ねてみてください。
Use whoop_connection_status to check setup, then run whoop_daily_summary.
Give me a 5-line operating brief for today.
Call whoop_weekly_summary with response_format=json. Identify the top
bottleneck and give me a sleep + training plan for next week.
Use the whoop_daily_performance_coach prompt. Focus on whether I should train
hard today.
データの利用可否
このパッケージは、WHOOP 公式の OAuth API(v2)を使用します。デバイスの生のセンサーストリームにはアクセスしません。
| データ | 利用可否 | 備考 |
|---|---|---|
| リカバリースコア、HRV、RHR、SpO2、皮膚温 | ✓ | WHOOP がスコア付きリカバリーを返す場合 |
| 睡眠セッション+ステージ+パフォーマンス | ✓ | スコア付きのすべての睡眠記録 |
| サイクル+1日の負荷+キロジュール | ✓ | 生理学的サイクル |
| ワークアウト+スポーツ+心拍ゾーン | ✓ | 記録されたすべてのワークアウト |
| プロフィール+身体測定値 | ✓ | 身長、体重、最大心拍数 |
| 継続的な心拍数/デバイステレメトリー | — | WHOOP の公開 API では公開されていません |
| ライブ BLE 心拍数リスニング | — | このパッケージは Bluetooth リスナーではありません |
この README でいう raw は、対応エンドポイントに対する上流の WHOOP API の JSON を意味し、生のセンサーサンプルではありません。
ツール
まずはこちらからお試しください:
whoop_demo— 現実的な合成リカバリー/睡眠/負荷のペイロードを表示します。OAuth は不要です(接続前に試すを参照)whoop_connection_status— WHOOP を呼び出す前にローカル設定を確認しますwhoop_data_inventory— WHOOP API を呼び出さずに、対応するデータ領域、スコープ、プライバシーモード、おすすめの最初の呼び出しを確認します。whoop_daily_summary— 今日の準備状況、睡眠、負荷、実行候補whoop_weekly_summary— スコアカード、前週との比較、翌週の計画
認証と診断
whoop_capabilities、whoop_agent_manifest、whoop_privacy_audit、whoop_cache_statuswhoop_get_auth_url、whoop_exchange_code、whoop_revoke_access
プロフィール
whoop_get_profile、whoop_get_body_measurements
コレクション(ページネーション対応。start/end フィルターとプライバシーモードの上書きが可能)
whoop_list_recoveries、whoop_list_sleeps、whoop_list_cycles、whoop_list_workouts
コレクションの共通パラメーター:start、end、limit(最大 25)、next_token、all_pages、max_pages、response_format(markdown/json)、privacy_mode(summary/structured/raw)。
WHOOP との境界では、start と end はタイムゾーン情報を含む ISO 日時をそのまま使用します。無効な範囲や開始日時が終了日時より後の範囲は、ネットワークリクエストを送信する前にエラーになります。
ID による単一レコードの取得
whoop_get_cycle、whoop_get_sleep、whoop_get_workoutwhoop_get_cycle_sleep、whoop_get_cycle_recovery
プロンプト
whoop_daily_performance_coach— 今日のシグナルに基づく実践的な日次計画whoop_weekly_training_review— 週ごとの比較+翌週の計画whoop_sleep_recovery_investigator— 睡眠とリカバリーのパターンを調査
各プロンプトは timezone(IANA 形式。デフォルトは UTC)を受け取ります。
リソース
whoop://capabilitieswhoop://summary/daily、whoop://summary/weeklywhoop://latest/recovery、whoop://latest/sleep、whoop://latest/cycle
プライバシーとセキュリティ
- OAuth トークンは
~/.whoop-mcp/tokens.jsonに0600の権限で保存され、ツールから返されることはありません。 - リフレッシュトークンのローテーションでは、同時更新の競合を防ぐためにロックファイルを使用します。
- 破壊的な操作を行うツールは
whoop_revoke_accessのみです。このツールはローカルトークンを削除し、許可を取り消します。 WHOOP_PRIVACY_MODEのデフォルトはstructuredです。生の WHOOP API ペイロードは、rawモードまたは呼び出しごとの上書きを明示した場合にのみ利用できます。- ストラクチャードモードでは、GPS データと秘密情報を含む値を除去しつつ、生理学的データのネスト構造全体と、上流 API に今後追加されるフィールドを保持します。
demo-captureは、ドキュメントや課題に使用するものを書き込む前に、デモの会話記録から機密情報を削除します。- MCP クライアントがアクセストークンやリフレッシュトークンを参照することはありません。
- これは医療上の助言ではありません。このサーバーは、診断や治療ではなく、個人向け AI ワークフローのために、ユーザーが許可したデータを公開します。
設定
setup は、これらの設定の大部分を ~/.whoop-mcp/config.json(0600)に書き込みます。手動で環境変数を上書きすることもできます:
WHOOP_CLIENT_ID=…
WHOOP_CLIENT_SECRET=…
WHOOP_REDIRECT_URI=http://127.0.0.1:3000/callback
# Optional
WHOOP_SCOPES="read:recovery read:cycles read:workout read:sleep read:profile read:body_measurement"
WHOOP_PRIVACY_MODE=structured # summary | structured | raw
WHOOP_CACHE=sqlite # optional read-through cache
WHOOP_TOKEN_PATH=~/.whoop-mcp/tokens.json
WHOOP_CACHE_PATH=~/.whoop-mcp/cache.sqlite
Hermes/リモートセットアップ
npx -y whoop-mcp-unofficial setup --client hermes --no-auth
npx -y whoop-mcp-unofficial auth # run locally if browser auth is needed
npx -y whoop-mcp-unofficial doctor --client hermes
hermes mcp test whoop
Hermes の設定を変更した後は、/reload-mcp または hermes mcp test whoop を使用してください。通常のデータアクセスでは、ゲートウェイを再起動する必要はありません。
ブラウザーでの OAuth 認証を Hermes とは別のマシンで行う必要がある場合は、ローカルで auth を実行し、~/.whoop-mcp/tokens.json を chmod 600 を指定してサーバーにコピーしてください。
要件
- Node.js 20+
- リダイレクト URI が
http://127.0.0.1:3000/callbackの WHOOP Developer アプリ
デフォルトの OAuth スコープ:
read:recovery read:cycles read:workout read:sleep read:profile read:body_measurement
開発
git clone https://github.com/davidmosiah/whoop-mcp.git
cd whoop-mcp
npm install
npm test
npm run build
MCP Inspector でテストします:
npx @modelcontextprotocol/inspector node dist/index.js
HTTP(v2 ステートレス)
デフォルトは stdio です。オプションの Streamable HTTP — セッション ID なし、JSON レスポンス、ループバックのみ:
npx -y whoop-mcp-unofficial --http
# GET http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp (sessionless)
環境変数:WHOOP_MCP_HOST、WHOOP_MCP_PORT、WHOOP_MCP_TRANSPORT=http。
ドキュメント
リンク
- npm:https://www.npmjs.com/package/whoop-mcp-unofficial
- ドキュメントサイト:https://wellness.delx.ai/connectors/whoop
- 旧ドキュメント:https://whoopmcp.vercel.app/
- GitHub Pages ミラー:https://davidmosiah.github.io/whoop-mcp/
- Delx Wellness レジストリ:https://github.com/davidmosiah/delx-wellness
- コネクター品質基準:https://github.com/davidmosiah/delx-wellness/blob/main/docs/connector-quality-standard.md
- WHOOP 公式 API ドキュメント:https://developer.whoop.com/api/
関連項目
Delx Wellness のコネクターライブラリ全体:
| プロバイダー | パッケージ | リポジトリ |
|---|---|---|
| WHOOP | whoop-mcp-unofficial | whoop-mcp |
| Oura | oura-mcp-unofficial | ouramcp |
| Garmin | garmin-mcp-unofficial | garminmcp |
| Strava | strava-mcp-unofficial | strava-mcp |
| Fitbit | fitbit-mcp-unofficial | fitbitmcp |
| Withings | withings-mcp-unofficial | withingsmcp |
| Apple Health | apple-health-mcp-unofficial | apple-health-mcp |
| Polar | polar-mcp-unofficial | polarmcp |
| Nourish(栄養) | wellness-nourish | wellness-nourish |
Hermes のワンコマンドセットアップ — 上記のすべてのコネクターに加え、ウェルネススキルとオンボーディングを事前設定します:delx-wellness-hermes。
📧 お問い合わせとサポート
- 📨 [email protected] — 一般的な質問、統合のサポート、パートナーシップ
- 🐛 バグ報告/機能リクエスト — GitHub Issues
- 🐦 最新情報 — X の @delx369
- 🌐 サイト — wellness.delx.ai
ライセンス
免責事項
このソフトウェアは現状のまま提供されます。医療機器ではなく、医療上の助言を提供するものでもありません。また、診断や治療に使用しないでください。医療上の懸念については、必ず資格を持つ専門家に相談してください。
デモ: docs/readme-demo-synthetic.md(デバイスの記録がない場合は合成データを使用します)。
Raw モードとは WHOOP 公式 API の JSON を指し、連続的なセンサーストリームではありません。
スキルまたは MCP
同じパッケージに、2 つの利用方法があります。MCP は stdio/HTTP でツールを登録します。クライアントが MCP に対応していない場合、スキルを使って CLI 経由で同じツールを実行できます。
npx -y whoop-mcp-unofficial call whoop_connection_status --json '{}'
skill/SKILL.md をエージェントのスキルディレクトリにコピーしてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。