Skip to main content
Glama
YuzeHao2023

Oura MCP Server

by YuzeHao2023

Oura MCP Server

简体中文 | English | 한국어

Python Package PyPI version License: MIT Python 3.12

A Model Context Protocol (MCP) server that provides access to the Oura API. It allows language models to query sleep, readiness, and resilience data from Oura API.

All Documents

Call for translators! We're looking for translators to help translate this spec for everyone!

Read our documentation in the following languages:

Language

Link

English

English

中文

中文

한국어

한국어

Related MCP server: Oura Ring MCP Server

Available Tools

The server exposes the following tools:

Date Range Queries

  • get_sleep_data(start_date: str, end_date: str): Get sleep data for a specific date range

  • get_readiness_data(start_date: str, end_date: str): Get readiness data for a specific date range

  • get_resilience_data(start_date: str, end_date: str): Get resilience data for a specific date range

Dates should be provided in ISO format (YYYY-MM-DD).

Today's Data Queries

  • get_today_sleep_data(): Get sleep data for today

  • get_today_readiness_data(): Get readiness data for today

  • get_today_resilience_data(): Get resilience data for today

Usage

You'll need an Oura API token to use this server. You can obtain one by:

  1. Going to the Oura Developer Portal

  2. Creating a Personal Access Token

Claude for Desktop

Update your claude_desktop_config.json (located in ~/Library/Application\ Support/Claude/claude_desktop_config.json on macOS and %APPDATA%/Claude/claude_desktop_config.json on Windows) to include the following

{
  "mcpServers": {
    "oura": {
      "command": "uvx",
      "args": ["oura-mcp-server"],
      "env": {
        "OURA_API_TOKEN": "YOUR_OURA_API_TOKEN"
      }
    }
  }
}

Example Queries

Once connected, you can ask Claude questions like:

  • "What's my sleep score for today?"

  • "Show me my readiness data for the past week"

  • "How was my sleep from January 1st to January 7th?"

  • "What's my resilience score today?"

Error Handling

The server provides human-readable error messages for common issues:

  • Invalid date formats

  • API authentication errors

  • Network connectivity problems

License

This project is licensed under the MIT License - see the LICENSE file for details.


Maintainer

Core Contributors

Available Tools

6 tools
get_readiness_dataC
Get readiness data for a specific date range.

Args:
    start_date: Start date in ISO format (YYYY-MM-DD)
    end_date: End date in ISO format (YYYY-MM-DD)

Returns:
    Dictionary containing readiness data
ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool retrieves data but does not cover aspects like permissions, rate limits, data format, or potential side effects, leaving significant gaps for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with a clear purpose statement followed by structured sections for args and returns. It avoids unnecessary details, though the 'Returns' section is somewhat generic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 parameters, no annotations, no output schema), the description is adequate but incomplete. It covers parameters well but lacks details on output structure, error handling, and sibling tool differentiation, making it minimally viable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context beyond the input schema, specifying that parameters are in ISO format (YYYY-MM-DD) and clarifying their roles as start and end dates. With 0% schema description coverage, this compensates well for the lack of schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Get readiness data for a specific date range,' which clearly indicates the verb ('Get') and resource ('readiness data'). However, it does not differentiate from sibling tools like 'get_today_readiness_data' or explain what 'readiness data' entails, making it somewhat vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'get_today_readiness_data' or other sibling tools. The description implies usage for a date range but lacks explicit context, exclusions, or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_resilience_dataB
Get resilience data for a specific date range.

Args:
    start_date: Start date in ISO format (YYYY-MM-DD)
    end_date: End date in ISO format (YYYY-MM-DD)

Returns:
    Dictionary containing resilience data
ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states it 'Get resilience data', which suggests a read operation, but doesn't disclose behavioral traits such as authentication requirements, rate limits, error conditions, or what 'resilience data' entails (e.g., format, size, or whether it's aggregated). The description is minimal and lacks crucial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with the core purpose stated first, followed by clear sections for Args and Returns. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters, no annotations, and no output schema, the description is incomplete. It covers the basic purpose and parameter formats but lacks details on behavioral aspects (e.g., permissions, errors) and output specifics (e.g., what 'Dictionary containing resilience data' includes). For a data retrieval tool with no structured support, more context is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by specifying that start_date and end_date are in ISO format (YYYY-MM-DD), which clarifies the expected input beyond the schema's basic string type. However, it doesn't explain constraints like date ordering or inclusivity, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'resilience data' with the scope 'for a specific date range'. It distinguishes from 'get_today_resilience_data' by specifying date range filtering, but doesn't explicitly differentiate from other siblings like 'get_readiness_data' or 'get_sleep_data' beyond the resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when resilience data for a date range is needed, with the date parameters indicating the required context. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_today_resilience_data' (for today's data) or other sibling tools for different data types, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sleep_dataB
Get sleep data for a specific date range.

Args:
    start_date: Start date in ISO format (YYYY-MM-DD)
    end_date: End date in ISO format (YYYY-MM-DD)

Returns:
    Dictionary containing sleep data
ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves data (implied read-only) and mentions the return format ('Dictionary containing sleep data'), but lacks critical details like authentication requirements, rate limits, error conditions, or what specific sleep metrics are included. This is inadequate for a data retrieval tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by labeled sections for Args and Returns. Every sentence adds value: the first states the core function, and the subsequent lines provide essential parameter and return details without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, no output schema), the description is partially complete. It covers the basic purpose and parameters well, but lacks behavioral context (e.g., auth, errors) and detailed return value explanation. Without annotations or output schema, more behavioral and output details would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explicitly documents both parameters (start_date, end_date) with format details ('ISO format YYYY-MM-DD'), which adds significant value since schema description coverage is 0%. It clarifies the date range requirement, though it doesn't explain constraints like valid date ranges or timezone handling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('sleep data'), plus scope ('for a specific date range'). It distinguishes from some siblings (e.g., get_today_sleep_data) by mentioning date ranges, but doesn't explicitly differentiate from all siblings like get_readiness_data or get_resilience_data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like get_today_sleep_data for single-day data or other data types (readiness/resilience), nor does it specify prerequisites or constraints beyond the date range requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_today_readiness_dataB
Get readiness data for today.

