Oura MCP server
Oura MCP server
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_activityとworkoutはend_dateを排他として扱うため、同じ日を指定した範囲は幅ゼロになります
その結果、静かな失敗が起きます。oura_sleep は空の periods 配列付きのスコアを返し、oura_activity は null を返し、oura_workouts は [] を返します。単日を呼び出すたびにです。何もエラーが出ないため、「クエリが間違っていた」のではなく「データが記録されていない」ように見えます。このサーバーは、範囲を両側に拡張し、各レコードの day フィールドに基づいてフィルタリングして戻すため、タイムゾーンに対して正しく動作します。また、next_token を最後まで追跡するため、黙って1ページだけを返すことはありません。
ツール
Tool | 取得できるもの |
| 1日分の睡眠スコア、レディネススコア、睡眠期間、アクティビティを1回の呼び出しで取得 |
| 日別スコアとその貢献因子に加えて、生の睡眠期間(時間、睡眠段階、心拍数、HRV) |
| Oura が推奨する就寝時間帯と、実際の就寝時刻との比較 |
| レディネススコアとその貢献因子 |
| 長期的なレジリンスレベルと、睡眠・日中の回復の貢献因子 |
| 推定の血管年齢と脈波伝播速度 |
| 推定 VO2 max 値 |
| スコア、歩数、消費カロリー、距離、活動時間の内訳 |
| 心拍数、カロリー、時間、強度を含むワークアウト |
| 時間帯で指定した連続心拍数サンプル |
| 日別のストレスと回復時間 |
| 夜間の平均血中酸素 |
| 瞑想、呼吸法、リラックスセッション |
| その日に記録されたタグ(旧型と拡張型の両方) |
| その日の全体をカバーする休養モードの期間 |
| ペアリングしたことのある全リングと、バッテリー残量の記録 |
| 年齢、体重、身長、生物学的性別、メールアドレス |
| 複数日にわたる睡眠、アディネス、アクティビティ、ストレスのスコア |
日付で絞り込むすべてのツールには、任意の date を YYYY-MM-DD 形式で指定でき、省略時は今日になります。Oura は、夜のデータを起床した日のレコードとして保存します。
oura_vo2_max と oura_sleep_time と oura_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/tokenOura のトークンは cloud.ouraring.com から取得してください。
その後、systemd/*.service と nginx/oura-mcp.conf に YOUR_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 nginx127.0.0.1:8441 にトンネルまたは HTTPS プロキシを向けてください。OAuth には HTTPS が必要です。
外部から確認してください。discovery はメタデータを返し、トークンなしの /mcp は 401 を返す必要があります。
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 userstdio で実行し、ログイン層を使わない場合は:
OURA_TOKEN=your-token .venv/bin/oura-mcpクレジット
ログイン層は rollecode/obsidian-remote-mcp の作品です。
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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