whoop-mcp-server について
whoop-mcp-server は公式 Whoop API v2 経由で健康・活動データを取得する Go 製 MCP サーバーです。MCP クライアントから Whoop の記録を確認する用途向けで、API の JSON オブジェクトと平均 strain の集計ツールを提供します。
主な機能
- 01サイクル、回復、睡眠、ワークアウト記録の取得
- 02プロフィールと身体測定値の取得
- 03日付範囲の検索と自動ページネーション
- 04指定期間の平均 strain の計算
- 05OAuth 認証とトークンの自動更新
活用シーン
- 01当日の回復スコアを確認
- 02過去 1 週間の睡眠データを確認
- 03最近のサイクルの strain を取得
- 04直近数日の平均 strain を確認
MCP 対応
Whoop API v2 のプロフィール、サイクル、回復、睡眠、ワークアウト、身体測定データを MCP クライアント向けのツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
whoop-mcp-server
Go で記述された、公式 Whoop API v2 用の MCP サーバーです。 サイクル、リカバリー、睡眠、ワークアウト、プロフィールのデータを MCP ツールとして提供します。
ツール
すべてのツールは JSON を返します。レコードの形式は変更されていない Whoop API v2 オブジェクトであるため、API が提供するすべてのフィールドをモデルが利用できます。
| ツール | 入力 | 戻り値 |
|---|---|---|
get_profile | — | 単一オブジェクト:user_id、email、first_name、last_name |
get_body_measurement | — | 単一オブジェクト:height_meter、weight_kilogram、max_heart_rate |
get_cycles | start_date、end_date、limit(すべて任意) | サイクルレコードの配列 — 生理学的な1日につき1件:start/end、score_state、およびその日の strain、kilojoule、average_heart_rate、max_heart_rate を含む score |
get_latest_cycle | — | 単一のサイクルレコード(現在または直近の日) |
get_recoveries | start_date、end_date、limit(すべて任意) | リカバリーレコードの配列 — 睡眠ごとに1件:cycle_id、sleep_id、および recovery_score(0~100)、resting_heart_rate、hrv_rmssd_milli、spo2_percentage、skin_temp_celsius を含む score |
get_recovery_for_cycle | cycle_id(必須) | 指定したサイクルの単一リカバリーレコード |
get_sleep | start_date、end_date、limit(すべて任意) | 睡眠レコードの配列:start/end、nap フラグ、各睡眠ステージ(浅い睡眠/SWS/REM/覚醒)の時間(ミリ秒)、respiratory_rate、sleep_performance_percentage、sleep_efficiency_percentage、睡眠必要量の内訳を含む score |
get_workouts | start_date、end_date、limit(すべて任意) | ワークアウトレコードの配列:sport_name、start/end、ワークアウトの strain、心拍数、kilojoule、distance_meter、altitude_gain_meter、心拍ゾーンごとの滞在時間(zone_durations、各心拍ゾーンのミリ秒)を含む score |
get_average_strain | days(任意、デフォルトは7) | 算出された集計値:{days, cycles_counted, average_strain} |
check_auth_status | — | {authenticated: bool} と、成功時のプロフィール、または失敗時の error 文字列 |
注意事項:
- 日付は
YYYY-MM-DD形式です。end_dateは指定日を含みます(API のendが排他的である仕様に従い、内部では翌日の開始時刻に変換されます)。 - コレクションは日付の降順(新しいものが先)で、ページネーションは透過的に処理されます。サーバーは
limit件(デフォルトは25件、最大100件)が集まるまでnext_tokenをたどります。 - スコアは時系列ではなく、各レコードの特定時点の値です。サイクルごとにひとつの負荷値、睡眠ごとにひとつのリカバリー値があります。傾向を調べるには、期間を指定して取得し、モデルに集計させるか(または組み込みの負荷平均を取得する
get_average_strainを使用してください)。 - レコードの
score_stateはSCORED、PENDING_SCORE、UNSCORABLEのいずれかです。scoreが存在するのはSCOREDの場合のみです。
セットアップ
1. Whoop 開発者アプリを作成する
developer.whoop.com でアプリを作成し、次の項目を設定します。
- リダイレクト URI:
http://localhost:8719/callback - スコープ:
read:cycles、read:recovery、read:sleep、read:workout、read:profile、read:body_measurement、offline
クライアント ID とクライアントシークレットを控えておきます。
2. インストール
Homebrew:
brew install zayden16/tap/whoop-mcp-server
または、Releases からビルド済みバイナリをダウンロードするか、次を実行します。
go install github.com/Zayden16/whoop-mcp-server@latest
または、ソースからビルドします。
go build -o whoop-mcp-server .
3. 認証する(初回のみ)
export WHOOP_CLIENT_ID=...
export WHOOP_CLIENT_SECRET=...
./whoop-mcp-server auth
OAuth フローを開始するブラウザーが開きます。トークンは
~/Library/Application Support/whoop-mcp/token.json(macOS)に保存され、その後は
自動的に更新されます(更新トークンはローテーションされます)。
4. Claude Code に登録する
claude mcp add whoop --scope user \
-e WHOOP_CLIENT_ID=... \
-e WHOOP_CLIENT_SECRET=... \
-- /path/to/whoop-mcp-server
または Claude Desktop の場合は、claude_desktop_config.json に追加します。
{
"mcpServers": {
"whoop": {
"command": "/path/to/whoop-mcp-server",
"env": {
"WHOOP_CLIENT_ID": "...",
"WHOOP_CLIENT_SECRET": "..."
}
}
}
}
クエリの例
- 「今日のリカバリースコアは?」
- 「過去1週間の睡眠を表示して」
- 「過去7日間の平均ストレインは?」
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。