mcpField
O
Oura Ring (read-only)

Oura Ring (read-only)

ローカル
github.comヘルスケア11 週間前に更新

Oura Ring (read-only) について

Oura Ring (read-only)は、Ouraの健康・活動データを照会するMCPサーバーで、MCPクライアントからリングの指標を分析したい人向けです。日次サマリーとトレンドをまとめて提供し、読み取り専用を徹底してOAuthトークンをローカルに保存します。

主な機能

  1. 01日次の準備度、睡眠、活動の概要
  2. 02最大90日分のトレンドと平均値
  3. 03睡眠ステージと心拍数カーブ
  4. 04活動、ワークアウト、セッション、タグ
  5. 05OAuthトークンのローカル保存と更新
  6. 06公開サンプルデータのサンドボックス

活用シーン

  1. 01ある日の睡眠ステージと準備度の確認
  2. 021か月のHRVと最低心拍数の比較
  3. 03活動、ストレス、睡眠の傾向分析
  4. 04タグを付けた日と準備度の関連確認

MCP 対応

日次サマリー、トレンド表、睡眠詳細、心拍数データなどの読み取り専用OuraツールをMCPクライアントに公開します。stdioで動作し、Ouraデータを変更するツールはありません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"royreznik-oura-ring": {
"command": "npx",
"args": [
"-y",
"@royreznik/oura-ring-mcp"
]
}
}
}
起動コマンドnpx -y @royreznik/oura-ring-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@royreznik/oura-ring-mcp1.0.0

ツール

14

掲載時のツール一覧 · 1 週間前に更新

このツールにパラメーターはありません。

詳細

Oura Ring MCP サーバー(読み取り専用)

npm CI oura-ring-mcp MCP server – quality and maintenance score on Glama M8ven Score Node Read-only License: MIT

Claude、Cursor、VS Code、または任意のMCPクライアントに、Oura Ringのコンディション、睡眠、HRV、アクティビティ、ストレス、心拍数について質問できます。データを変更する手段を一切与えずに利用できます。

「昨夜の睡眠はどうでしたか?コンディションが64しかないのはなぜですか?」 「過去30日間のHRVと最低心拍数を比較してください。」 「昨夜の睡眠ステージと心拍数の推移を表示してください。」 「アルコールをタグ付けした日の後は、コンディションが下がりますか?」

Install in Cursor Install in VS Code

(インストールの前後に、一度だけauth手順を実行してください。)

このサーバーの特長

  • 読み取り専用を徹底。 OuraのAPIにはデータを書き込むエンドポイントがありません。このクライアントはさらに厳格で、GETのみを送信し、/v2/usercollection/以外のURLを拒否します。また、Webhook APIには一切アクセスせず、すべてのツールにreadOnlyHint: trueが設定されています。これらを満たさない場合、テストでビルドが失敗します。
  • 質問全体に1回の呼び出しで回答。 get_daily_overviewは、1日分のコンディション、睡眠、昼寝、アクティビティ、ストレス、レジリエンス、SpO2、ワークアウト、タグをまとめて返します。get_trendsは、最大90日分の日別テーブルに加え、平均値とコンディションゾーンを返します。
  • モデルに適した出力。 秒やメートルではなく、時間、分、km、現地時刻を使ったコンパクトなJSONを出力します。ヒプノグラムはステージごとのセグメントで、心拍数はバケットごとに集約されます。Ouraの元のオブジェクトが必要な場合は、raw: trueを指定してください。
  • 利用できないデータにも柔軟に対応。 Ouraの同意画面でデータタイプのチェックを外している場合、統合ツールは失敗する代わりに、そのデータタイプをunavailableに列挙します。
  • トークンはお使いのマシンから外に出ません。 ご自身のOura APIアプリケーション、PKCEによるOAuth、0600のトークンファイルを使用し、Ouraの一度しか使えないリフレッシュトークンを安全に扱います。サードパーティのサーバーもテレメトリーもありません。
  • アカウントなしで試せます。 OURA_SANDBOX=1を指定すると、Ouraの公開サンプルデータを利用できます。

クイックスタート

**Node.js 20.11+**とOuraアカウントが必要です。(Ouraは2025年12月に個人用アクセストークンを廃止したため、OAuthのみ利用できます。)

1. Oura APIアプリケーションを作成する(2分)
  1. cloud.ouraring.com/oauth/applicationsを開き、新しいアプリケーションを作成します。
  2. Redirect URIをhttp://localhost:8787/callbackに設定します。
  3. Client IDとClient Secretをコピーします。

Ouraの承認なしで、アプリケーションは最大10人のユーザーに利用できます。個人利用には十分です。

2. Oura アカウントを接続する
npx -y @royreznik/oura-ring-mcp auth

