Oura Ring Mcp

io.github.mitchhankins01Published by GitHub account mitchhankins01v0.1.4Updated Oct 24, 2026

Connect your Oura Ring to Claude AI assistants. Health metrics with smart analysis tools.

VerifiedSTDIODesktop onlyLocation & LifestyleData & Analytics

Overview

AI-generated overview

Connects an Oura Ring account to an AI assistant so it can read sleep, readiness, activity and health data and analyze trends.

What you can do
  • Retrieve sleep, daily sleep scores, readiness, activity, workouts, meditation sessions, heart rate, stress, SpO2 and tags
  • Run smart analysis: anomaly detection, sleep quality and sleep debt, metric correlations, period and tag-condition comparisons, best-sleep predictors, HRV trends
  • Read summary resources for today, the past week, a 30-day baseline, monthly insights and tag usage
  • Use built-in prompts for weekly review, sleep optimization, recovery checks, week comparisons and tag analysis
When to use it
Useful when you want an assistant to interpret your own Oura data in plain language: daily check-ins, recovery and training decisions, sleep and HRV trends, and comparisons across weeks or tagged conditions.
Requirements
Runs locally as an npm package (Node 18 or later) over stdio, or can be self-hosted remotely. Needs an Oura account and either a personal access token in OURA_ACCESS_TOKEN or OAuth credentials OURA_CLIENT_ID and OURA_CLIENT_SECRET; OAuth credentials are stored in a local credentials file.
Before you install
Requires access to sensitive health data and OAuth secrets (OURA_ACCESS_TOKEN, OURA_CLIENT_SECRET); OAuth credentials are saved to a local credentials file. The remote deployment option adds a static bearer token (MCP_SECRET) and exposes your data through a hosted endpoint. Tools are read-only, but the assistant can see and summarize your personal health records.

Installation

In SourceWeft

  1. Open Oura Ring Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Oura MCP Server

[npm version] [MCP Registry] [CI]

An MCP server that connects your Oura Ring to Claude and other AI assistants. Get human-readable insights about your sleep, readiness, and activity—not just raw JSON.

Features

[Demo]
  • Smart formatting - Durations in hours/minutes, scores with context ("85 - Optimal")
  • Sleep analysis - Sleep stages, efficiency, HRV, and biometrics
  • Readiness tracking - Recovery scores and contributor breakdown
  • Activity data - Steps, calories, and intensity breakdown
  • Health metrics - Heart rate, SpO2, stress, cardiovascular age
  • Smart analysis - Anomaly detection, correlations, trend analysis
  • Tags support - Compare metrics with/without conditions

See example outputs — what Claude returns for sleep, readiness, weekly summaries, and smart analysis

Quick Start

1. Install

bash
npm install -g oura-ring-mcp

Or use directly with npx (no install needed):

bash
npx oura-ring-mcp

2. Authenticate with Oura

Option A: Personal Access Token (simpler)

  1. Go to cloud.ouraring.com/personal-access-tokens
  2. Create a new token
  3. Set OURA_ACCESS_TOKEN in your Claude Desktop config (see below)

Option B: OAuth CLI Flow

  1. Create an OAuth app at developer.ouraring.com
    • Set Redirect URI to http://localhost:3000/callback
  2. Run the auth flow:
    bash
    export OURA_CLIENT_ID=your_client_idexport OURA_CLIENT_SECRET=your_client_secretnpx oura-ring-mcp auth
  3. Credentials are saved to ~/.oura-mcp/credentials.json

3. Configure Claude Desktop

Add to claude_desktop_config.json:

With Personal Access Token:

json
{  "mcpServers": {    "oura": {      "command": "npx",      "args": ["oura-ring-mcp"],      "env": {        "OURA_ACCESS_TOKEN": "your_token_here"      }    }  }}

With OAuth (after running npx oura-ring-mcp auth):

json
{  "mcpServers": {    "oura": {      "command": "npx",      "args": ["oura-ring-mcp"]    }  }}

The server reads credentials from ~/.oura-mcp/credentials.json. To enable automatic token refresh, add your OAuth credentials:

json
{  "mcpServers": {    "oura": {      "command": "npx",      "args": ["oura-ring-mcp"],      "env": {        "OURA_CLIENT_ID": "your_client_id",        "OURA_CLIENT_SECRET": "your_client_secret"      }    }  }}

