健康数据分析服务器

Oura MCP Server 是一款基于 Oura Ring API v2 的健康数据分析服务器,提供最高粒度的健康数据访问、AI 驱动的健康洞察和科学仪表板,适用于个人健康优化和研究分析。

  • by PedroDnT
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 PedroDnT/oura-mcp-server

使用说明

Oura MCP服务器

用于Oura Ring API v2的综合模型上下文协议(MCP)服务器,具有最大的数据粒度。

以最高级别的详细信息访问您的所有Oura健康数据:

  • ⌚每5分钟心率
  • 😴 详细的睡眠数据,包括心率变异性、运动和睡眠图
  • 🏃 完成活动、锻炼和恢复指标
  • 📊 全面的健康洞察和趋势分析
  • 🧪 具有相关性、滞后效应和衍生特征的科学仪表板
  • 🎯 针对健康优化的个性化建议

✨ 特性

🔬 最大粒度数据访问

时间序列生物识别:

  • 每5分钟测量一次心率
  • 睡眠期间每隔5分钟的心率变异性
  • 30秒间隔的运动数据
  • 5分钟分辨率的睡眠阶段催眠图(深/浅/快速眼动/清醒)

综合健康指标:

  • 每日睡眠评分和质量细分
  • 活动跟踪,包括步数、卡路里和MET分钟数
  • 准备程度评分与恢复指标
  • 压力和弹性指标
  • SPO2(血氧)测量
  • 最大摄氧量和心血管年龄
  • 带心率区的锻炼课程

🧠 AI驱动的健康洞察

自动分析工具:

  • 睡眠质量趋势和模式检测
  • 活动恢复平衡分析
  • 压力水平相关性
  • 异常检测和健康警报
  • 个性化推荐 为了改进:
    • 睡眠质量和持续时间
    • 恢复和准备
    • 活动水平和训练负荷
  • 压力管理

🧪 科学仪表板

web UI中的仪表板:

  • 相关热图+钻取散点图
  • 滞后效应(例如,活动→ 次日准备就绪)
  • 就寝时间一致性分布+睡眠评分影响
  • 压力与睡眠效率耦合
  • SpO2/呼吸障碍与恢复

🚀 快速开始

先决条件

  • Node.js 18或更高版本
  • Oura戒指(第2代、第3代或第4代)
  • 活跃的Oura会员
  • Oura OAuth访问令牌

安装

  1. 克隆或下载此存储库

  2. 安装依赖项:

    npm install
    
  3. 构建服务器:

    npm run build
    
  4. 获取您的Oura OAuth访问令牌:

    • 首选https://cloud.ouraring.com/oauth/applications
    • 创建新的OAuth应用程序
    • 记下你的客户端ID和客户端密码(不要提交)
    • 使用以下任一方法:
      • OAuth访问令牌(推荐),或
      • 用于快速测试的个人访问令牌(PAT)(Oura可能会弃用PAT)

与Claude Desktop集成

添加到您的 claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "oura": {
      "command": "node",
      "args": [
        "/path/to/oura-mcp-server/dist/index.js"
      ],
      "env": {
        "OURA_ACCESS_TOKEN": "YOUR_OAUTH_ACCESS_TOKEN_HERE"
      }
    }
  }
}

重要提示: 替换 /path/to/oura-mcp-server 使用实际路径并添加OAuth访问令牌。


🌐 Web UI+HTTP(Vercel/多用户)

该项目还支持Vercel可部署的web UI和HTTP API:

  • GET / --web UI(粘贴令牌、运行工具、图表+表格、下载JSON)
  • GET /oauth/start --OAuth登录(重定向到Oura)
  • GET /oauth/callback --OAuth回调(设置加密的HttpOnly会话cookie)
  • POST /api/tools/call --调用工具(cookie会话或授权标头)
  • POST /mcp --JSON-RPC(initialize, tools/list, tools/call)

所需的环境变量(HTTP/多用户)

  • SESSION_SECRET --需要加密HttpOnly cookie会话(建议使用32+字节)

OAuth登录(建议最大化用户集成)

您可以启用OAuth 2.0授权码登录,而不是手动粘贴令牌:

  1. 在Oura Cloud仪表板中创建OAuth应用程序。
  2. 配置重定向URI以指向已部署的服务器:
    • 例子: https://YOUR_DEPLOYMENT_DOMAIN/oauth/callback
  3. 设置这些环境变量(本地或Vercel上):
    • OURA_OAUTH_CLIENT_ID
    • OURA_OAUTH_CLIENT_SECRET
    • OURA_OAUTH_REDIRECT_URI (必须与您的Oura应用程序配置完全匹配)
    • OURA_OAUTH_SCOPES (可选;默认为 daily heartrate personal sleep workout session tag)