求められたら、クライアント ID とクライアントシークレットを貼り付けます(シークレットは画面に表示されません)。ブラウザーで Oura の同意ページが開くので、すべてのデータ種別にチェックを入れたまま承認してください。トークンは ~/.config/oura-ring-mcp/tokens.json に保存され、以降は自動的に更新されます。

(スクリプトの場合、プロンプトに回答する代わりに OURA_CLIENT_ID と OURA_CLIENT_SECRET を設定してください。)

3. MCP クライアントに追加する
Claude Code

プラグインとして(サーバーと、接続手順を案内する /oura:auth スキルを追加します):

/plugin marketplace add royreznik/oura-ring-mcp
/plugin install oura@oura-ring-mcp

または、MCP サーバーのみ:

claude mcp add oura --scope user -- npx -y @royreznik/oura-ring-mcp
Claude Desktop、Cursor、Windsurf

クライアントの MCP 設定に追加します(Claude Desktop:Settings → Developer → Edit Config、Cursor:~/.cursor/mcp.json、Windsurf:~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["-y", "@royreznik/oura-ring-mcp"]
    }
  }
}

Claude Desktop では、最新リリースから .mcpb バンドルをインストールすることもできます。

VS Code(GitHub Copilot)

.vscode/mcp.json(またはユーザーの mcp.json):

{
  "servers": {
    "oura": { "type": "stdio", "command": "npx", "args": ["-y", "@royreznik/oura-ring-mcp"] }
  }
}
OpenAI Codex CLI

~/.codex/config.toml:

[mcp_servers.oura]
command = "npx"
args = ["-y", "@royreznik/oura-ring-mcp"]
Docker

まずホスト上で auth を実行し、その後トークンディレクトリをマウントします:

docker build -t oura-ring-mcp https://github.com/royreznik/oura-ring-mcp.git
docker run -i --rm -v ~/.config/oura-ring-mcp:/home/node/.config/oura-ring-mcp oura-ring-mcp

次に、「今日の Oura の概要を教えてください」と尋ねます。

アカウントなしで試す
claude mcp add oura-sandbox --env OURA_SANDBOX=1 -- npx -y @royreznik/oura-ring-mcp

サンドボックスモードでは、Oura の公開サンプルデータを利用できます。認証手順は不要で、個人データも使いません。

ツール

ツール返される内容
get_daily_overview1 日分:レディネス、睡眠スコアと主睡眠、昼寝、アクティビティ、ストレス、レジリエンス、SpO2、心血管年齢、VO2 max、就寝時刻のガイダンス、ワークアウト、セッション、タグ(デフォルトでは、スコアが付いた最新の日)
get_trendsレディネス、睡眠、アクティビティのスコア、睡眠ステージ、HRV、最低心拍数、体温、歩数、カロリー、ストレスについて、日ごとの表と平均/最小/最大を返します(期間は 1~90 日)
get_profile年齢、身長、体重、性別、メールアドレス、リングのモデル、サイズ、色、ファームウェア、バッテリー残量
list_daily_readinessレディネススコア、要因、体温の偏差
list_daily_sleep睡眠スコアと要因
list_sleep_periods / get_sleep_period夜間の睡眠と昼寝:ステージ、入眠潜時、効率、HR、HRV、呼吸。1 晩分の睡眠段階図と HR/HRV の推移
list_daily_activityアクティビティスコア、歩数、カロリー、アクティビティ時間、座位時間
list_workoutsアクティビティ、強度、時間、カロリー、距離(アクティビティで絞り込み可能)
list_sessions気分、HR、HRV を含む瞑想/呼吸/リラクゼーションのセッション
list_daily_healthストレス、レジリエンス、SpO2 と呼吸障害、心血管年齢、VO2 max、就寝時間帯を日ごとに結合して返します
list_tagsOura アプリのタグとメモ(アルコール、カフェイン、体調不良、カスタムなど)
list_rest_mode_periodsRest Mode の期間と症状タグ
get_heart_rate5 分/15 分/1 時間/1 日単位(または生データ)に集約した心拍数時系列と、ソースごとの統計。1 回の呼び出しにつき最大 30 日分

リスト取得ツールは start / end(YYYY-MM-DD、両端を含む)、簡易指定の days、および next_token を受け付けます。詳細は**ツールリファレンス**をご覧ください。

設定

