Oura MCP Server
# Oura MCP Server

[](https://badge.fury.io/py/oura-mcp-server)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/release/python-3120/)
A [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server that provides access to the Oura API. It allows language models to query sleep, readiness, and resilience data from Oura API.
## 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](https://cloud.ouraring.com/v2/docs)
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:
```json
{
"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.
TDQS
Scored across 6 tools
The tools have clear distinctions between readiness, resilience, and sleep data types, but there is significant overlap between the 'get_X_data' and 'get_today_X_data' pairs. An agent might confuse which tool to use for today's data versus a date range, though the descriptions clarify the difference.
All tool names follow a consistent verb_noun pattern with 'get_' prefix and descriptive suffixes (e.g., 'get_readiness_data', 'get_today_sleep_data'). The naming is predictable and uniform across all six tools.
Six tools are reasonable for a health/fitness data server, covering three data types with both date-range and today-specific variants. It's slightly over-scoped as the 'today' tools could be handled by the date-range tools with default parameters, but it's still well within an appropriate range.
The server provides read-only access to readiness, resilience, and sleep data, which aligns with Oura's typical API capabilities. However, there are notable gaps: no tools for writing or updating data (e.g., setting goals or annotations), and no coverage of other Oura metrics like activity or heart rate, limiting the surface for comprehensive health tracking.