Restart Claude Desktop. Requires Node >=18.

What Can I Ask?

Daily check-ins:

  • "How did I sleep last night?"
  • "Am I recovered enough to work out today?"
  • "What's my body telling me right now?"

Patterns & trends:

  • "Do I sleep better on weekends?"
  • "What time should I go to bed for optimal sleep?"
  • "Is my HRV improving or declining?"

Correlations & insights:

  • "Does alcohol affect my sleep quality?"
  • "What predicts my best sleep nights?"
  • "How does exercise timing affect my recovery?"

Comparisons:

  • "Compare my sleep this week vs last week"
  • "How do I sleep after meditation vs without?"
  • "What changed when I started taking magnesium?"

Anomalies:

  • "Are there any unusual readings in my data?"
  • "Why was my readiness so low yesterday?"
  • "Find days where my metrics were off"

Available Tools

Data Retrieval

ToolDescription
get_sleepSleep data with stages, efficiency, HR, HRV
get_daily_sleepDaily sleep scores with contributors
get_readinessReadiness scores and recovery metrics
get_activitySteps, calories, intensity breakdown
get_workoutsWorkout sessions with type and intensity
get_sessionsMeditation and relaxation sessions
get_heart_rateHR readings throughout the day
get_stressStress levels and recovery time
get_spo2Blood oxygen and breathing disturbance
get_tagsUser-created tags and notes

Smart Analysis

ToolDescription
detect_anomaliesFind unusual readings using outlier detection
analyze_sleep_qualitySleep analysis with trends, patterns, debt
correlate_metricsFind correlations between health metrics
compare_periodsCompare this week vs last week
compare_conditionsCompare metrics with/without a tag
best_sleep_conditionsWhat predicts your good vs poor sleep
analyze_hrv_trendHRV trend with rolling averages

Resources

ResourceDescription
oura://todayToday's health summary
oura://weekly-summaryLast 7 days with averages
oura://baselineYour 30-day averages and normal ranges
oura://monthly-insights30-day analysis with trends and anomalies
oura://tag-summaryYour tags and usage frequency

Prompts

PromptDescription
weekly-reviewComprehensive weekly health review
sleep-optimizationIdentify what leads to your best sleep
recovery-checkShould you train hard or rest today?
compare-weeksThis week vs last week comparison
tag-analysisHow a specific tag affects your health

Remote Deployment (Railway)

Deploy the MCP server for remote access. The server proxies OAuth through Oura, so users authenticate directly with their Oura account — no PAT needed.

1. Create an Oura OAuth App

  1. Go to Oura OAuth Applications
  2. Create a new application
  3. Set the Redirect URI to: https://your-app.railway.app/oauth/callback
  4. Note the Client ID and Client Secret

2. Deploy

bash
# Install Railway CLInpm install -g @railway/cli
# Login, init, and deployrailway loginrailway initrailway up

3. Set Environment Variables

In the Railway dashboard, add:

VariableDescription
OURA_CLIENT_IDFrom your Oura OAuth app
OURA_CLIENT_SECRETFrom your Oura OAuth app
NODE_ENVproduction
MCP_SECRET(Optional) Static bearer token for Claude Desktop (openssl rand -base64 32)
OURA_ACCESS_TOKEN(Optional) PAT fallback if not using OAuth (MCP_SECRET required)

Railway automatically sets PORT and RAILWAY_PUBLIC_DOMAIN.

4. Connect from Claude.ai

Use the connector in Claude.ai:

  1. Go to Settings > MCP Connectors > Add
  2. Enter your server URL: https://your-app.railway.app (without /mcp)
  3. Leave OAuth Client ID and Secret empty (dynamic registration handles it)
  4. You'll be redirected to Oura to authorize access to your data

5. Connect from Claude Desktop

For Claude Desktop, use MCP_SECRET + OURA_ACCESS_TOKEN:

json
{  "mcpServers": {    "oura-remote": {      "url": "https://your-app.railway.app/mcp",      "headers": {        "Authorization": "Bearer your_mcp_secret_here"      }    }  }}

Local Testing

bash
# 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 endpointcurl 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}'

Contributing

See CLAUDE.md for architecture details and development guidelines.

License

MIT

Source: README.md at commit 347624e

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.4LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.