Oura MCP server
Configuration
View docs{
"mcpServers": {
"ai-niki-oura-mcp": {
"url": "https://your-app.fastmcp.app/mcp",
"headers": {
"OURA_ACCESS_TOKEN": "YOUR_TOKEN_HERE"
}
}
}
}You can connect your Oura Ring data to Claude, Cursor, or any MCP-compatible app to ask questions about sleep, activity, readiness, heart rate, VO2 max, and more using natural language. This MCP server makes your Oura data available to your AI assistants and helps you analyze trends across days and weeks.
Set up your MCP client to access your Oura data. You can use either a remote HTTP endpoint or a local stdio server, or both if you want multiple connection methods. Once connected, ask natural language questions like “What was my sleep score last night?” or “Show me my VO2 max progression.” The server will return JSON data you can use in your assistant to generate insights, trends, and comparisons.
Prerequisites: you will need the MCP tooling installed to run local stdio servers. You will also need a personal access token from Oura to access your data.
# Step 1: Get your Oura token
# - Create a new Personal Access Token on https://cloud.ouraring.com/personal-access-tokens
# - Copy the token (you will not see it again)
# Step 2: Configure your MCP client (Claude Desktop example)
# Create or edit your MCP config file to include the Oura server
# Example config (replace YOUR_TOKEN_HERE with your actual token)
{"mcpServers": {
"oura": {
"command": "uvx",
"args": ["oura-mcp"],
"env": {
"OURA_ACCESS_TOKEN": "YOUR_TOKEN_HERE"
}
}
}}
```
Preconfigured setup instructions for Claude Desktop use the same structure inside your client’s MCP configuration. If you are using a different MCP client (Cursor or others), apply the same `uvx oura-mcp` command with the `OURA_ACCESS_TOKEN` environment variable in their MCP server configuration.If you deploy to FastMCP Cloud with OAuth2, follow these steps to configure the OAuth client and environment for secure access to Oura data.
# Step 1: In the Oura Developer Portal, create an OAuth application and set the redirect URI:
# https://cloud.ouraring.com/oauth/applications
# Add redirect URI: https://your-app.fastmcp.app/mcp/auth/callback
# Step 2: Generate a JWT signing key
python -c "import secrets; print(secrets.token_urlsafe(32))"
# Copy the output as JWT_SIGNING_KEY
# Step 3: Set environment variables in FastMCP Cloud dashboard
OURA_CLIENT_ID=your_client_id
OURA_CLIENT_SECRET=your_client_secret
DEPLOYED_URL=https://your-app.fastmcp.app
JWT_SIGNING_KEY=<paste_generated_key_here>
```
Notes: DEPLOYED_URL is the base domain; keep JWT_SIGNING_KEY stable to avoid invalidating user tokens.No access token available or connection error - Double-check your token is correct in the config file - Make sure there are no extra spaces or quotes - Restart your application after editing the config - Create a new token if needed: https://cloud.ouraring.com/personal-access-tokens No data showing up - Ensure your Oura Ring has synced recently in the mobile app - Sleep data may require manual sync via the Oura app - You can only access dates you wore the ring MCP client doesn’t see the Oura server - Check your MCP client’s servers/tools list for the name you added (oura) - Verify your config is valid JSON - Restart the client after edits Still having issues? - Check the Oura API status: https://api.ouraring.com"],
Local development involves cloning the MCP server, configuring tokens, and running the server for testing.
git clone https://github.com/pokidyshev/oura-mcp.git
cd oura-mcp
# Create .env with your token
cp .env.example .env
# Edit .env and add: OURA_ACCESS_TOKEN=your_token
# Install and test
uv sync
uv run mcp dev src/oura_mcp/server.pyAll API calls use HTTPS. Tokens are stored in environment variables for security, and access is governed by the token you generated in Oura’s cloud portal.
The server exposes daily summaries, detailed metrics, and personal data related to your Oura Ring, including sleep, activity, readiness, HRV, VO2 max, and related health metrics.