之后,打开web UI并单击“与Oura连接”。

令牌处理

  • 浏览器UI:存储在加密的HttpOnly cookie会话中的令牌。
  • 程序化客户端:发送 Authorization: Bearer <token> (覆盖cookie)。

重新启动克劳德桌面

更新配置后,重新启动Claude Desktop以加载MCP服务器。


🛠️ 可用工具

分页(列出端点): 大多数列表工具都接受 page_limit 和 max_records.如果 end_date 如果省略,则默认为 start_date.如果 end_datetime 如果省略,则默认为“现在”

1. oura_get_heartrate

每隔5分钟测量一次心率 -最精细的心血管数据

参数:

  • start_datetime (字符串):ISO 8601格式(例如,“2024-01-15T00:00:00Z”)
  • end_datetime (字符串,可选):ISO 8601格式
  • response_format ('markdown'|'json'):输出格式

例子:

Show my heart rate for the past 24 hours

2. oura_get_sleep_detailed

获取全面的睡眠数据 -HRV、运动、最高粒度的催眠图

参数:

  • start_date (字符串):YYYY-MM-DD格式
  • end_date (字符串,可选):YYYY-MM-DD格式
  • response_format ('markdown'|'json'):输出格式

退货:

  • 睡眠期间每隔5分钟的心率
  • HRV,间隔5分钟
  • 以30秒的间隔移动
  • 5分钟分辨率的睡眠阶段催眠图
  • 完整的睡眠质量指标

例子:

Show detailed sleep data for last week with HRV trends

3. oura_get_daily_sleep

获取每日睡眠评分 -睡眠质量下降

参数:

  • start_date (字符串):YYYY-MM-DD
  • end_date (字符串,可选):YYYY-MM-DD
  • response_format ('markdown'|'json'):输出格式

例子:

What were my sleep scores for the past month?

4. oura_get_daily_activity

获取每日活动指标 -步数、卡路里、MET分钟数、活动分布

参数:

  • start_date (字符串):YYYY-MM-DD
  • end_date (字符串,可选):YYYY-MM-DD
  • response_format ('markdown'|'json'):输出格式

例子:

Show my activity data for January

5. oura_get_daily_readiness

获取准备分数 -恢复和准备指标

参数:

  • start_date (字符串):YYYY-MM-DD
  • end_date (字符串,可选):YYYY-MM-DD
  • response_format ('markdown'|'json'):输出格式

例子:

How was my readiness this week?

6. oura_get_daily_stress

获取压力和恢复数据 -日常压力水平和恢复时间

参数:

  • start_date (字符串):YYYY-MM-DD
  • end_date (字符串,可选):YYYY-MM-DD
  • response_format ('markdown'|'json'):输出格式

例子:

Analyze my stress patterns for the past 2 weeks

7. oura_get_workout

进行锻炼 -包含心率区域的详细锻炼数据

参数:

  • start_date (字符串):YYYY-MM-DD
  • end_date (字符串,可选):YYYY-MM-DD
  • response_format ('markdown'|'json'):输出格式

例子:

Show all my workouts from last month

8. oura_get_personal_info

获取个人信息 -用户配置文件字段(年龄、性别、身高、体重、电子邮件)

参数:

  • response_format ('markdown'|'json'):输出格式

例子:

Show my Oura profile information

9. oura_analyze_health_trends ⭐

生成全面的健康见解和建议

这就是 旗舰分析工具 即:

  • 分析指定时间段内的所有Oura数据
  • 识别睡眠、活动和恢复趋势
  • 检测模式和异常
  • 生成 个性化健康建议
  • 为优化提供可操作的见解

参数:

  • start_date (字符串):分析期开始(YYYY-MM-DD)
  • end_date (字符串):分析期结束(YYYY-MM-DD)
  • include_recommendations (boolean):包括个性化推荐(默认值:true)
  • response_format ('markdown'|'json'):输出格式

查询示例:

Analyze my health trends for the past month and give me recommendations

Generate a comprehensive health report for January with insights on what to improve

What patterns do you see in my sleep, activity, and recovery over the last 30 days?

您将获得:

  • 📊 睡眠质量趋势(平均值、最佳/最差夜晚、趋势方向)
  • 🏃 活动模式(步数、卡路里、锻炼频率)
  • 💪 恢复分析(准备状态评分、休息良好百分比)
  • 🧘 压力平衡(压力日与恢复日)
  • 🎯 个性化推荐 按影响优先
  • 🔍 关键见解和健康警报

10. oura_generate_science_dashboards 🧪

生成科学仪表板 -相关性、滞后效应和衍生特征