Returns:
    Dictionary containing readiness data for today
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s] readiness data for today' and describes the return format ('Dictionary containing readiness data for today'), but lacks critical details like whether this requires authentication, has rate limits, or what specific data fields are included. For a tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a clear purpose statement followed by a brief return format. Both sentences are necessary and front-loaded. However, it could be slightly more efficient by integrating the return format into the main sentence (e.g., 'Get readiness data for today, returning a dictionary.').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'readiness data' entails (e.g., metrics, timestamps), how the data is structured in the dictionary, or any behavioral constraints. For a data retrieval tool with no structured support, more context is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to add parameter semantics, so it meets the baseline for tools with no parameters. It appropriately focuses on the tool's function rather than inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get readiness data for today.' It specifies the verb ('Get') and resource ('readiness data') with temporal scope ('for today'). However, it doesn't explicitly differentiate from sibling tools like 'get_readiness_data' (which might have different temporal parameters), so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_readiness_data' (which might retrieve data for other time periods) or 'get_today_resilience_data' (which fetches a different type of data for today). There's no context on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_today_resilience_dataC
Get resilience data for today.

Returns:
    Dictionary containing resilience data for today
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get resilience data for today' and mentions the return type ('Dictionary containing resilience data for today'), but doesn't describe authentication needs, rate limits, error conditions, or whether this is a read-only operation. For a tool with zero annotation coverage, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two brief sentences that state the purpose and return value. It's front-loaded with the core functionality, though the 'Returns:' section could be integrated more smoothly. There's minimal waste, but it could be slightly more polished.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description should provide more complete context. It mentions the return type but doesn't explain the structure of the resilience data, what 'today' means (e.g., timezone, date range), or how this differs from sibling tools. For a data retrieval tool with no structured output documentation, this leaves significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of parameters. The description doesn't add parameter information (which isn't needed here), maintaining the baseline of 4 for zero-parameter tools as per the guidelines.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Get resilience data for today' which provides a clear verb ('Get') and resource ('resilience data for today'), but it doesn't distinguish this tool from its sibling 'get_resilience_data' (which presumably gets resilience data for other time periods). The purpose is understandable but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_resilience_data' or 'get_today_readiness_data'. There's no mention of prerequisites, exclusions, or comparative context with sibling tools, leaving the agent to infer usage patterns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_today_sleep_dataC
Get sleep data for today.

Returns:
    Dictionary containing sleep data for today
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns a dictionary but doesn't describe what that contains (e.g., sleep stages, duration, quality), whether it's a read-only operation, potential errors, or data freshness. This is inadequate for a tool with zero annotation coverage, as it lacks essential behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief (two sentences) but not optimally structured. The first sentence states the purpose clearly, but the second ('Returns: Dictionary containing sleep data for today') is redundant with the first and could be integrated more efficiently. It's concise but could be improved with better flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple tool with 0 parameters, the description is incomplete. It doesn't explain the return value's structure (e.g., keys in the dictionary), error conditions, or how it differs from siblings. For a data-fetching tool, more context on the output is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description correctly omits parameter details, avoiding redundancy. A baseline of 4 is appropriate since the schema fully handles parameters, and the description doesn't add unnecessary information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get sleep data for today.' It specifies the verb ('Get'), resource ('sleep data'), and temporal scope ('today'), making it unambiguous. However, it doesn't explicitly differentiate from its sibling 'get_sleep_data' (which likely lacks the 'today' filter), missing full sibling distinction for a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_sleep_data' (for broader date ranges) or 'get_today_readiness_data' (for other today-specific metrics), leaving the agent to infer usage context without explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation4/5

The tools are clearly organized around three data types (readiness, resilience, sleep) with two temporal variants (date range vs. today), making them mostly distinct. However, the 'get_today_*' tools could be seen as overlapping with the date-range versions if an agent specifies today's date, though their dedicated purpose reduces confusion.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'get_' prefix, and the naming is systematic across data types and temporal variants (e.g., get_readiness_data, get_today_readiness_data). There are no deviations in style or convention.

Tool Count5/5

With 6 tools, this is well-scoped for an Oura data server, covering three key metrics with both historical and current-day access. Each tool serves a clear purpose without redundancy, fitting typical expectations for such a domain.

Completeness4/5

The server covers the core read operations for readiness, resilience, and sleep data with both date-range and today-specific queries, which is appropriate for a fitness/health tracking domain. A minor gap is the lack of write or update tools (e.g., to set goals or log activities), but as a read-only data retrieval surface, it is largely complete.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to access and analyze Oura Ring health data including sleep, readiness, activity, and stress metrics. Supports customizable queries, correlation analysis, and visualization capabilities for comprehensive health insights.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides LLMs with access to Oura Ring health data including sleep metrics, activity tracking, heart rate, readiness scores, and other wellness insights through the Oura API v2.
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables AI assistants to access and analyze Oura Ring health data, including sleep, readiness, and activity metrics, with support for visualization and correlation analysis.
    1
    11
    14
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YuzeHao2023/MCP-oura'

If you have feedback or need assistance with the MCP directory API, please join our Discord server