The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Oura Ring MCP listing page.
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.
See example outputs — what Claude returns for sleep, readiness, weekly summaries, and smart analysis
Or use directly with npx (no install needed):
Option A: Personal Access Token (simpler)
OURA_ACCESS_TOKEN in your Claude Desktop config (see below)Option B: OAuth CLI Flow
http://localhost:3000/callback~/.oura-mcp/credentials.jsonAdd to claude_desktop_config.json:
With Personal Access Token:
With OAuth (after running npx oura-ring-mcp auth):
The server reads credentials from ~/.oura-mcp/credentials.json. To enable automatic token refresh, add your OAuth credentials:
Restart Claude Desktop. Requires Node >=18.
Daily check-ins:
Patterns & trends:
Correlations & insights:
Comparisons:
Anomalies:
| Tool | Description |
|---|---|
get_sleep | Sleep data with stages, efficiency, HR, HRV |
get_daily_sleep | Daily sleep scores with contributors |
get_readiness | Readiness scores and recovery metrics |
get_activity | Steps, calories, intensity breakdown |
get_workouts | Workout sessions with type and intensity |
get_sessions | Meditation and relaxation sessions |
get_heart_rate | HR 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 |
| Tool | Description |
|---|---|
detect_anomalies | Find unusual readings using outlier detection |
analyze_sleep_quality | Sleep analysis with trends, patterns, debt |
correlate_metrics | Find correlations between health metrics |
compare_periods | Compare this week vs last week |
compare_conditions | Compare metrics with/without a tag |
best_sleep_conditions | What predicts your good vs poor sleep |
analyze_hrv_trend | HRV trend with rolling averages |
| Resource | Description |
|---|---|
oura://today | Today's health summary |
oura://weekly-summary | Last 7 days with averages |
oura://baseline | Your 30-day averages and normal ranges |
oura://monthly-insights | 30-day analysis with trends and anomalies |
oura://tag-summary | Your tags and usage frequency |
| Prompt | Description |
|---|---|
weekly-review | Comprehensive weekly health review |
sleep-optimization | Identify what leads to your best sleep |
recovery-check | Should you train hard or rest today? |
compare-weeks | This week vs last week comparison |
tag-analysis | How a specific tag affects your health |
Deploy the MCP server for remote access. The server proxies OAuth through Oura, so users authenticate directly with their Oura account — no PAT needed.
https://your-app.railway.app/oauth/callbackIn the Railway dashboard, add:
| Variable | Description |
|---|---|
OURA_CLIENT_ID | From your Oura OAuth app |
OURA_CLIENT_SECRET | From your Oura OAuth app |
NODE_ENV | production |
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.
Use the connector in Claude.ai:
https://your-app.railway.app (without /mcp)For Claude Desktop, use MCP_SECRET + OURA_ACCESS_TOKEN:
See CLAUDE.md for architecture details and development guidelines.
MIT