oura-ring-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@oura-ring-mcpHow was my sleep last night?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Oura MCP Server
An MCP server that connects your Oura Ring to Claude and other AI assistants. Get human-readable insights about your sleep, readiness, and activity—not just raw JSON.
Features
Smart formatting - Durations in hours/minutes, scores with context ("85 - Optimal")
Sleep analysis - Sleep stages, efficiency, HRV, and biometrics
Readiness tracking - Recovery scores and contributor breakdown
Activity data - Steps, calories, and intensity breakdown
Health metrics - Heart rate, SpO2, stress, cardiovascular age
Smart analysis - Anomaly detection, correlations, trend analysis
Tags support - Compare metrics with/without conditions
See example outputs — what Claude returns for sleep, readiness, weekly summaries, and smart analysis
Quick Start
1. Install
npm install -g oura-ring-mcpOr use directly with npx (no install needed):
npx oura-ring-mcp2. Authenticate with Oura
Option A: Personal Access Token (simpler)
Create a new token
Set
OURA_ACCESS_TOKENin your Claude Desktop config (see below)
Option B: OAuth CLI Flow
Create an OAuth app at developer.ouraring.com
Set Redirect URI to
http://localhost:3000/callback
Run the auth flow:
export OURA_CLIENT_ID=your_client_id export OURA_CLIENT_SECRET=your_client_secret npx oura-ring-mcp authCredentials are saved to
~/.oura-mcp/credentials.json
3. Configure Claude Desktop
Add to claude_desktop_config.json:
With Personal Access Token:
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"],
"env": {
"OURA_ACCESS_TOKEN": "your_token_here"
}
}
}
}With OAuth (after running npx oura-ring-mcp auth):
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"]
}
}
}The server reads credentials from ~/.oura-mcp/credentials.json. To enable automatic token refresh, add your OAuth credentials:
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"],
"env": {
"OURA_CLIENT_ID": "your_client_id",
"OURA_CLIENT_SECRET": "your_client_secret"
}
}
}
}Restart Claude Desktop. Requires Node >=18.
What Can I Ask?
Daily check-ins:
"How did I sleep last night?"
"Am I recovered enough to work out today?"
"What's my body telling me right now?"
Patterns & trends:
"Do I sleep better on weekends?"
"What time should I go to bed for optimal sleep?"
"Is my HRV improving or declining?"
Correlations & insights:
"Does alcohol affect my sleep quality?"
"What predicts my best sleep nights?"
"How does exercise timing affect my recovery?"
Comparisons:
"Compare my sleep this week vs last week"
"How do I sleep after meditation vs without?"
"What changed when I started taking magnesium?"
Anomalies:
"Are there any unusual readings in my data?"
"Why was my readiness so low yesterday?"
"Find days where my metrics were off"
Available Tools
Data Retrieval
Tool | Description |
| Sleep data with stages, efficiency, HR, HRV |
| Daily sleep scores with contributors |
| Readiness scores and recovery metrics |
| Steps, calories, intensity breakdown |
| Workout sessions with type and intensity |
| Meditation and relaxation sessions |
| HR readings throughout the day |
| Stress levels and recovery time |
| Blood oxygen and breathing disturbance |
| User-created tags and notes |
Smart Analysis
Tool | Description |
| Find unusual readings using outlier detection |
| Sleep analysis with trends, patterns, debt |
| Find correlations between health metrics |
| Compare this week vs last week |
| Compare metrics with/without a tag |
| What predicts your good vs poor sleep |
| HRV trend with rolling averages |
Resources
Resource | Description |
| Today's health summary |
| Last 7 days with averages |
| Your 30-day averages and normal ranges |
| 30-day analysis with trends and anomalies |
| Your tags and usage frequency |
Prompts
Prompt | Description |
| Comprehensive weekly health review |
| Identify what leads to your best sleep |
| Should you train hard or rest today? |
| This week vs last week comparison |
| How a specific tag affects your health |
Remote Deployment (Railway)
Deploy the MCP server for remote access. The server proxies OAuth through Oura, so users authenticate directly with their Oura account — no PAT needed.
1. Create an Oura OAuth App
Go to Oura OAuth Applications
Create a new application
Set the Redirect URI to:
https://your-app.railway.app/oauth/callbackNote the Client ID and Client Secret
2. Deploy
# Install Railway CLI
npm install -g @railway/cli
# Login, init, and deploy
railway login
railway init
railway up3. Set Environment Variables
In the Railway dashboard, add:
Variable | Description |
| From your Oura OAuth app |
| From your Oura OAuth app |
|
|
| (Optional) Static bearer token for Claude Desktop ( |
| (Optional) PAT fallback if not using OAuth ( |
Railway automatically sets PORT and RAILWAY_PUBLIC_DOMAIN.
4. Connect from Claude.ai
Use the connector in Claude.ai:
Go to Settings > MCP Connectors > Add
Enter your server URL:
https://your-app.railway.app(without/mcp)Leave OAuth Client ID and Secret empty (dynamic registration handles it)
You'll be redirected to Oura to authorize access to your data
5. Connect from Claude Desktop
For Claude Desktop, use MCP_SECRET + OURA_ACCESS_TOKEN:
{
"mcpServers": {
"oura-remote": {
"url": "https://your-app.railway.app/mcp",
"headers": {
"Authorization": "Bearer your_mcp_secret_here"
}
}
}
}Local Testing
# With Oura OAuth (full flow)
OURA_CLIENT_ID=your_id OURA_CLIENT_SECRET=your_secret pnpm start:http
# With static secret only (requires OURA_ACCESS_TOKEN)
OURA_ACCESS_TOKEN=your_pat MCP_SECRET=test-secret pnpm start:http
# Verify health endpoint
curl http://localhost:3000/health
# Check OAuth metadata (only available when OURA_CLIENT_ID is set)
curl http://localhost:3000/.well-known/oauth-authorization-server
# Test authenticated request (with static secret)
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer test-secret" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{}},"id":1}'Contributing
See CLAUDE.md for architecture details and development guidelines.
License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/mitchhankins01/oura-ring-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server