Oura MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OURA_TOKEN | Yes | Oura personal access token |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_result_pageA | Read more of a result that was too large to return in one piece. Any tool whose answer is too large returns its first page with a
Args:
result_id: From the |
| oura_sleepA | Get detailed sleep data for a date: the daily sleep score with its contributors, and the raw sleep periods (duration, stages, heart rate, HRV) that score is built from. Args: date: YYYY-MM-DD, defaults to today. |
| oura_sleep_timeA | Get Oura's recommended bedtime window and how last night's actual bedtime compared to it. Sparse: only populated on days Oura had enough history to compute a recommendation. Args: date: YYYY-MM-DD, defaults to today. |
| oura_readinessA | Get the readiness score and its contributors for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_resilienceA | Get the long-term resilience level (limited/adequate/solid/strong/ exceptional) and its contributors (sleep recovery, daytime recovery, stress) for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_cardiovascular_ageA | Get estimated vascular age and pulse wave velocity for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_vo2_maxA | Get the estimated VO2 max for a date. Sparse: Oura only computes this periodically, not every day. Args: date: YYYY-MM-DD, defaults to today. |
| oura_activityA | Get daily activity data (score, steps, calories, distance, activity time breakdown) for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_workoutsA | Get workouts (auto-detected and manually logged) with heart rate, calories, duration and intensity for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_heart_rateA | Get continuous heart rate samples for a time window. Useful for correlating with untracked activity or workouts. Args: start_datetime: Start in ISO 8601 (e.g. 2024-01-01T00:00:00+00:00). end_datetime: End in ISO 8601 (e.g. 2024-01-01T23:59:59+00:00). |
| oura_stressB | Get daily stress and recovery time for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_spo2A | Get average nightly blood oxygen (SpO2) percentage for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_sessionsA | Get guided or unguided meditation, breathing and relaxation sessions for a date. Args: date: YYYY-MM-DD, defaults to today. |
| oura_tagsA | Get tags logged for a date: built-in and custom tags (e.g. illness, alcohol, travel, a named event), covering both the legacy tag endpoint and the newer enhanced tags with time spans. Args: date: YYYY-MM-DD, defaults to today. |
| oura_rest_modeA | Get rest mode periods active on a date (Oura's illness/injury/ recovery mode, which relaxes activity goals and readiness contributors). Args: date: YYYY-MM-DD, defaults to today. |
| oura_ringA | Get every ring ever paired to the account (model, color, size, firmware) plus battery level readings for a time window (defaults to the last 24 hours). Args: start_datetime: ISO 8601, defaults to 24 hours ago. end_datetime: ISO 8601, defaults to now. |
| oura_personal_infoA | Get the account profile: age, weight, height, biological sex, email. |
| oura_daily_summaryA | Get a one-call overview for a date: sleep score, raw sleep periods, readiness score, and daily activity. Use the more specific tools (oura_sleep, oura_readiness, oura_activity, oura_resilience, etc.) for fields not covered here. Args: date: YYYY-MM-DD, defaults to today. |
| oura_trendsA | Get daily sleep, readiness, activity and stress scores over a range of days, most recent last. Args: days: Number of days to look back, including today (default 7). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 19 tools
Each tool maps to a distinct Oura data type (sleep, readiness, activity, stress, HR, workouts, etc.), so boundaries are mostly clear. The main overlap is oura_daily_summary, which bundles sleep/readiness/activity that individual tools also expose, but its description explicitly tells agents to use the specific tools for detail.
All domain tools follow a clean oura_<noun> snake_case pattern, which is highly predictable. The lone exception is get_result_page, which lacks the oura_ prefix, but it is a generic pagination helper rather than a domain endpoint.
19 tools is on the heavier side but each corresponds to a genuinely distinct Oura metric or resource, so they each earn their place. The set is neither bloated with redundant tools nor thin for the breadth of the Oura API.
The surface covers the full range of Oura read endpoints (sleep, readiness, resilience, activity, stress, HR, SpO2, VO2 max, cardiovascular age, tags, sessions, ring, profile, trends) plus paging. It is read-oriented, so write operations like logging tags or workouts are absent, but that matches the API's largely read-only nature.