oura-ring-mcp

Servidor MCP para dados do Oura Ring com ferramentas de análise inteligentes

Documentação

Servidor MCP Oura

npm version MCP Registry CI

Um servidor MCP que conecta seu Oura Ring ao Claude e outros assistentes de IA. Obtenha insights legíveis sobre seu sono, prontidão e atividade — não apenas JSON bruto.

Recursos

Demo
  • Formatação inteligente - Durações em horas/minutos, pontuações com contexto ("85 - Ótimo")
  • Análise de sono - Estágios do sono, eficiência, VFC e biométricas
  • Acompanhamento de prontidão - Pontuações de recuperação e detalhamento de contribuidores
  • Dados de atividade - Passos, calorias e detalhamento de intensidade
  • Métricas de saúde - Frequência cardíaca, SpO2, estresse, idade cardiovascular
  • Análise inteligente - Detecção de anomalias, correlações, análise de tendências
  • Suporte a tags - Compare métricas com/sem condições

Veja exemplos de saídas — o que o Claude retorna para sono, prontidão, resumos semanais e análise inteligente

Início Rápido

1. Instalação

npm install -g oura-ring-mcp

Ou use diretamente com npx (sem necessidade de instalação):

npx oura-ring-mcp

2. Autentique-se com Oura

Opção A: Token de Acesso Pessoal (mais simples)

  1. Acesse cloud.ouraring.com/personal-access-tokens
  2. Crie um novo token
  3. Defina OURA_ACCESS_TOKEN na configuração do seu Claude Desktop (veja abaixo)

Opção B: Fluxo CLI OAuth

  1. Crie um aplicativo OAuth em developer.ouraring.com
    • Defina a URI de Redirecionamento para http://localhost:3000/callback
  2. Execute o fluxo de autenticação:
    export OURA_CLIENT_ID=your_client_id
    export OURA_CLIENT_SECRET=your_client_secret
    npx oura-ring-mcp auth
    
  3. As credenciais são salvas em ~/.oura-mcp/credentials.json

3. Configure o Claude Desktop

Adicione a claude_desktop_config.json:

Com Token de Acesso Pessoal:

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["oura-ring-mcp"],
      "env": {
        "OURA_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

Com OAuth (após executar npx oura-ring-mcp auth):

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["oura-ring-mcp"]
    }
  }
}

O servidor lê as credenciais de ~/.oura-mcp/credentials.json. Para habilitar a atualização automática de token, adicione suas credenciais OAuth:

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["oura-ring-mcp"],
      "env": {
        "OURA_CLIENT_ID": "your_client_id",
        "OURA_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Reinicie o Claude Desktop. Requer Node >=18.

O Que Posso Perguntar?

Check-ins diários:

  • "Como foi meu sono ontem à noite?"
  • "Estou recuperado o suficiente para treinar hoje?"
  • "O que meu corpo está me dizendo agora?"

Padrões e tendências:

  • "Durmo melhor nos fins de semana?"
  • "Que horas devo ir dormir para um sono ideal?"
  • "Meu VFC está melhorando ou piorando?"

Correlações e insights:

  • "O álcool afeta a qualidade do meu sono?"
  • "O que prevê minhas melhores noites de sono?"
  • "Como o horário do exercício afeta minha recuperação?"

Comparações:

  • "Compare meu sono desta semana com o da semana passada"
  • "Como durmo após meditação vs. sem?"
  • "O que mudou quando comecei a tomar magnésio?"

Anomalias:

  • "Há alguma leitura incomum nos meus dados?"
  • "Por que minha prontidão estava tão baixa ontem?"
  • "Encontre dias em que minhas métricas estavam fora do normal"

Ferramentas Disponíveis

Recuperação de Dados

FerramentaDescrição
get_sleepDados de sono com estágios, eficiência, FC, VFC
get_daily_sleepPontuações diárias de sono com contribuidores
get_readinessPontuações de prontidão e métricas de recuperação
get_activityPassos, calorias, detalhamento de intensidade
get_workoutsSessões de treino com tipo e intensidade
get_sessionsSessões de meditação e relaxamento
get_heart_rateLeituras de FC ao longo do dia
get_stressNíveis de estresse e tempo de recuperação
get_spo2Oxigênio no sangue e distúrbios respiratórios
get_tagsTags e notas criadas pelo usuário

Análise Inteligente

FerramentaDescrição
detect_anomaliesEncontre leituras incomuns usando detecção de outliers
analyze_sleep_qualityAnálise de sono com tendências, padrões, dívida de sono
correlate_metricsEncontre correlações entre métricas de saúde
compare_periodsCompare esta semana vs. semana passada
compare_conditionsCompare métricas com/sem uma tag
best_sleep_conditionsO que prevê seu bom vs. mau sono
analyze_hrv_trendTendência de VFC com médias móveis

Recursos

RecursoDescrição
oura://todayResumo de saúde de hoje
oura://weekly-summaryÚltimos 7 dias com médias
oura://baselineSuas médias de 30 dias e faixas normais
oura://monthly-insightsAnálise de 30 dias com tendências e anomalias
oura://tag-summarySuas tags e frequência de uso

Prompts

PromptDescrição
weekly-reviewRevisão semanal abrangente de saúde
sleep-optimizationIdentifique o que leva ao seu melhor sono
recovery-checkVocê deve treinar pesado ou descansar hoje?
compare-weeksComparação desta semana vs. semana passada
tag-analysisComo uma tag específica afeta sua saúde

Implantação Remota (Railway)

Implante o servidor MCP para acesso remoto. O servidor faz proxy do OAuth através da Oura, então os usuários autenticam diretamente com sua conta Oura — sem necessidade de PAT.

1. Crie um Aplicativo OAuth Oura

  1. Acesse Aplicações OAuth Oura
  2. Crie um novo aplicativo
  3. Defina a URI de Redirecionamento para: https://your-app.railway.app/oauth/callback
  4. Anote o Client ID e o Client Secret

2. Implante

# Install Railway CLI
npm install -g @railway/cli

# Login, init, and deploy
railway login
railway init
railway up

3. Defina as Variáveis de Ambiente

No painel do Railway, adicione:

VariávelDescrição
OURA_CLIENT_IDDo seu aplicativo OAuth Oura
OURA_CLIENT_SECRETDo seu aplicativo OAuth Oura
NODE_ENVproduction
MCP_SECRET(Opcional) Token bearer estático para Claude Desktop (openssl rand -base64 32)
OURA_ACCESS_TOKEN(Opcional) Fallback de PAT se não usar OAuth (MCP_SECRET obrigatório)

O Railway define automaticamente PORT e RAILWAY_PUBLIC_DOMAIN.

4. Conecte-se pelo Claude.ai

Use o conector no Claude.ai:

  1. Vá em Configurações > Conectores MCP > Adicionar
  2. Insira a URL do seu servidor: https://your-app.railway.app (sem /mcp)
  3. Deixe o OAuth Client ID e Secret vazios (o registro dinâmico cuida disso)
  4. Você será redirecionado para a Oura para autorizar o acesso aos seus dados

5. Conecte-se pelo Claude Desktop

Para 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"
      }
    }
  }
}

Teste Local

# 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}'

Contribuindo

Veja CLAUDE.md para detalhes de arquitetura e diretrizes de desenvolvimento.

Licença

MIT