oura-ring-mcp について
oura-ring-mcp は Oura Ring の睡眠、レディネス、アクティビティのデータを Claude などの AI アシスタントに接続し、生の JSON ではなく読みやすい分析結果を返します。自分の健康指標を対話で確認したい方向けで、リモートサーバーとしてデプロイすることもできます。
主な機能
- 01睡眠、レディネス、アクティビティ、心拍データの取得
- 02時間と評価を文脈付きで読みやすく表示
- 03異常値の検出と指標間の相関分析
- 04期間比較と HRV トレンド分析
- 05パーソナルアクセストークンまたは OAuth による認証
- 06Railway へのリモートデプロイ
活用シーン
- 01昨夜の睡眠ステージと効率を確認する
- 02今週と先週のレディネスとアクティビティを比較する
- 03飲酒などのタグが睡眠の質に与える影響を調べる
MCP 対応
本プロジェクトは MCP サーバーであり、get_sleep や analyze_hrv_trend などのツール、oura://today などのリソース、プロンプトを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y oura-ring-mcpOURA_ACCESS_TOKENシークレットOura Personal Access Token (get from cloud.ouraring.com/personal-access-tokens)OURA_CLIENT_IDOAuth Client ID (alternative to access token, from developer.ouraring.com)OURA_CLIENT_SECRETシークレットOAuth Client Secret (required with OURA_CLIENT_ID)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Oura MCP サーバー
Oura Ring を Claude やその他の AI アシスタントに接続する MCP サーバーです。生の JSON ではなく、睡眠・コンディション・活動に関する人間が読みやすいインサイトを取得できます。
機能
- スマートなフォーマット - 時間は時/分単位、スコアには文脈を付与(「85 - 最適」)
- 睡眠分析 - 睡眠ステージ、効率、HRV、生体指標
- コンディションの追跡 - 回復スコアと寄与要因の内訳
- 活動データ - 歩数、カロリー、強度の内訳
- 健康指標 - 心拍数、SpO2、ストレス、心血管年齢
- スマート分析 - 異常検知、相関、トレンド分析
- タグ対応 - 条件あり/なしで指標を比較
出力例を見る — 睡眠、コンディション、週次サマリー、スマート分析について Claude が返す内容
クイックスタート
1. インストール
npm install -g oura-ring-mcp
または npx で直接使用できます(インストール不要):
npx oura-ring-mcp
2. Oura での認証
オプション A: パーソナルアクセストークン(より簡単)
- cloud.ouraring.com/personal-access-tokens にアクセスします
- 新しいトークンを作成します
- Claude Desktop の設定で
OURA_ACCESS_TOKENを設定します(以下を参照)
オプション B: OAuth CLI フロー
- developer.ouraring.com で OAuth アプリを作成します
- Redirect URI を
http://localhost:3000/callbackに設定します
- Redirect URI を
- 認証フローを実行します:
export OURA_CLIENT_ID=your_client_id export OURA_CLIENT_SECRET=your_client_secret npx oura-ring-mcp auth - 認証情報は
~/.oura-mcp/credentials.jsonに保存されます
3. Claude Desktop の設定
claude_desktop_config.json に追加します:
パーソナルアクセストークンを使用する場合:
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"],
"env": {
"OURA_ACCESS_TOKEN": "your_token_here"
}
}
}
}
OAuth を使用する場合(npx oura-ring-mcp auth の実行後):
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"]
}
}
}
サーバーは ~/.oura-mcp/credentials.json から認証情報を読み取ります。トークンの自動更新を有効にするには、OAuth 認証情報を追加します:
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"],
"env": {
"OURA_CLIENT_ID": "your_client_id",
"OURA_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Claude Desktop を再起動します。Node >=18 が必要です。
どのような質問ができますか?
毎日のチェックイン:
- 「昨夜はよく眠れましたか?」
- 「今日ワークアウトできるくらい回復していますか?」
- 「今の自分の体は何を伝えていますか?」
パターンとトレンド:
- 「週末のほうがよく眠れますか?」
- 「最適な睡眠のために何時に就寝すればよいですか?」
- 「私の HRV は改善していますか、それとも低下していますか?」
相関とインサイト:
- 「アルコールは睡眠の質に影響しますか?」
- 「何が最もよく眠れた夜を予測しますか?」
- 「運動のタイミングは回復にどう影響しますか?」
比較:
- 「今週の睡眠と先週の睡眠を比較してください」
- 「瞑想した場合としない場合で睡眠はどう変わりますか?」
- 「マグネシウムを摂り始めて何が変わりましたか?」
異常:
- 「データに異常な値はありますか?」
- 「昨日はなぜコンディションがそんなに低かったのですか?」
- 「指標が普段とずれていた日を見つけてください」
利用可能なツール
データ取得
| ツール | 説明 |
|---|---|
get_sleep | ステージ、効率、心拍数、HRV を含む睡眠データ |
get_daily_sleep | 寄与要因を含む日次の睡眠スコア |
get_readiness | コンディションスコアと回復指標 |
get_activity | 歩数、カロリー、強度の内訳 |
get_workouts | 種類と強度を含むワークアウトセッション |
get_sessions | 瞑想およびリラクゼーションのセッション |
get_heart_rate | 一日を通した心拍数の測定値 |
get_stress | ストレスレベルと回復時間 |
get_spo2 | 血中酸素と呼吸障害 |
get_tags | ユーザーが作成したタグとメモ |
スマート分析
| ツール | 説明 |
|---|---|
detect_anomalies | 外れ値検出を使用して異常な測定値を検出します |
analyze_sleep_quality | トレンド、パターン、睡眠負債を考慮した睡眠分析 |
correlate_metrics | 健康指標間の相関関係を見つけます |
compare_periods | 今週と先週を比較します |
compare_conditions | タグの有無による指標を比較します |
best_sleep_conditions | 良い睡眠と悪い睡眠を予測する要因は何か |
analyze_hrv_trend | 移動平均を用いた HRV トレンド |
リソース
| リソース | 説明 |
|---|---|
oura://today | 今日の健康サマリー |
oura://weekly-summary | 平均値を含む直近7日間 |
oura://baseline | 30日間の平均値と正常範囲 |
oura://monthly-insights | トレンドと異常を含む30日間の分析 |
oura://tag-summary | タグと使用頻度 |
プロンプト
| プロンプト | 説明 |
|---|---|
weekly-review | 包括的な週次の健康レビュー |
sleep-optimization | 最高の睡眠につながる要因を特定します |
recovery-check | 今日は高強度のトレーニングをすべきか、休むべきか? |
compare-weeks | 今週と先週の比較 |
tag-analysis | 特定のタグが健康にどのように影響するか |
リモートデプロイ (Railway)
リモートアクセス用に MCP サーバーをデプロイします。サーバーは Oura を介して OAuth をプロキシするため、ユーザーは自身の Oura アカウントで直接認証します — PAT は不要です。
1. Oura OAuth アプリを作成する
- Oura OAuth Applications にアクセスします
- 新しいアプリケーションを作成します
- Redirect URI を次のように設定します:
https://your-app.railway.app/oauth/callback - Client ID と Client Secret を控えます
2. デプロイ
# Install Railway CLI
npm install -g @railway/cli
# Login, init, and deploy
railway login
railway init
railway up
3. 環境変数を設定する
Railway ダッシュボードで以下を追加します:
| 変数 | 説明 |
|---|---|
OURA_CLIENT_ID | あなたの Oura OAuth アプリから取得 |
OURA_CLIENT_SECRET | あなたの Oura OAuth アプリから取得 |
NODE_ENV | production |
MCP_SECRET | (任意) Claude Desktop 用の静的ベアラートークン (openssl rand -base64 32) |
OURA_ACCESS_TOKEN | (任意) OAuth を使用しない場合の PAT フォールバック (MCP_SECRET が必要) |
Railway は PORT と RAILWAY_PUBLIC_DOMAIN を自動的に設定します。
4. Claude.ai から接続する
Claude.ai の connector を使用します:
- Settings > MCP Connectors > Add に移動します
- サーバー URL を入力します:
https://your-app.railway.app(/mcpは除く) - OAuth Client ID と Secret は空のままにします (動的登録が処理します)
- データへのアクセスを承認するため Oura にリダイレクトされます
5. Claude Desktop から接続する
Claude Desktop では、MCP_SECRET + OURA_ACCESS_TOKEN を使用します:
{
"mcpServers": {
"oura-remote": {
"url": "https://your-app.railway.app/mcp",
"headers": {
"Authorization": "Bearer your_mcp_secret_here"
}
}
}
}
ローカルテスト
# With Oura OAuth (full flow)
OURA_CLIENT_ID=your_id OURA_CLIENT_SECRET=your_secret pnpm start:http
# With static secret only (requires OURA_ACCESS_TOKEN)
OURA_ACCESS_TOKEN=your_pat MCP_SECRET=test-secret pnpm start:http
# Verify health endpoint
curl http://localhost:3000/health
# Check OAuth metadata (only available when OURA_CLIENT_ID is set)
curl http://localhost:3000/.well-known/oauth-authorization-server
# Test authenticated request (with static secret)
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer test-secret" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{}},"id":1}'
コントリビューション
アーキテクチャの詳細と開発ガイドラインについては CLAUDE.md を参照してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。