oura-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OURA_CLIENT_ID | No | OAuth2 application client ID (required for token refresh and webhook management) | |
| OURA_USE_SANDBOX | No | Set to 'true' for sandbox/mock data | false |
| OURA_ACCESS_TOKEN | Yes | OAuth2 access token for user data | |
| OURA_CLIENT_SECRET | No | OAuth2 application client secret (required for token refresh and webhook management) | |
| OURA_REFRESH_TOKEN | No | Refresh token for automatic token renewal |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_personal_infoA | Get personal information for the authenticated Oura user. Returns age, weight, height, biological sex, and email (if available). |
| get_sleepC | Get detailed sleep data including sleep stages, heart rate, HRV, and breathing rate. Returns comprehensive sleep session data with durations for deep, light, REM sleep, and more. |
| get_sleep_by_idB | Get a single sleep document by its unique ID. |
| get_daily_sleepC | Get daily sleep scores and contributor breakdown. Returns sleep score with contributors like deep sleep, efficiency, latency, REM sleep, restfulness, timing, and total sleep. |
| get_daily_sleep_by_idB | Get a single daily sleep document by its unique ID. |
| get_sleep_timeC | Get optimal bedtime recommendations and sleep timing data. Returns optimal bedtime windows and sleep timing recommendations. |
| get_sleep_time_by_idB | Get a single sleep time document by its unique ID. |
| get_daily_activityC | Get daily activity data including steps, calories, activity levels, and MET data. Returns activity score with contributors like meeting daily targets, movement frequency, recovery time, and training metrics. |
| get_daily_activity_by_idB | Get a single daily activity document by its unique ID. |
| get_heart_rateB | Get heart rate time series data. Returns heart rate readings (BPM) with timestamps and source information. Uses datetime range parameters instead of date range. |
| get_daily_readinessC | Get daily readiness scores with contributor breakdown. Returns readiness score with contributors like activity balance, body temperature, HRV balance, recovery index, and sleep metrics. |
| get_daily_readiness_by_idB | Get a single daily readiness document by its unique ID. |
| get_daily_spo2C | Get daily blood oxygen saturation (SpO2) data. Returns average SpO2 percentage readings. |
| get_daily_spo2_by_idB | Get a single daily SpO2 document by its unique ID. |
| get_daily_stressC | Get daily stress data. Returns stress levels including high stress time, recovery time, and day summary. |
| get_daily_stress_by_idB | Get a single daily stress document by its unique ID. |
| get_daily_resilienceB | Get daily resilience data. Returns resilience level and contributors like sleep recovery, daytime recovery, and stress. |
| get_daily_resilience_by_idB | Get a single daily resilience document by its unique ID. |
| get_daily_cardiovascular_ageC | Get daily cardiovascular age data. Returns vascular age estimates based on physiological measurements. |
| get_daily_cardiovascular_age_by_idC | Get a single daily cardiovascular age document by its unique ID. |
| get_vo2_maxC | Get VO2 max estimates. Returns VO2 max values which indicate cardiovascular fitness level. |
| get_vo2_max_by_idC | Get a single VO2 max document by its unique ID. |
| get_workoutsC | Get workout data including activity type, duration, calories burned, and distance. Returns details about recorded workouts with start/end times and intensity levels. |
| get_workout_by_idC | Get a single workout document by its unique ID. |
| get_sessionsC | Get session data for activities like meditation, breathing exercises, and relaxation. Returns session details including heart rate, HRV, and mood data. |
| get_session_by_idB | Get a single session document by its unique ID. |
| get_tagsC | Get user-created tags for tracking various activities, behaviors, or conditions. Returns tag text, timestamp, and associated tag categories. |
| get_tag_by_idB | Get a single tag document by its unique ID. |
| get_enhanced_tagsC | Get enhanced tags with additional metadata. Returns tags with type codes, time ranges, and comments. |
| get_enhanced_tag_by_idC | Get a single enhanced tag document by its unique ID. |
| get_ring_configurationC | Get Oura Ring configuration details including color, design, size, firmware version, and hardware type. Returns information about the user's ring setup. |
| get_ring_configuration_by_idA | Get a single ring configuration document by its unique ID. |
| get_rest_mode_periodsC | Get rest mode period data. Returns information about when rest mode was activated, including episodes and tags. |
| get_rest_mode_period_by_idA | Get a single rest mode period document by its unique ID. |
| list_webhook_subscriptionsA | List all webhook subscriptions for your application. Requires OURA_CLIENT_ID and OURA_CLIENT_SECRET environment variables. |
| get_webhook_subscriptionA | Get details of a specific webhook subscription by ID. Requires OURA_CLIENT_ID and OURA_CLIENT_SECRET environment variables. |
| create_webhook_subscriptionB | Create a new webhook subscription to receive notifications when data changes. Requires OURA_CLIENT_ID and OURA_CLIENT_SECRET environment variables. Valid data types: tag, enhanced_tag, workout, session, daily_activity, daily_sleep, daily_spo2, daily_readiness, sleep, sleep_time, rest_mode_period, ring_configuration, daily_stress, daily_resilience, daily_cardiovascular_age, vO2_max, heartrate. |
| update_webhook_subscriptionC | Update an existing webhook subscription. Requires OURA_CLIENT_ID and OURA_CLIENT_SECRET environment variables. |
| delete_webhook_subscriptionA | Delete a webhook subscription. Requires OURA_CLIENT_ID and OURA_CLIENT_SECRET environment variables. |
| renew_webhook_subscriptionA | Renew a webhook subscription to extend its expiration time. Webhook subscriptions expire after some time and need to be renewed. Requires OURA_CLIENT_ID and OURA_CLIENT_SECRET environment variables. |
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 40 tools
Tools are mostly distinct: each data type typically has a list and a by_id variant, and descriptions clarify the difference. However, some pairs like get_sleep vs get_daily_sleep or get_tags vs get_enhanced_tags require careful reading, which could cause occasional misselection.
Consistent snake_case with a get_ / get_..._by_id pattern for most data tools, and list_/get_/create_/update_/delete_ for webhooks. Minor inconsistency: list operations sometimes use singular nouns (get_sleep) and sometimes plural (get_workouts), and get_rest_mode_periods pairs with a singular by_id tool.
40 tools is heavy for the apparent scope; many are thin list/by_id pairs that could be merged or parameterized. While each maps to an API endpoint, the count feels excessive and increases cognitive load.
Covers the full Oura v2 API surface: personal info, all health metrics with list and by_id, workouts, sessions, tags, enhanced tags, ring config, and full webhook CRUD plus renew. No obvious missing endpoints for the domain.