PluginBench
MCP Server
Stale

io.github.mitchhankins01/oura-ring-mcp MCP Server

io.github.mitchhankins01/oura-ring-mcp

Connect your Oura Ring to Claude for smart health insights—sleep, readiness, activity, and trend analysis.

What is the io.github.mitchhankins01/oura-ring-mcp MCP server?

The Oura MCP Server connects your Oura Ring to Claude and other AI assistants, providing human-readable health metrics and smart analysis. It retrieves sleep stages, readiness scores, activity data, heart rate, and other biometrics, then uses anomaly detection, correlation analysis, and trend tracking to surface actionable insights about your health patterns.

This server bridges your Oura Ring wearable to Claude, letting you ask natural-language questions about your sleep quality, recovery readiness, activity levels, and health trends. Instead of raw JSON, you get formatted insights with context (e.g., "85 - Optimal"), anomaly detection, and correlation analysis to help you understand what drives your best health outcomes.

How to install io.github.mitchhankins01/oura-ring-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • OURA_ACCESS_TOKEN
    secret

    Oura Personal Access Token (get from cloud.ouraring.com/personal-access-tokens)

  • OURA_CLIENT_ID

    OAuth Client ID (alternative to access token, from developer.ouraring.com)

  • OURA_CLIENT_SECRET
    secret

    OAuth Client Secret (required with OURA_CLIENT_ID)

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "oura-ring-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "oura-ring-mcp"
      ],
      "env": {
        "OURA_ACCESS_TOKEN": "<YOUR_OURA_ACCESS_TOKEN>",
        "OURA_CLIENT_ID": "<YOUR_OURA_CLIENT_ID>",
        "OURA_CLIENT_SECRET": "<YOUR_OURA_CLIENT_SECRET>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • get_sleep — Sleep data with stages, efficiency, heart rate, and HRV
  • get_daily_sleep — Daily sleep scores with contributor breakdown
  • get_readiness — Readiness scores and recovery metrics
  • get_activity — Steps, calories, and intensity breakdown
  • get_workouts — Workout sessions with type and intensity
  • get_sessions — Meditation and relaxation sessions
  • get_heart_rate — Heart rate readings throughout the day
  • get_stress — Stress levels and recovery time
  • get_spo2 — Blood oxygen and breathing disturbance
  • get_tags — User-created tags and notes
  • detect_anomalies — Find unusual readings using outlier detection
  • analyze_sleep_quality — Sleep analysis with trends, patterns, and sleep debt
  • correlate_metrics — Find correlations between health metrics
  • compare_periods — Compare this week vs last week
  • compare_conditions — Compare metrics with and without a tag
  • best_sleep_conditions — Identify what predicts your good vs poor sleep
  • analyze_hrv_trend — HRV trend analysis with rolling averages

Use cases

  • Ask daily health check-in questions like 'How did I sleep last night?' or 'Am I recovered enough to work out today?'
  • Identify sleep and recovery patterns by asking 'Do I sleep better on weekends?' or 'What time should I go to bed for optimal sleep?'
  • Discover health correlations such as 'Does alcohol affect my sleep quality?' or 'How does exercise timing affect my recovery?'
  • Compare health metrics across time periods: 'Compare my sleep this week vs last week' or 'How do I sleep after meditation vs without?'
  • Detect anomalies and investigate unusual readings: 'Are there any unusual readings in my data?' or 'Why was my readiness so low yesterday?'

io.github.mitchhankins01/oura-ring-mcp MCP server FAQ

What is the Oura MCP Server?

It's an MCP server that connects your Oura Ring wearable to Claude, giving you smart health insights about sleep, readiness, activity, and biometrics with anomaly detection and trend analysis.

Is it free to use?

The server itself is free (MIT licensed). You need an Oura Ring device and an Oura account; Oura's service may have subscription tiers.

How do I install it in Claude Desktop?

Install via npm (`npm install -g oura-ring-mcp`), then add it to your `claude_desktop_config.json` with either a Personal Access Token from Oura or OAuth credentials. Restart Claude Desktop.

What authentication methods are supported?

Personal Access Token (simpler, from cloud.ouraring.com) or OAuth 2.0 (via developer.ouraring.com). The server can also be deployed remotely on Railway with OAuth support.

What data can I access?

Sleep stages, efficiency, HRV, readiness scores, activity (steps, calories), workouts, heart rate, stress, blood oxygen, and user-created tags. You can also run smart analysis like anomaly detection and correlation analysis.

Can I deploy this remotely?

Yes, the README includes instructions for deploying to Railway with OAuth support, allowing access from Claude.ai and Claude Desktop via a remote URL.

README (reference)

Source of truth, from the repository.

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

<img src="docs/outputs/demo.gif" width="500" alt="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

npm install -g oura-ring-mcp

Or use directly with npx (no install needed):

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:
    export OURA_CLIENT_ID=your_client_id
    export OURA_CLIENT_SECRET=your_client_secret
    npx 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:

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

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

{
  "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:

{
  "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

# Install Railway CLI
npm install -g @railway/cli

# Login, init, and deploy
railway login
railway init
railway 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:

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

Local Testing

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

Contributing

See CLAUDE.md for architecture details and development guidelines.

License

MIT

Related MCP servers

Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.

A habitat for AI to rest in. No API key, no token. Keyless presence — become a remembered resident.

0
MIT
PGpgvector logo

pgvector

Active

Similarity search, hybrid search, and index management for pgvector-backed PostgreSQL tables

0
Python
MIT
View repository →

Generate academic diagrams and statistical plots with independent VLM and image model connections.

72
Python
MIT
View repository →

Scan website legal docs for missing or stale compliance clauses. Rule-based, no LLM.

0
Python
AGPL-3.0
View repository →

Sourced, dated SK/CZ/AT/EU civic, tax and legal facts for AI agents. Read via MCP, not guesswork.

View repository →