WHOOP (read-only) について
WHOOP (read-only)は、MCPクライアントからWHOOPの健康・活動データを照会するためのローカルMCPサーバーです。日次概要やトレンドを提供し、読み取り専用を徹底しながら認証情報を端末内に保存します。
主な機能
- 01回復度、HRV、睡眠、ストレインの取得
- 02ワークアウト、サイクル、プロフィールの取得
- 03日次指標をまとめて返す機能
- 04最大90日間のトレンド集計
- 05トークンのローカル保存と更新
活用シーン
- 01特定日の睡眠と回復度の確認
- 02HRVと安静時心拍数の経時比較
- 03ワークアウト数と平均ストレインの把握
- 04ストレインと回復パターンの分析
MCP 対応
stdio MCPサーバーは、日次概要、トレンド、睡眠、ワークアウト、プロフィールなどのWHOOPデータを読み取り専用ツールとしてMCPクライアントに提供します。WHOOPの読み取りスコープを使用し、認証情報をローカルに保存します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
WHOOP MCP サーバー(読み取り専用)
Claude、Cursor、VS Code、または任意のMCPクライアントから、WHOOPのリカバリー、HRV、睡眠、ストレイン、ワークアウトについて質問できます。データを変更する手段を与えることはありません。
npm run demoで記録した、実際のWHOOPデータに基づく回答です。
「昨夜の睡眠はどうでしたか?今日はなぜリカバリーが41%しかないのですか?」 「過去30日間のHRVと安静時心拍数を比較してください。」 「今月は何回ランニングをしましたか?平均ストレインはいくつでしたか?」 「ストレインが15を超えた日の後は、リカバリーが悪くなりますか?」
(インストールの前または後に、1回限りのauth手順を実行してください。)
このサーバーを選ぶ理由
- 読み取り専用を徹底しています。 WHOOP の
read:*スコープのみをリクエストします。HTTP クライアントが送信できるのはGETのみであり、それ以外の場合はテストでビルドが失敗します。また、すべてのツールにreadOnlyHint: trueが設定されています。 - 質問全体に1回の呼び出しで回答します。
get_daily_overviewは、1日のリカバリー、睡眠、昼寝、ストレイン、ワークアウトをまとめて返します。get_trendsは、最大90日間の平均、範囲、リカバリーゾーンを返します。 - モデルが扱いやすい出力です。 ミリ秒やキロジュールではなく、時間、km、kcal、現地時刻を含むコンパクトなJSONを返すため、トークンを節約し、単位変換のミスを防げます。WHOOP の元のオブジェクトが必要な場合は、
raw: trueを指定してください。 - トークンはお使いのマシン上に保管されます。 ご自身のWHOOP開発者アプリ、
0600のトークンファイル、WHOOPのローテーションするリフレッシュトークンの安全な取り扱いを使用します。サードパーティのサーバーは使用しません。 - 最新のAPIに対応しています。 WHOOP Developer API v2を基盤に構築されています。
- テスト済みです。 Linux、macOS、Windowsで、Node 20、22、24を使ってユニットテスト、MCP統合テスト、エンドツーエンドテスト、パッケージングテストを実行します。
クイックスタート
Node.js 20.11以降とWHOOPのメンバーシップが必要です。
1. WHOOP開発者アプリを作成する(2分)
- WHOOP Developer Dashboardを開き、チームの作成を求められた場合は作成します。
- アプリを作成します。
- スコープ: すべての
read:*スコープ(リカバリー、サイクル、ワークアウト、睡眠、プロフィール、身体測定)を選択します。 - リダイレクトURI:
http://localhost:8787/callback
- スコープ: すべての
- Client IDとClient Secretをコピーします。
2. WHOOP アカウントを接続する
npx -y @oryanomer/whoop-mcp auth
求められたら、Client ID と Client Secret を貼り付けます。シークレットは画面に表示されないため、画面やシェルの履歴に残りません。続いて、ブラウザーで WHOOP の同意ページが開きます。承認すると、トークンが ~/.config/whoop-mcp/tokens.json に保存され、以降は自動的に更新されます。
(スクリプトで使用する場合は、プロンプトに回答する代わりに、環境変数として WHOOP_CLIENT_ID と WHOOP_CLIENT_SECRET を設定できます。)
接続することで、利用規約(EULA)および WHOOP のAPI 利用規約に同意したものとみなされます。データの取り扱いについては、プライバシーポリシーをご覧ください。
3. MCP クライアントに追加する
Claude Code
プラグインとして(推奨)。 サーバーに加え、接続手順を案内する /whoop:auth スキルが追加されます。
/plugin marketplace add oryanomer1/whoop-mcp
/plugin install whoop@whoop-mcp
または、MCP サーバーのみを追加:
claude mcp add whoop --scope user -- npx -y @oryanomer/whoop-mcp
どちらか一方を使用してください。両方を使用すると、すべてのツールが二重に表示されます。
Claude Desktop
ワンクリックで追加: 最新リリースから whoop-mcp-<version>.mcpb をダウンロードし、ダブルクリックします(または Claude Desktop の Settings → Extensions ページにドラッグします)。
または手動で追加: Settings → Developer → Edit Config を開き、次を追加します。
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": ["-y", "@oryanomer/whoop-mcp"]
}
}
}
Claude Desktop を再起動します。Windows でサーバーが起動しない場合は、"command": "cmd" と "args": ["/c", "npx", "-y", "@oryanomer/whoop-mcp"] を使用してください。
Cursor
上の Install in Cursor ボタンをクリックするか、~/.cursor/mcp.json に次を追加します。
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": ["-y", "@oryanomer/whoop-mcp"]
}
}
}
VS Code (GitHub Copilot)
上の Install in VS Code ボタンをクリックするか、.vscode/mcp.json(またはユーザーの mcp.json)に次を追加します。
{
"servers": {
"whoop": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@oryanomer/whoop-mcp"]
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json に次を追加します。
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": ["-y", "@oryanomer/whoop-mcp"]
}
}
}
OpenAI Codex CLI
~/.codex/config.toml に次を追加します。
[mcp_servers.whoop]
command = "npx"
args = ["-y", "@oryanomer/whoop-mcp"]
Docker
まずホスト上で auth を実行し(手順 2)、トークンディレクトリをマウントします。
docker build -t whoop-mcp https://github.com/oryanomer1/whoop-mcp.git
docker run -i --rm -v ~/.config/whoop-mcp:/home/node/.config/whoop-mcp whoop-mcp
MCP クライアントの stdio コマンドとして docker run コマンドを使用します。
その他の MCP クライアント
stdio サーバーとして npx -y @oryanomer/whoop-mcp を実行します。環境変数は必要ありません。クライアント ID とシークレットは、auth の実行時にトークンとともに保存されます。
次のように尋ねてみましょう:「今日の WHOOP の概要を教えてください。」
ツール
| ツール | 返される内容 |
|---|---|
get_daily_overview | 1 日分のリカバリー、睡眠、昼寝、負荷、カロリー、ワークアウト(デフォルトは今日) |
get_trends | 1~90 日分のリカバリー、HRV、安静時心拍数、負荷、睡眠などの日ごとの表と、平均/最小/最大値 |
get_profile | 名前、メールアドレス、身長、体重、最大心拍数 |
list_cycles / get_cycle | 生理学的な日ごとの負荷、カロリー、平均/最大心拍数、歩数 |
list_recoveries | リカバリー率、HRV(RMSSD)、安静時心拍数、SpO2、皮膚温度 |
list_sleeps / get_sleep | 睡眠パフォーマンス、効率、一貫性、各ステージ、中断、呼吸数、必要睡眠時間 |
list_workouts / get_workout | スポーツ、時間、負荷、心拍数、カロリー、距離、心拍ゾーン別の時間(スポーツで絞り込み可能) |
一覧ツールでは、start / end(YYYY-MM-DD または ISO 日時)、days ショートカット、limit(最大 200 件、自動ページネーションあり)、next_token を指定できます。すべてのパラメーターと出力例については、**ツールリファレンス**をご覧ください。
設定
| 変数 | デフォルト | 用途 |
|---|---|---|
WHOOP_CLIENT_ID | トークンファイルから取得 | アプリのクライアント ID(未設定の場合、auth で入力を求められます) |
WHOOP_CLIENT_SECRET | トークンファイルから取得 | アプリのクライアントシークレット(未設定の場合、auth で入力を求められます。入力内容は表示されません) |
WHOOP_REDIRECT_URI | http://localhost:8787/callback | アプリに登録したリダイレクト URI と完全に一致している必要があります |
WHOOP_TOKEN_PATH | ~/.config/whoop-mcp/tokens.json | 認証情報の保存先です。絶対パスを指定する必要があります(~/ は展開されます)。XDG_CONFIG_HOME に対応しています。 |
whoop-mcp Start the MCP server on stdio (what your MCP client runs)
whoop-mcp auth Connect your WHOOP account (opens your browser)
whoop-mcp status Check the stored connection
whoop-mcp logout Delete the locally stored tokens
whoop-mcp --version
すべてのコマンドは npx -y @oryanomer/whoop-mcp <command> で実行するか、npm install -g @oryanomer/whoop-mcp でグローバルにインストールして実行します。
プライバシーとセキュリティ
プライバシーポリシー の全文をお読みください。概要は次のとおりです。
- whoop-mcp は
api.prod.whoop.comとのみ通信します。テレメトリーや仲介サーバーはありません。 - トークンとクライアントシークレットは、ユーザー本人のみが読み取れる(
0600)1 つのファイルに保存されます。ログに記録されたり、ツールから返されたりすることはありません。 - MCP クライアントはツールの結果を言語モデルに送信します。 問い合わせた健康データは、そのモデルプロバイダーの規約に基づいて共有されます。そのため、信頼できるクライアントとプロバイダーを使用してください。
- 接続を解除するには、
whoop-mcp logoutを実行してローカルトークンを削除します。アクセスを完全に取り消すには、アプリを削除するか、WHOOP Developer Dashboard でシークレットをローテーションしてください。
脅威モデルの全文は SECURITY.md にあります。脆弱性は GitHub のセキュリティアドバイザリー から非公開で報告してください。
認証の仕組み
- WHOOP のアクセストークンの有効期間は 1 時間です。whoop-mcp は有効期限の約 1 分前にトークンを更新し、WHOOP が 401 を返した場合にも再度更新します。
- WHOOP は更新のたびに新しいリフレッシュトークンを発行し、同時に実行された更新を拒否します。whoop-mcp はリクエストを 1 つずつ更新し、ロックファイルを使用することで、同じマシン上の複数のクライアント(例:Claude Desktop と Claude Code)が同時に更新しないようにします。また、新しいトークンはアトミックに書き込みます。書き込みに失敗した場合も、新しいトークンはメモリ内に保持されるため、ディスク容量がいっぱいになってもログアウトされることはありません。
- レート制限(429)、WHOOP サーバーエラー、タイムアウト(リクエストごとに 30 秒)、ネットワークエラーは、
Retry-Afterに従ってバックオフしながら再試行されます。クライアントでリクエストをキャンセルすると、WHOOP への呼び出しも停止します。
トラブルシューティング
| 症状 | 対処方法 |
|---|---|
WHOOP のサインインページに 400 Bad Request: Request Header Or Cookie Too Large と表示される | ブラウザーに whoop.com の Cookie が多すぎます。auth が表示するリンクをプライベート/シークレットウィンドウで開くか、whoop.com の Cookie を削除してから、もう一度試してください。 |
| WHOOP にリダイレクト URI に関するエラーが表示される | WHOOP アプリのリダイレクト URI は、http://、ポート、/callback を含め、末尾のスラッシュやスペースを付けずに WHOOP_REDIRECT_URI と完全に一致させる必要があります。 |
Port 8787 is in use | アプリに別の URI(例:http://localhost:9876/callback)を登録し、WHOOP_REDIRECT_URI にその URI を設定して auth を実行してください。 |
ツールエラー Not connected to WHOOP | auth の手順を実行してください。クライアントが別のユーザーとして、または別の HOME で実行されている場合は、クライアント設定で WHOOP_TOKEN_PATH にトークンファイルのパスを設定してください。 |
ツールエラー WHOOP rejected the refresh token | もう一度 auth を実行してください。これは、アプリのシークレットがローテーションされた場合、アクセスが取り消された場合、またはトークンファイルを別のマシンにコピーして使用した場合に発生します。トークンをコピーせず、各マシンで auth を実行してください。 |
ツールエラー 403 ... missing a scope | WHOOP アプリですべての read:* スコープを有効にしてから、もう一度 auth を実行してください。 |
値が不足している、または score_state: PENDING_SCORE と表示される | WHOOP で該当の睡眠、回復、またはワークアウトのスコア計算がまだ完了していません。時間をおいてからもう一度お試しください。 |
| クライアントにサーバーが表示されない | ターミナルで npx -y @oryanomer/whoop-mcp --version を実行して Node と npx を確認し、クライアントを再起動してください。初回起動時はパッケージがダウンロードされるため、数秒かかることがあります。 |
接続状態はいつでも確認できます。
npx -y @oryanomer/whoop-mcp status
アンインストール
npx -y @oryanomer/whoop-mcp logout
その後、MCP クライアントの設定から whoop エントリを削除し、不要になった場合はWHOOP Developer Dashboardでアプリを削除してください。
コントリビューション
Issueやプルリクエストを歓迎します。CONTRIBUTING.mdをご覧ください。唯一の厳守事項は、whoop-mcpを読み取り専用に保つことです。リリースノートはCHANGELOG.mdにあります。
法的事項
- ライセンス: MIT © Oryan Omer
- 利用規約(EULA): EULA.md。whoop-mcpをインストールまたは使用することで、これらの規約に同意したものとみなされます。
- プライバシーポリシー: PRIVACY.md
- セキュリティポリシー: SECURITY.md
これは非公式のプロジェクトであり、WHOOP, Inc.とは提携しておらず、同社から承認を受けていません。「WHOOP」はWHOOP, Inc.の商標です。ここに記載されている内容は、医療上の助言ではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。