oura-ring-mcp
Servidor MCP para datos del anillo Oura con herramientas de análisis inteligente
Documentación
Servidor MCP de Oura
Un servidor MCP que conecta tu anillo Oura con Claude y otros asistentes de IA. Obtén información legible sobre tu sueño, disposición y actividad, no solo JSON en bruto.
Características
- Formato inteligente - Duraciones en horas/minutos, puntuaciones con contexto ("85 - Óptimo")
- Análisis del sueño - Etapas del sueño, eficiencia, VFC y biométricas
- Seguimiento de disposición - Puntuaciones de recuperación y desglose de contribuyentes
- Datos de actividad - Pasos, calorías y desglose de intensidad
- Métricas de salud - Frecuencia cardíaca, SpO2, estrés, edad cardiovascular
- Análisis inteligente - Detección de anomalías, correlaciones, análisis de tendencias
- Soporte de etiquetas - Compara métricas con/sin condiciones
Ver ejemplos de salidas — lo que Claude devuelve para sueño, disposición, resúmenes semanales y análisis inteligente
Inicio rápido
1. Instalación
npm install -g oura-ring-mcp
O úsalo directamente con npx (sin necesidad de instalación):
npx oura-ring-mcp
2. Autenticación con Oura
Opción A: Token de acceso personal (más simple)
- Ve a cloud.ouraring.com/personal-access-tokens
- Crea un nuevo token
- Configura
OURA_ACCESS_TOKENen la configuración de Claude Desktop (ver más abajo)
Opción B: Flujo CLI OAuth
- Crea una aplicación OAuth en developer.ouraring.com
- Configura la URI de redirección a
http://localhost:3000/callback
- Configura la URI de redirección a
- Ejecuta el flujo de autenticación:
export OURA_CLIENT_ID=your_client_id export OURA_CLIENT_SECRET=your_client_secret npx oura-ring-mcp auth - Las credenciales se guardan en
~/.oura-mcp/credentials.json
3. Configurar Claude Desktop
Añade a claude_desktop_config.json:
Con token de acceso personal:
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"],
"env": {
"OURA_ACCESS_TOKEN": "your_token_here"
}
}
}
}
Con OAuth (después de ejecutar npx oura-ring-mcp auth):
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"]
}
}
}
El servidor lee las credenciales de ~/.oura-mcp/credentials.json. Para habilitar la renovación automática del token, añade tus credenciales OAuth:
{
"mcpServers": {
"oura": {
"command": "npx",
"args": ["oura-ring-mcp"],
"env": {
"OURA_CLIENT_ID": "your_client_id",
"OURA_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Reinicia Claude Desktop. Requiere Node >=18.
¿Qué puedo preguntar?
Registros diarios:
- "¿Cómo dormí anoche?"
- "¿Estoy lo suficientemente recuperado para hacer ejercicio hoy?"
- "¿Qué me dice mi cuerpo en este momento?"
Patrones y tendencias:
- "¿Duermo mejor los fines de semana?"
- "¿A qué hora debería acostarme para un sueño óptimo?"
- "¿Mi VFC está mejorando o empeorando?"
Correlaciones e información:
- "¿El alcohol afecta la calidad de mi sueño?"
- "¿Qué predice mis mejores noches de sueño?"
- "¿Cómo afecta el horario de ejercicio a mi recuperación?"
Comparaciones:
- "Compara mi sueño de esta semana con la anterior"
- "¿Cómo duermo después de meditar en comparación con no hacerlo?"
- "¿Qué cambió cuando empecé a tomar magnesio?"
Anomalías:
- "¿Hay lecturas inusuales en mis datos?"
- "¿Por qué mi disposición fue tan baja ayer?"
- "Encuentra días donde mis métricas estaban fuera de lo normal"
Herramientas disponibles
Recuperación de datos
| Herramienta | Descripción |
|---|---|
get_sleep | Datos de sueño con etapas, eficiencia, FC, VFC |
get_daily_sleep | Puntuaciones diarias de sueño con contribuyentes |
get_readiness | Puntuaciones de disposición y métricas de recuperación |
get_activity | Pasos, calorías, desglose de intensidad |
get_workouts | Sesiones de entrenamiento con tipo e intensidad |
get_sessions | Sesiones de meditación y relajación |
get_heart_rate | Lecturas de FC durante el día |
get_stress | Niveles de estrés y tiempo de recuperación |
get_spo2 | Oxígeno en sangre y alteraciones respiratorias |
get_tags | Etiquetas y notas creadas por el usuario |
Análisis inteligente
| Herramienta | Descripción |
|---|---|
detect_anomalies | Encuentra lecturas inusuales usando detección de valores atípicos |
analyze_sleep_quality | Análisis del sueño con tendencias, patrones, deuda |
correlate_metrics | Encuentra correlaciones entre métricas de salud |
compare_periods | Compara esta semana con la anterior |
compare_conditions | Compara métricas con/sin una etiqueta |
best_sleep_conditions | Qué predice tu buen vs mal sueño |
analyze_hrv_trend | Tendencia de VFC con promedios móviles |
Recursos
| Recurso | Descripción |
|---|---|
oura://today | Resumen de salud de hoy |
oura://weekly-summary | Últimos 7 días con promedios |
oura://baseline | Tus promedios de 30 días y rangos normales |
oura://monthly-insights | Análisis de 30 días con tendencias y anomalías |
oura://tag-summary | Tus etiquetas y frecuencia de uso |
Prompts
| Prompt | Descripción |
|---|---|
weekly-review | Revisión integral de salud semanal |
sleep-optimization | Identifica qué conduce a tu mejor sueño |
recovery-check | ¿Deberías entrenar fuerte o descansar hoy? |
compare-weeks | Comparación de esta semana vs la anterior |
tag-analysis | Cómo afecta una etiqueta específica a tu salud |
Despliegue remoto (Railway)
Despliega el servidor MCP para acceso remoto. El servidor utiliza OAuth a través de Oura, por lo que los usuarios se autentican directamente con su cuenta de Oura — no se necesita PAT.
1. Crear una aplicación OAuth de Oura
- Ve a Aplicaciones OAuth de Oura
- Crea una nueva aplicación
- Configura la URI de redirección a:
https://your-app.railway.app/oauth/callback - Anota el ID de cliente y el Secreto de cliente
2. Despliegue
# Install Railway CLI
npm install -g @railway/cli
# Login, init, and deploy
railway login
railway init
railway up
3. Configurar variables de entorno
En el panel de Railway, añade:
| Variable | Descripción |
|---|---|
OURA_CLIENT_ID | De tu aplicación OAuth de Oura |
OURA_CLIENT_SECRET | De tu aplicación OAuth de Oura |
NODE_ENV | production |
MCP_SECRET | (Opcional) Token estático de portador para Claude Desktop (openssl rand -base64 32) |
OURA_ACCESS_TOKEN | (Opcional) Respaldo PAT si no usas OAuth (MCP_SECRET requerido) |
Railway configura automáticamente PORT y RAILWAY_PUBLIC_DOMAIN.
4. Conectar desde Claude.ai
Usa el conector en Claude.ai:
- Ve a Configuración > Conectores MCP > Añadir
- Ingresa la URL de tu servidor:
https://your-app.railway.app(sin/mcp) - Deja vacíos el ID de cliente OAuth y el Secreto (el registro dinámico lo maneja)
- Serás redirigido a Oura para autorizar el acceso a tus datos
5. Conectar desde Claude Desktop
Para Claude Desktop, usa MCP_SECRET + OURA_ACCESS_TOKEN:
{
"mcpServers": {
"oura-remote": {
"url": "https://your-app.railway.app/mcp",
"headers": {
"Authorization": "Bearer your_mcp_secret_here"
}
}
}
}
Pruebas locales
# 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}'
Contribuciones
Consulta CLAUDE.md para detalles de arquitectura y pautas de desarrollo.
Licencia
MIT