変数デフォルト用途
OURA_CLIENT_IDトークンファイルから取得アプリのクライアント ID(未設定の場合、auth が入力を求めます)
OURA_CLIENT_SECRETトークンファイルから取得アプリのクライアントシークレット(未設定の場合、auth が入力を求めます。入力内容は表示されません)
OURA_REDIRECT_URIhttp://localhost:8787/callbackアプリに登録されているリダイレクト URI と完全に一致する必要があります
OURA_TOKEN_PATH~/.config/oura-ring-mcp/tokens.json認証情報の保存先です。絶対パスである必要があります(~/ は展開されます)。XDG_CONFIG_HOME に対応しています。
OURA_SANDBOX未設定1 を設定すると、アカウントの代わりに Oura の公開サンプルデータを提供します
oura-ring-mcp            Start the MCP server on stdio (what your MCP client runs)
oura-ring-mcp auth       Connect your Oura account (opens your browser)
oura-ring-mcp status     Check the stored connection
oura-ring-mcp logout     Delete the locally stored tokens
oura-ring-mcp --version

「今日」はコンピューターのタイムゾーンに基づいて算出されます。このタイムゾーンは、Oura アプリで使用しているタイムゾーンと一致している必要があります。

プライバシーとセキュリティ

  • oura-ring-mcp は api.ouraring.com とのみ通信します(auth の実行中にブラウザーで cloud.ouraring.com にアクセスする場合を除きます)。テレメトリーや中継サーバーはありません。
  • トークンとクライアントシークレットは、ユーザー本人のみが読み取れる(0600)ファイル 1 つに保存されます。ログに記録されたり、ツールから返されたりすることはありません。
  • **MCP クライアントは、ツールの結果を言語モデルに送信します。**問い合わせた健康データは、その利用規約に基づいてモデルのプロバイダーと共有されます。
  • 接続を解除するには、oura-ring-mcp logout を実行します。アクセス権を完全に取り消すには、cloud.ouraring.com/oauth/applications でアプリケーションを削除するか、Oura アカウントでアクセス権を取り消します。

詳細については、PRIVACY.md と SECURITY.md をご覧ください。

認証の仕組み

  • PKCE(S256)とランダムな state を使用する OAuth 2 認可コードフローです。ループバック専用のコールバックサーバーで結果を受け取ります。
  • Oura のリフレッシュトークンは 1 回しか使えません。oura-ring-mcp は、有効期限の直前(および 401 の発生時)に、ロックファイルを使って同時に 1 つずつリフレッシュします。これにより、同じマシン上で複数のクライアント(例:Claude Desktop と Claude Code)が同時にリフレッシュするのを防ぎ、新しいトークンをアトミックに書き込みます。書き込みに失敗した場合も、新しいトークンはメモリーに保持されるため、ディスク容量がいっぱいになってもログアウトされません。
  • レート制限(429。Retry-After に従います)、サーバーエラー、タイムアウト(30 秒)、ネットワークエラーは、バックオフを適用して再試行されます。クライアントでリクエストをキャンセルすると、Oura への呼び出しも停止します。

トラブルシューティング

症状対処方法
Oura にリダイレクト URI エラーが表示されるアプリのリダイレクト URI は、http://、ポート、/callback を含めて OURA_REDIRECT_URI と完全に一致する必要があります。
Port 8787 is in useアプリに別の URI(例:http://localhost:9876/callback)を登録し、OURA_REDIRECT_URI にその URI を設定して auth を実行します。
Not connected to Ouraauth を実行します。クライアントが別のユーザーまたは HOME で実行されている場合は、クライアント設定で OURA_TOKEN_PATH を設定します。
Oura rejected the refresh tokenauth を再実行します(アプリのシークレットが更新された、アクセス権が取り消された、またはトークンファイルを別のマシンにコピーした場合に発生します)。
データタイプが unavailable(403)に表示されるOura の同意ページでチェックが外れているか、有効な Oura メンバーシップが必要です。auth を再実行して許可します。
426 エラースマートフォンの Oura アプリを更新して開き、同期します。
今日のデータが見つからないOura にデータが保存されるのは、リングが Oura アプリを通じて同期された後のみです。アプリを開いてから、もう一度問い合わせてください。
npx -y @royreznik/oura-ring-mcp status

開発

npm install
npm test                 # unit, MCP integration, end-to-end and packaging tests (no network)
npm run smoke:sandbox    # every tool against Oura's live sandbox API
npm run smoke:live       # every tool against your account (after auth); prints only counts
npm run inspect          # MCP Inspector

CONTRIBUTING.md をご覧ください。唯一の厳格なルールは、oura-ring-mcp を読み取り専用に保つことです。

クレジットと法的情報

アーキテクチャ、認証、テストの方針は、Oryan Omer による whoop-mcp(MIT)を参考にしています。

MIT © Roy Reznik。非公式プロジェクトであり、Oura Health Oy との提携や同社による承認はありません。「Oura」は Oura Health Oy の商標です。ここに記載されている内容は、医学的助言ではありません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。