Back to MCP directory
publicPublicdnsLocal runtime

oura-ring-mcp

一个连接Oura智能戒指与Claude等AI助手的MCP服务器,提供睡眠、恢复力和活动数据的智能分析和人性化解读。

article

README

🚀 Oura MCP 服务器

这是一个 MCP 服务器,可将你的 Oura 智能戒指与 Claude 及其他 AI 助手相连接。它能为你提供关于睡眠、身体状态及活动的易读见解,而非仅仅是原始的 JSON 数据。

🚀 快速开始

1. 安装

npm install -g oura-ring-mcp

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

npx oura-ring-mcp

2. 使用 Oura 进行身份验证

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

  1. 访问 cloud.ouraring.com/personal-access-tokens
  2. 创建一个新令牌。
  3. 在你的 Claude 桌面版配置中设置 OURA_ACCESS_TOKEN(见下文)。

选项 B:OAuth CLI 流程

  1. developer.ouraring.com 创建一个 OAuth 应用。
    • 将重定向 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 桌面版

添加到 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"
      }
    }
  }
}

重启 Claude 桌面版。需要 Node >=18。

✨ 主要特性

  • 智能格式化 - 以小时/分钟显示时长,分数附带上下文说明(如“85 - 最佳”)。
  • 睡眠分析 - 睡眠阶段、效率、心率变异性(HRV)及生物特征数据。
  • 身体状态跟踪 - 恢复分数及各项因素的详细分析。
  • 活动数据 - 步数、卡路里消耗及运动强度分析。
  • 健康指标 - 心率、血氧饱和度(SpO2)、压力水平、心血管年龄。
  • 智能分析 - 异常检测、相关性分析、趋势分析。
  • 标签支持 - 对比有/无特定条件下的各项指标。

查看示例输出 — 了解 Claude 针对睡眠、身体状态、每周总结及智能分析所返回的内容。

💻 使用示例

基础用法

# 安装
npm install -g oura-ring-mcp

# 直接使用 npx
npx oura-ring-mcp

高级用法

# 使用 OAuth CLI 流程进行身份验证
export OURA_CLIENT_ID=your_client_id
export OURA_CLIENT_SECRET=your_client_secret
npx oura-ring-mcp auth

📚 详细文档

可以提出哪些问题?

日常检查:

  • “我昨晚睡得怎么样?”
  • “我今天恢复得足够进行锻炼吗?”
  • “我的身体现在有什么信号?”

模式与趋势:

  • “我在周末睡得更好吗?”
  • “我应该几点睡觉才能获得最佳睡眠?”
  • “我的心率变异性是在改善还是下降?”

相关性与见解:

  • “酒精会影响我的睡眠质量吗?”
  • “哪些因素能预测我睡眠最佳的夜晚?”
  • “运动时间如何影响我的恢复情况?”

对比:

  • “比较我本周和上周的睡眠情况”
  • “冥想后和不冥想时我的睡眠情况如何?”
  • “我开始服用镁之后有什么变化?”

异常情况:

  • “我的数据中是否有异常读数?”
  • “我昨天的身体状态为什么这么差?”
  • “找出我的指标异常的日子”

可用工具

数据检索

| 工具 | 描述 | |------|-------------| | 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 | 心率变异性趋势及滚动平均值 |

资源

| 资源 | 描述 | |----------|-------------| | 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 | 特定标签如何影响你的健康 |

远程部署(Railway)

部署 MCP 服务器以实现远程访问。该服务器通过 Oura 代理 OAuth,因此用户可直接使用其 Oura 账户进行身份验证,无需个人访问令牌。

1. 创建 Oura OAuth 应用

  1. 访问 Oura OAuth 应用
  2. 创建一个新应用。
  3. 重定向 URI 设置为:https://your-app.railway.app/oauth/callback
  4. 记录 客户端 ID客户端密钥

2. 部署

# 安装 Railway CLI
npm install -g @railway/cli

# 登录、初始化并部署
railway login
railway init
railway up

3. 设置环境变量

在 Railway 控制台中添加: | 变量 | 描述 | |----------|-------------| | OURA_CLIENT_ID | 来自你的 Oura OAuth 应用 | | OURA_CLIENT_SECRET | 来自你的 Oura OAuth 应用 | | NODE_ENV | production | | MCP_SECRET | (可选) 用于 Claude 桌面版的静态令牌 (openssl rand -base64 32) | | OURA_ACCESS_TOKEN | (可选) 若不使用 OAuth,可作为个人访问令牌的备用方案(需要 MCP_SECRET) |

Railway 会自动设置 PORTRAILWAY_PUBLIC_DOMAIN

4. 从 Claude.ai 连接

在 Claude.ai 中使用 连接器

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

5. 从 Claude 桌面版连接

对于 Claude 桌面版,使用 MCP_SECRET + OURA_ACCESS_TOKEN

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

本地测试

# 使用 Oura OAuth(完整流程)
OURA_CLIENT_ID=your_id OURA_CLIENT_SECRET=your_secret pnpm start:http

# 仅使用静态密钥(需要 OURA_ACCESS_TOKEN)
OURA_ACCESS_TOKEN=your_pat MCP_SECRET=test-secret pnpm start:http

# 验证健康端点
curl http://localhost:3000/health

# 检查 OAuth 元数据(仅在设置了 OURA_CLIENT_ID 时可用)
curl http://localhost:3000/.well-known/oauth-authorization-server

# 测试认证请求(使用静态密钥)
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}'

📄 许可证

本项目采用 MIT 许可证。

贡献

有关架构细节和开发指南,请参阅 CLAUDE.md

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client