The statistics are what set it apart from a thin API wrapper: correlations come back with a p-value and sample size, comparisons with percentage change, anomalies flagged by IQR and Z-score. Start with the Personal Access Token — one variable, no callback URL — and move to OAuth only when you want tokens refreshed automatically.
An MCP server over the Oura API that formats what it fetches and adds statistics on top: correlations, anomaly detection, period comparisons and trend analysis.
- Sleep from two angles: the detailed record with stages, efficiency, heart rate and HRV, and the daily score with the contributors that produced it
- Readiness and recovery, daily activity with intensity breakdown, workouts, and meditation or breathing sessions with the biometrics recorded during them
- The health metrics around them: heart-rate time series with source labels, stress and recovery time, SpO2 with breathing disturbance, VO2 max, resilience and cardiovascular age
- Your logged tags — caffeine, alcohol, sleep aids, medications, custom notes — plain, or enhanced with timestamps and durations
- Anomaly detection over sleep, HRV, heart rate and activity, flagging outliers by IQR and Z-score
- Sleep-quality analysis with trends, day-of-week patterns, sleep debt, a regularity score and your best and worst nights
- correlate_metrics between any two metrics, returning correlation strength, direction and statistical significance
- Comparisons: two periods side by side with percentage change, or one metric split by condition — workout days against rest days, high-activity days, meditation days, or any tag
- Wear adherence: daily non-wear time, the gaps it leaves in the data, and an adherence percentage
- Oura's own bedtime window, rest-mode periods, ring hardware and firmware, and your profile
- Ready-made resources for the routine questions — oura://today, oura://weekly-summary, oura://baseline, oura://monthly-insights, oura://tag-summary — plus prompts for a weekly review, sleep optimisation and a recovery check
An Oura account and Node >=18. Two ways to authorize: a Personal Access Token from cloud.ouraring.com in OURA_ACCESS_TOKEN, or the OAuth route — set OURA_CLIENT_ID and OURA_CLIENT_SECRET, run npx oura-ring-mcp auth, and the credentials are written to ~/.oura-mcp/credentials.json. It runs over stdio via npx oura-ring-mcp; the repository also documents a hosted HTTP deployment where each user authorizes with Oura directly.
One command plus a key — npm install -g oura-ring-mcp, then supply credentials
