oura mcp server
Enables querying sleep, readiness, and resilience data from the Oura API via the Model Context Protocol (MCP), allowing natural language interaction and seamless integration with tools like Claude.
Enables querying sleep, readiness, and resilience data from the Oura API via the Model Context Protocol (MCP), allowing natural language interaction and seamless integration with tools like Claude.
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.
The server exposes the following tools:
get_sleep_data(start_date: str, end_date: str)
: Get sleep data for a specific date rangeget_readiness_data(start_date: str, end_date: str)
: Get readiness data for a specific date rangeget_resilience_data(start_date: str, end_date: str)
: Get resilience data for a specific date rangeDates should be provided in ISO format (YYYY-MM-DD
).
get_today_sleep_data()
: Get sleep data for todayget_today_readiness_data()
: Get readiness data for todayget_today_resilience_data()
: Get resilience data for todayYou'll need an Oura API token to use this server. You can obtain one by:
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"
}
}
}
}
Once connected, you can ask Claude questions like:
The server provides human-readable error messages for common issues:
This project is licensed under the MIT License - see the LICENSE file for details.
[
{
"description": " 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 ",
"inputSchema": {
"properties": {
"end_date": {
"title": "End Date",
"type": "string"
},
"start_date": {
"title": "Start Date",
"type": "string"
}
},
"required": [
"start_date",
"end_date"
],
"title": "get_sleep_dataArguments",
"type": "object"
},
"name": "get_sleep_data"
},
{
"description": " 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 ",
"inputSchema": {
"properties": {
"end_date": {
"title": "End Date",
"type": "string"
},
"start_date": {
"title": "Start Date",
"type": "string"
}
},
"required": [
"start_date",
"end_date"
],
"title": "get_readiness_dataArguments",
"type": "object"
},
"name": "get_readiness_data"
},
{
"description": " 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 ",
"inputSchema": {
"properties": {
"end_date": {
"title": "End Date",
"type": "string"
},
"start_date": {
"title": "Start Date",
"type": "string"
}
},
"required": [
"start_date",
"end_date"
],
"title": "get_resilience_dataArguments",
"type": "object"
},
"name": "get_resilience_data"
},
{
"description": " Get sleep data for today. Returns: Dictionary containing sleep data for today ",
"inputSchema": {
"properties": {},
"title": "get_today_sleep_dataArguments",
"type": "object"
},
"name": "get_today_sleep_data"
},
{
"description": " Get readiness data for today. Returns: Dictionary containing readiness data for today ",
"inputSchema": {
"properties": {},
"title": "get_today_readiness_dataArguments",
"type": "object"
},
"name": "get_today_readiness_data"
},
{
"description": " Get resilience data for today. Returns: Dictionary containing resilience data for today ",
"inputSchema": {
"properties": {},
"title": "get_today_resilience_dataArguments",
"type": "object"
},
"name": "get_today_resilience_data"
}
]