Oura Ring (read-only) MCP server
io.github.royreznik/oura-ring-mcp·v1.0.0·1 starsRead-only access to your Oura Ring readiness, sleep, activity, HRV, heart rate and trends.
1 stars58 downloads/wk
Reviews
Write oneNobody has reviewed Oura Ring (read-only) yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Oura Ring (read-only) tools (14)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
get_daily_overviewGet everything Oura recorded for one day in a single call: readiness (score, contributors, temperature deviation), sleep score and the night's main sleep (stages, HRV, lowest heart rate, efficiency), naps, activity (score, steps, calories), stress, resilience, SpO2, cardiovascular age, VO2 max, bedtime guidance, workouts, sessions and tags. Start here for 'today', 'last night' or any single date;
get_heart_rateget_profileGet the user's Oura profile and ring hardware: age, height, weight, biological sex and email; each ring's model, size, color, firmware and setup date; and the latest battery level with its timestamp. Use it for questions about the person or the device, or to put scores in context (e.g. age next to VO2 max or cardiovascular age). Takes no arguments. A part Oura won't share (scope not granted) comes
get_sleep_periodGet one sleep period in full detail by its sleep_id: the same summary as list_sleep_periods plus a hypnogram (deep/light/REM/awake segments at 5-minute resolution, in local time), heart-rate and HRV curves through the night (downsampled to at most 120 points, with avg/min/max), and the readiness contributors it produced. Use it to explain one specific night; get the id from list_sleep_periods or g
get_trendsSummarize the last N days (default 14, up to 90, including today) as a day-by-day table plus avg/min/max for readiness, sleep and activity scores, sleep hours and stages, HRV, lowest heart rate, temperature deviation, steps, active calories and stress, with readiness-zone counts and workouts per day. Use it for week or month comparisons and 'how am I trending' questions; use get_daily_overview for
list_daily_activityList daily activity: activity score (0-100) and contributors, steps, active, total and target calories, walking-equivalent distance in km, minutes of high/medium/low activity, sedentary, resting and non-wear hours, and inactivity alerts. Use it for movement, step and calorie questions over a range; individual workouts are in list_workouts. An Oura activity day runs 4 a.m. to 4 a.m., so today's row
list_daily_healthList per-day health metrics joined by date: stress (day summary, minutes of high stress and high recovery), resilience level and contributors, average SpO2 and breathing disturbance index, cardiovascular age, VO2 max, and bedtime guidance (Oura's optimal bedtime window). Use it for stress, resilience, breathing and cardio-fitness trends; readiness, sleep and activity scores have their own list_* t
list_daily_readinessList daily readiness scores (0-100, with Oura's zone: optimal 85+, good 70-84, pay_attention below 70) and their contributors: HRV balance, resting heart rate, recovery index, body temperature, sleep balance, previous night, previous-day activity, activity balance and sleep regularity, plus temperature deviation from baseline in °C. Use it to see how readiness and its drivers changed over a range;
list_daily_sleepList daily sleep scores (0-100, with Oura's zone) and the contributors behind them: total sleep, efficiency, restfulness, REM, deep sleep, latency and timing. Use it for 'how well did I sleep' over a range; for hours, stages, HRV and heart rate use list_sleep_periods, and for one night's hypnogram use get_sleep_period.
list_rest_mode_periodsList Rest Mode periods, which the user turns on when sick, injured or recovering, with start and end day (an ongoing period has no end) and the symptom tags logged during each. Use it to explain dips in readiness or activity, or to check whether the user was unwell on given days. Covers the last 90 days by default; set start and end (inclusive, YYYY-MM-DD) or days. A period that overlaps the range
list_sessionsList mindfulness sessions recorded in the Oura app (meditation, breathing, relaxation, nap, rest, body status) with mood, start and end time, duration, and heart-rate and HRV stats (avg/min/max). Use it for questions about guided practice and how it affected heart rate or HRV; sleep is in list_sleep_periods and exercise in list_workouts.
list_sleep_periodsList individual sleep periods (nights and, by default, naps) with bedtime, hours in bed and asleep, deep/REM/light/awake hours, latency, efficiency, average and lowest heart rate, average HRV, breathing rate and the readiness score each produced. Use it for sleep duration, stages and overnight HRV or heart rate across days; use list_daily_sleep for scores only, and pass a sleep_id to get_sleep_per
list_tagsList the tags and notes the user logged in the Oura app (e.g. alcohol, caffeine, late meal, sickness, travel, custom tags) with their time, end time if any, and comments, merging classic and enhanced tags into one list sorted by time. Use it to explain unusual readiness or sleep, then cross-check the tagged days with get_daily_overview or get_trends.
list_workoutsList workouts, auto-detected by the ring or added manually, with activity type, label, intensity (easy/moderate/hard), source, start and end time, duration in minutes, calories and distance in km. Use it for training questions such as 'how many runs this month'; narrow it with activity, a case-insensitive substring like 'run' or 'swim'. For whole-day movement use list_daily_activity, and for heart
Public scan report
scanner v0.1.10 · 2026-10-28 · same rubric, same numbers if you re-run it
- Code scan12 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 10 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Oura Ring (read-only) compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 95% of 48,255 servers
- Tools
- 14
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 1
- more than 65% of 28,688 servers
- Downloads a week
- 58
- more than 48% of 12,191 servers with a package
What its tools let an agent do: 14 read
Install Oura Ring (read-only) in Claude Code, Cursor or VS Code
Runs npx -y @royreznik/oura-ring-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add oura-ring-mcp -- npx -y @royreznik/oura-ring-mcp
What the publisher says
From the Oura Ring (read-only) repository's README, as published. We do not edit it. Read it on GitHub
Oura Ring MCP Server (read-only)
Ask Claude, Cursor, VS Code or any MCP client about your Oura Ring readiness, sleep, HRV, activity, stress and heart rate, without giving it any way to change your data.
"How did I sleep last night, and why is my readiness only 64?"
"Compare my HRV and lowest heart rate over the last 30 days."
"Show me last night's sleep stages and heart-rate curve."
"Does my readiness drop after days I tagged alcohol?"
(Run the one-time auth step before or after installing.)
Why this server
- Read-only, enforced. Oura's API has no write endpoints for your data, and this client goes further: it can only send GET, refuses any URL outside /v2/usercollection/, never touches the webhook API, and every tool carries readOnlyHint: true. Tests fail the build otherwise.
- Answers whole questions in one call. getdailyoverview returns a day's readiness, sleep, naps, activity, stress, resilience, SpO2, workouts and tags together. get_trends returns a day table plus averages and readiness zones over up to 90 days.
- Model-friendly output. Compact JSON with hours, minutes, km and local times instead of seconds and meters; hypnograms as stage segments; heart rate aggregated into buckets. Pass raw: true for Oura's original objects.
- Degrades gracefully. If you untick a data type on Oura's consent page, combined tools list it under unavailable instead of failing.
- Your tokens stay on your machine. Your own Oura API application, OAuth with PKCE, a 0600 token file, and safe handling of Oura's single-use refresh tokens. No third-party servers, no telemetry.
- Try it without an account. OURA_SANDBOX=1 serves Oura's public sample data.
Quick start
You need Node.js 20.11+ and an Oura account. (Oura retired personal access tokens in December 2025, so OAuth is the only way in.)
1. Create an Oura API application (2 minutes)
- Open cloud.ouraring.com/oauth/applications and create a new application.
- Set the Redirect URI to http://localhost:8787/callback.
- Copy the Client ID and Client Secret.
Applications work for up to 10 users without Oura's approval, which is plenty for personal use.
2. Connect your Oura account
npx -y @royreznik/oura-ring-mcp authShortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Oura Ring (read-only): common questions
- Is Oura Ring (read-only) MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Oura Ring (read-only) safety report
- How do I install Oura Ring (read-only)?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Oura Ring (read-only) need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Oura Ring (read-only) maintained?
- The last commit was 17 days ago (2026-10-18). The latest release is v1.0.0.
- How does Oura Ring (read-only) compare with other MCP servers?
- safety score 92/100 (higher than 95% of 48,255 servers); tools 14 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.