oura-ring-mcp

Servidor MCP para datos del anillo Oura con herramientas de análisis inteligente

Documentación

Servidor MCP de Oura

npm version MCP Registry CI

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

Demo
  • 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)

  1. Ve a cloud.ouraring.com/personal-access-tokens
  2. Crea un nuevo token
  3. Configura OURA_ACCESS_TOKEN en la configuración de Claude Desktop (ver más abajo)

Opción B: Flujo CLI OAuth

  1. Crea una aplicación OAuth en developer.ouraring.com
    • Configura la URI de redirección a http://localhost:3000/callback
  2. 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
    
  3. 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

HerramientaDescripción
get_sleepDatos de sueño con etapas, eficiencia, FC, VFC
get_daily_sleepPuntuaciones diarias de sueño con contribuyentes
get_readinessPuntuaciones de disposición y métricas de recuperación
get_activityPasos, calorías, desglose de intensidad
get_workoutsSesiones de entrenamiento con tipo e intensidad
get_sessionsSesiones de meditación y relajación
get_heart_rateLecturas de FC durante el día
get_stressNiveles de estrés y tiempo de recuperación
get_spo2Oxígeno en sangre y alteraciones respiratorias
get_tagsEtiquetas y notas creadas por el usuario

Análisis inteligente

HerramientaDescripción
detect_anomaliesEncuentra lecturas inusuales usando detección de valores atípicos
analyze_sleep_qualityAnálisis del sueño con tendencias, patrones, deuda
correlate_metricsEncuentra correlaciones entre métricas de salud
compare_periodsCompara esta semana con la anterior
compare_conditionsCompara métricas con/sin una etiqueta
best_sleep_conditionsQué predice tu buen vs mal sueño
analyze_hrv_trendTendencia de VFC con promedios móviles

Recursos

RecursoDescripción
oura://todayResumen de salud de hoy
oura://weekly-summaryÚltimos 7 días con promedios
oura://baselineTus promedios de 30 días y rangos normales
oura://monthly-insightsAnálisis de 30 días con tendencias y anomalías
oura://tag-summaryTus etiquetas y frecuencia de uso

Prompts

PromptDescripción
weekly-reviewRevisión integral de salud semanal
sleep-optimizationIdentifica qué conduce a tu mejor sueño
recovery-check¿Deberías entrenar fuerte o descansar hoy?
compare-weeksComparación de esta semana vs la anterior
tag-analysisCó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

  1. Ve a Aplicaciones OAuth de Oura
  2. Crea una nueva aplicación
  3. Configura la URI de redirección a: https://your-app.railway.app/oauth/callback
  4. 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:

VariableDescripción
OURA_CLIENT_IDDe tu aplicación OAuth de Oura
OURA_CLIENT_SECRETDe tu aplicación OAuth de Oura
NODE_ENVproduction
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:

  1. Ve a Configuración > Conectores MCP > Añadir
  2. Ingresa la URL de tu servidor: https://your-app.railway.app (sin /mcp)
  3. Deja vacíos el ID de cliente OAuth y el Secreto (el registro dinámico lo maneja)
  4. 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