Oura Ring健康数据分析服务

一个将Oura Ring数据与Claude等AI助手连接的服务,提供睡眠、准备状态和活动的人类可读分析。

  • by mitchhankins01
  • TypeScript
  • 本地部署
  • 31 星标
  • 更新于
在 GitHub 查看 mitchhankins01/oura-ring-mcp

使用说明

Oura MCP服务器

一个MCP服务器,将您的Oura Ring连接到Claude和其他AI助手。获取有关您的睡眠、准备和活动的人类可读见解,而不仅仅是原始JSON。

特性

  • 智能格式化 -持续时间(小时/分钟),得分与上下文(“85-最佳”)
  • 睡眠分析 -睡眠阶段、效率、HRV和生物识别
  • 准备跟踪 -恢复得分和贡献者细分
  • 活动数据 -步数、卡路里和强度分解
  • 健康指标 -心率、血氧饱和度、压力、心血管年龄
  • 智能分析 -异常检测、相关性、趋势分析
  • 标签支持 -比较有条件/无条件的指标

参见示例输出 --克劳德返回睡眠、准备、每周总结和智能分析

快速开始

1.安装

npm install -g oura-ring-mcp

或者直接与npx一起使用(无需安装):

npx oura-ring-mcp

2.与Oura进行身份验证

选项A:个人访问令牌(更简单)

  1. 首选 cloud.oraring.com/personal-access-tokens
  2. 创建新令牌
  3. 集 OURA_ACCESS_TOKEN 在您的Claude Desktop配置中(见下文)

选项B:Auth-CLI流

  1. 在以下位置创建OAuth应用程序 developer.uraling.com
    • 将重定向URI设置为 http://localhost:3000/callback
  2. 运行身份验证流:
    export OURA_CLIENT_ID=your_client_id
    export OURA_CLIENT_SECRET=your_client_secret
    npx oura-ring-mcp auth
    
  3. 凭据保存到 ~/.oura-mcp/credentials.json

3.配置克劳德桌面

增添 claude_desktop_config.json:

使用个人访问令牌:

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

使用OAuth(运行后 npx oura-ring-mcp auth):

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

服务器从以下位置读取凭据 ~/.oura-mcp/credentials.json。要启用自动令牌刷新,请添加您的OAuth凭据:

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

重新启动克劳德桌面。需要节点>=18。

我能问什么?

每日签到:

  • “我昨晚睡得怎么样?”
  • “我今天恢复得足够好吗?”
  • “我的身体现在告诉我什么?”

模式和趋势:

  • “我周末睡得更好吗?”
  • “为了获得最佳睡眠,我应该什么时候睡觉?”
  • “我的HRV是在改善还是在下降?”

相关性和见解:

  • “酒精会影响我的睡眠质量吗?”
  • “什么能预测我最好的睡眠时间?”
  • “锻炼时间如何影响我的恢复?”

比较:

  • “比较我本周和上周的睡眠情况”
  • “冥想后和不冥想后我怎么睡觉?”
  • “当我开始服用镁时,发生了什么变化?”

异常:

  • “我的数据中有任何异常读数吗?”
  • “为什么我昨天的准备程度这么低?”
  • “查找我的指标不准确的日子”

可用工具

数据检索

工具 说明
get_sleep 睡眠数据,包括阶段、效率、心率、心率变异性
get_daily_sleep 贡献者的每日睡眠评分
get_readiness 准备度得分和恢复指标
get_activity 步数、卡路里、强度分解
get_workouts 有类型和强度的锻炼课程
get_sessions 冥想和放松课程
get_heart_rate 全天人力资源读数
get_stress 压力水平和恢复时间
get_spo2 血氧和呼吸障碍
get_tags 用户创建的标签和注释

智能分析

工具 说明
detect_anomalies 使用异常值检测查找异常读数
analyze_sleep_quality 睡眠分析与趋势、模式、债务
correlate_metrics 查找健康指标之间的相关性
compare_periods 将本周与上周进行比较
compare_conditions 比较有/没有标签的指标
best_sleep_conditions 什么能预测你的睡眠质量好坏
analyze_hrv_trend HRV趋势与滚动平均值

资源

资源 描述
oura://today 今天的健康摘要
oura://weekly-summary 过去7天的平均值
oura://baseline 你的30天平均值和正常范围
oura://monthly-insights 30天趋势和异常分析
oura://tag-summary 您的标签和使用频率

提示

提示 描述
weekly-review 全面的每周健康回顾
sleep-optimization 确定什么能让你睡得最好
recovery-check 你今天应该努力训练还是休息?
compare-weeks 本周与上周比较
tag-analysis 特定标签如何影响您的健康

远程部署(铁路)

部署MCP服务器以进行远程访问。服务器通过Oura代理OAuth,因此用户直接使用他们的Oura帐户进行身份验证,不需要PAT。

1.创建Oura OAuth应用程序

  1. 首选 Oura OAuth应用程序
  2. 创建一个新应用
  3. 设置 重定向URI 致: https://your-app.railway.app/oauth/callback
  4. 注意 客户端ID 和 客户端密钥

2.部署

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

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

3.设置环境变量

在铁路仪表板中,添加:

变量 描述
OURA_CLIENT_ID 从您的Oura OAuth应用程序
OURA_CLIENT_SECRET 从您的Oura OAuth应用程序
NODE_ENV production
MCP_SECRET (可选) Claude Desktop的静态承载令牌(openssl rand -base64 32)
OURA_ACCESS_TOKEN (可选) 如果不使用OAuth,则PAT回退(MCP_SECRET 必填)

铁路自动设置 PORT 和 RAILWAY_PUBLIC_DOMAIN.

4.从Claude.ai连接

使用 连接器 在第ai条中:

  1. 前往“设置”>“MCP连接器”>“添加”
  2. 请输入您的服务器URL: https://your-app.railway.app (无 /mcp)
  3. 将OAuth客户端ID和密钥留空(动态注册处理)
  4. 您将被重定向到Oura以授权访问您的数据

5.从克劳德桌面连接

对于Claude Desktop,请使用 MCP_SECRET + OURA_ACCESS_TOKEN:

{
  "mcpServers": {
    "oura-remote": {
      "url": "https://your-app.railway.app/mcp",
      "headers": {
        "Authorization": "Bearer your_mcp_secret_here"
      }
    }
  }
}

本地测试

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

贡献

看 CLAUDE.md 了解架构细节和开发指南。

许可证

麻省理工学院