Skip to main content
Glama
robcerda

Oura MCP Server

by robcerda

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
OURA_MCP_HOSTNoListen address for HTTP transport.127.0.0.1
OURA_MCP_PORTNoListen port for HTTP transport.8000
OURA_MCP_SANDBOXNoSet to '1' to serve Oura's sample data with no sign in.
OURA_MCP_TRANSPORTNoTransport mode: stdio or http.stdio
OURA_MCP_SESSION_DIRNoDirectory for the file session fallback.~/.oura-mcp-server
OURA_MCP_ALLOWED_HOSTSNoComma-separated additional allowed Host headers.
OURA_MCP_ALLOWED_ORIGINSNoComma-separated additional allowed browser Origins.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_daily_activityA

Get daily activity: activity score (0-100) and contributors, steps, active and total calories (kcal), equivalent walking distance (meters), time in high, medium and low activity and sedentary (seconds), MET minutes, and inactivity alerts.

get_workoutsB

Get workouts, auto detected or entered by the user: activity type, start and end time, calories, distance (meters), intensity, and source.

get_sessionsA

Get guided and unguided sessions from the Oura app (breathing, meditation, rest, etc.): type, start and end time, and mood. Set include_time_series for the heart rate, HRV and motion recorded during each session.

setup_authenticationB

Get instructions for connecting this server to an Oura account.

check_auth_statusA

Report whether an Oura session is stored, which scopes it has, and when it expires.

Never returns token values. The access token refreshes automatically, so an expired access token with a stored refresh token is still a working session.

get_documentA

Get one Oura document by id, with every field including embedded time series. Use it to drill into a single sleep period, workout or session from a list result.

get_heart_rateB

Get heart rate samples (bpm) at roughly 5 minute intervals, each tagged with its source: awake, rest, sleep, workout, session or live. Defaults to the last 24 hours.

get_daily_stressA

Get daytime stress: seconds spent in high stress and in high recovery each day, and a day summary of restored, normal or stressful.

get_daily_spo2B

Get average blood oxygen saturation (SpO2 %) during sleep and the breathing disturbance index. Requires a Gen 3 or later ring.

get_daily_cardiovascular_ageB

Get cardiovascular age: Oura's estimate of vascular age in years, from pulse wave velocity, to compare against actual age.

get_vo2_maxA

Get VO2 max (cardio capacity) estimates in ml/kg/min. Updated infrequently.

get_personal_infoA

Get the signed in user's profile: age, weight, height, biological sex and email. Fields the user did not grant a scope for come back null.

get_ring_configurationA

Get the user's ring(s): hardware generation, color, design, size, firmware and setup date.

get_ring_battery_levelA

Get ring battery level (%) and charging state. Returns the latest reading by default; set latest to false for readings over a window.

get_enhanced_tagsA

Get tags the user logged in the Oura app (caffeine, alcohol, illness, travel, custom tags, etc.) with start and end times and comments. Useful for explaining changes in sleep or readiness.

get_rest_mode_periodsC

Get rest mode periods (when the user turned on rest mode, typically for illness or recovery), with start and end times and logged episodes.

get_daily_readinessA

Get daily readiness scores (0-100) with contributors (activity balance, body temperature, HRV balance, previous day activity, previous night, recovery index, resting heart rate, sleep balance, sleep regularity) and body temperature deviation from baseline in degrees Celsius.

get_daily_resilienceA

Get daily resilience: an estimate of the ability to withstand and recover from physiological stress, as a level (limited, adequate, solid, strong, exceptional) with sleep recovery, daytime recovery and stress contributors.

get_daily_sleepA

Get daily sleep scores (0-100) with their contributors: deep sleep, efficiency, latency, REM sleep, restfulness, timing and total sleep.

For durations, stages, heart rate and HRV use get_sleep_periods.

get_sleep_periodsA

Get detailed sleep periods: bedtime start and end, total, deep, REM and light sleep durations (seconds), awake time, latency, efficiency, average and lowest heart rate, average HRV, breathing rate, and the readiness computed from that sleep.

A day can have several periods. type 'long_sleep' is the main sleep; naps and short rests appear as 'sleep', 'late_nap' or 'rest'.

get_sleep_timeA

Get Oura's recommended bedtime window for each day, calculated from recent sleep.

get_daily_summaryA

Get one record per day combining the headline numbers: sleep, readiness and activity scores, steps and calories, stress and recovery time, SpO2, resilience level, temperature deviation, and the main sleep period (bedtime, durations, efficiency, HRV, heart rate). Durations are in seconds.

The best starting point for questions like "how have I been sleeping" or "how was my week". Collections the session has no scope for are listed under 'unavailable' and the rest are still returned.

Prompts

Interactive templates invoked by user choice

NameDescription
weekly_health_reviewReview recent sleep, readiness, activity and recovery trends.
sleep_deep_diveAnalyze a single night's sleep against recent nights.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 22 tools

Disambiguation5/5

Every tool targets a distinct data resource or lifecycle step. Overlaps like get_daily_sleep, get_sleep_periods, get_sleep_time, and get_daily_summary are clearly differentiated by their descriptions (scores vs. detailed periods vs. recommended bedtime vs. combined summary). No two tools appear to serve the same purpose.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using lowercase with underscores, predominantly 'get_' for data retrieval, with setup_authentication and check_auth_status as logical exceptions for auth flows. The pattern is predictable and uniform.

Tool Count4/5

22 tools is on the higher end but appropriate for a comprehensive health/activity API covering many distinct data types (sleep, activity, readiness, stress, HR, etc.). Each tool maps to a unique resource, and the count feels justified rather than bloated.

Completeness5/5

The server covers a wide range of Oura data: daily scores and contributors, detailed periods, workouts, sessions, tags, rest mode, personal info, ring hardware, and auth status. It also includes a convenient summary tool and a generic document retriever. For a read-focused API, there are no obvious gaps for typical agent use cases.

Maintenance

ActivityMaintained
ResponsivenessNo issues