Skip to main content
Glama
rollecode

Oura MCP server

by rollecode

Oura MCP server

Version Python Node OAuth

Claude.ai と Claude Code から Oura リングのデータを読み取れます。睡眠スコアの背後にある完全な睡眠期間、レディネス、アクティビティ、ワークアウト、心拍数、ストレス、SpO2、レジリエンス、心血管年齢、VO2 max、就寝時間の提案、タグ、休養モードを扱います。文書化された Oura API v2 と通信し、前面に OAuth 2.1 ログインを配置しているため、Claude.ai にカスタムコネクタとして追加できます。Claude Code では、通常のトークンを代わりに使えます。

npm パッケージを使わない理由

このサーバーは、元々 @daveremy/oura-mcp のラッパーとして始めましたが、そのパッケージは、どこからでも使えますが、問い合わせた内容にはほとんど何も返さないため、置き換えました。これは、単日の範囲を start_date == end_date として扱い、その名前が示す使い方は Oura API が想定している範囲とは一致しません。

  • sleep は UTC の bedtime_start でフィルタリングするため、現地時刻(UTC+3)の 00:31 に始まる夜は UTC の前日に落ち、その日の窓の外に出ます

  • daily_activityworkoutend_date を排他として扱うため、同じ日を指定した範囲は幅ゼロになります

その結果、静かな失敗が起きます。oura_sleep は空の periods 配列付きのスコアを返し、oura_activitynull を返し、oura_workouts[] を返します。単日を呼び出すたびにです。何もエラーが出ないため、「クエリが間違っていた」のではなく「データが記録されていない」ように見えます。このサーバーは、範囲を両側に拡張し、各レコードの day フィールドに基づいてフィルタリングして戻すため、タイムゾーンに対して正しく動作します。また、next_token を最後まで追跡するため、黙って1ページだけを返すことはありません。

ツール

Tool

取得できるもの

oura_daily_summary

1日分の睡眠スコア、レディネススコア、睡眠期間、アクティビティを1回の呼び出しで取得

oura_sleep

日別スコアとその貢献因子に加えて、生の睡眠期間(時間、睡眠段階、心拍数、HRV)

oura_sleep_time

Oura が推奨する就寝時間帯と、実際の就寝時刻との比較

oura_readiness

レディネススコアとその貢献因子

oura_resilience

長期的なレジリンスレベルと、睡眠・日中の回復の貢献因子

oura_cardiovascular_age

推定の血管年齢と脈波伝播速度

oura_vo2_max

推定 VO2 max 値

oura_activity

スコア、歩数、消費カロリー、距離、活動時間の内訳

oura_workouts

心拍数、カロリー、時間、強度を含むワークアウト

oura_heart_rate

時間帯で指定した連続心拍数サンプル

oura_stress

日別のストレスと回復時間

oura_spo2

夜間の平均血中酸素

oura_sessions

瞑想、呼吸法、リラックスセッション

oura_tags

その日に記録されたタグ(旧型と拡張型の両方)

oura_rest_mode

その日の全体をカバーする休養モードの期間

oura_ring

ペアリングしたことのある全リングと、バッテリー残量の記録

oura_personal_info

年齢、体重、身長、生物学的性別、メールアドレス

oura_trends

複数日にわたる睡眠、アディネス、アクティビティ、ストレスのスコア

日付で絞り込むすべてのツールには、任意の dateYYYY-MM-DD 形式で指定でき、省略時は今日になります。Oura は、夜のデータを起床した日のレコードとして保存します。

oura_vo2_maxoura_sleep_timeoura_cardiovascular_age は、設計上データがまばらです。Oura が毎日ではなく定期的に計算するため、空の結果は正常なことであり、同期の失敗ではありません。

全体の仕組み

Claude.ai / Claude Code
        |  HTTPS
   Cloudflare Tunnel, or any proxy that gives you HTTPS
        |
   nginx  127.0.0.1:8441
        |
   auth-server.js  :8442    handles the login and the tokens
        |
   oura-mcp  :8440          streamable HTTP, local only
        |
   api.ouraring.com

ポート番号は 8440 から 8442 です。このホスト上の他MCPサーバーとは重ならないようにしています。:8440 のサーバーは独自のログインを持たず、ループバック以外にはバインドしないので、ログイン層を経由したときだけ到達できます。

Tセットアップ

Python 3.12 以上が必要です。ログイン層には Node も必要です。

python3 -m venv .venv
.venv/bin/pip install -e .
npm install --omit=dev

mkdir -p ~/.config/oura-mcp && chmod 700 ~/.config/oura-mcp
echo "OURA_TOKEN=your-personal-access-token" > ~/.config/oura-mcp/env
chmod 600 ~/.config/oura-mcp/env

CONFIG_DIR=~/.config/oura-mcp node set-password.js 'your-password-here'
openssl rand -hex 32 > ~/.config/oura-mcp/token
chmod 600 ~/.config/oura-mcp/token

Oura のトークンは cloud.ouraring.com から取得してください。

その後、systemd/*.servicenginx/oura-mcp.confYOUR_USER とホスト名を書き込み、次を行います:

sudo cp systemd/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now oura-mcp oura-mcp-auth
sudo cp nginx/oura-mcp.conf /etc/nginx/sites-enabled/oura-mcp
sudo nginx -t && sudo systemctl reload nginx

127.0.0.1:8441 にトンネルまたは HTTPS プロキシを向けてください。OAuth には HTTPS が必要です。

外部から確認してください。discovery はメタデータを返し、トークンなしの /mcp401 を返す必要があります。

curl https://your-host/.well-known/oauth-authorization-server
curl -o /dev/null -w '%{http_code}\n' -X POST https://your-host/mcp

接続

Claude.ai:Settings、Connectors、カスタムコネクタの追加、https://your-host/mcp、クライアントIDとクライアントシークレットは空にします。

Claude Code:

claude mcp add --transport http oura https://your-host/mcp \
  --header "Authorization: Bearer $(cat ~/.config/oura-mcp/token)" --scope user

stdio で実行し、ログイン層を使わない場合は:

OURA_TOKEN=your-token .venv/bin/oura-mcp

クレジット

ログイン層は rollecode/obsidian-remote-mcp の作品です。

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.

  • Connect your Oura Ring account securely in minutes. Enable authorized access to your sleep, activi…

  • Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rollecode/oura-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server