参数:

  • start_date (字符串):分析期开始(YYYY-MM-DD)
  • end_date (字符串):分析期结束(YYYY-MM-DD)
  • correlation_method (“pearman”|“pearson”):违约 spearman
  • max_lag_days (数字):默认值7
  • response_format ('markdown'|'json'):输出格式

您将获得:

  • 与衍生特征(睡前一致性、阶段比例、训练负荷)一起加入每日表
  • 相关矩阵+去趋势相关矩阵
  • 滞后分析(活动/压力/睡眠→ 准备就绪)
  • 带有图表就绪数据的仪表板卡片

11. oura_get_raw_endpoint

安全舱口 -从任何受支持的Oura v2端点获取原始JSON

参数:

  • endpoint (string):Oura v2用户集合端点
  • params (对象):查询参数
  • page_limit / max_records (可选)
  • response_format (“标记”|“json”)

其他端点工具

  • oura_get_daily_resilience
  • oura_get_daily_spo2
  • oura_get_daily_cardiovascular_age
  • oura_get_vo2_max
  • oura_get_sleep_time
  • oura_get_session
  • oura_get_enhanced_tag
  • oura_get_tag
  • oura_get_rest_mode_period
  • oura_get_ring_configuration

📖 示例用例

研究与分析

Analyze my sleep quality correlation with workout intensity over the past 3 months

Show detailed HRV trends during sleep for January and identify any anomalies

Compare my heart rate variability on rest days vs. workout days

健康优化

Generate health insights for the past month and tell me what to focus on improving

What's the relationship between my stress levels and sleep quality?

Analyze my recovery patterns and recommend optimal training frequency

进度跟踪

Show my sleep score trend for the past 90 days

Compare my activity levels month-over-month for Q1

Track my VO2 max progression over the year

🔐 认证

此MCP服务器使用 OAuth 2.0 使用Oura API v2进行身份验证。

获取访问令牌

您有两个选择:

选项1:OAuth流(建议用于生产环境)

  1. 在以下位置创建OAuth应用程序https://cloud.ouraring.com/oauth/applications
  2. 实现OAuth 2.0流程以获取访问令牌
  3. 令牌刷新是自动处理的

选项2:个人访问令牌(快速启动)

  1. 首选https://cloud.ouraring.com/v2/docs
  2. 生成个人访问令牌
  3. 直接在配置中使用

注: Oura正在弃用个人访问令牌。建议长期使用OAuth。


🎯 数据粒度级别

数据类型 粒度 工具
心率 5分钟 oura_get_heartrate
HRV(睡眠期间) 5分钟 oura_get_sleep_detailed
运动(睡眠期间) 30秒 oura_get_sleep_detailed
睡眠阶段 5分钟 oura_get_sleep_detailed
活动课 5分钟 oura_get_daily_activity
MET分钟数 每天 oura_get_daily_activity
睡眠评分 每天 oura_get_daily_sleep
准备得分 每天 oura_get_daily_readiness
压力水平 每天 oura_get_daily_stress

粒度限制: Oura的公共API以5分钟的心率、5分钟的睡眠阶段和30秒的睡眠运动(如有)达到最佳。原始/二级流未暴露。


🔧 发展

构建

npm run build

开发模式(带自动重新加载)

npm run dev

清洁建筑

npm run clean
npm run build

📊 响应格式

所有工具都支持两种响应格式:

Markdown(默认)

人类可读格式,包括:

  • 清除标题和部分
  • 格式化表格和列表
  • 用于快速扫描的表情符号
  • 上下文信息

JSON

结构化数据格式:

  • 程序化处理
  • 数据分析管道
  • 与其他工具集成
  • 自定义可视化

指定格式:

Show my sleep data for last week in JSON format

⚠️ 速率限制

Oura API v2允许 每天5000个请求.

MCP服务器:

  • 每个响应最多返回50000个字符
  • 自动截断大型响应
  • 如果需要,建议使用较小的日期范围
  • 遵守API速率限制,并带有明确的错误消息

🤝 贡献

欢迎投稿!需要改进的地方:

  • 更多Oura API v2端点
  • 增强的分析算法
  • 更复杂的建议
  • 可视化功能
  • 测试和文件

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件


🙏 致谢


📮 支持

  • 我们的API文档: https://cloud.ouraring.com/v2/docs
  • MCP协议: https://modelcontextprotocol.io/
  • 问题: 在此存储库中打开问题

🎉 开始吧!

  1. 安装并配置MCP服务器
  2. 重新启动克劳德桌面
  3. 开始询问有关您的健康数据的问题:
    • “分析我过去一个月的健康趋势”
    • “显示上周HRV的详细睡眠数据”
    • “我应该关注什么来改善我的康复?”

您全面的Oura健康见解等待着您! 🚀💪📊

oura mcp服务器