mcpField
O
Oura Ring (read-only)

Oura Ring (read-only)

本地服务
github.com健康医疗11 周前更新

关于 Oura Ring (read-only)

Oura Ring (read-only) 是用于查询 Oura 健康和活动数据的 MCP 服务,适合希望通过 MCP 客户端分析戒指指标的人。它提供每日汇总和趋势,同时强制只读访问,并将 OAuth 令牌保存在本机。

主要功能

  1. 01每日准备度、睡眠和活动概览
  2. 02最长 90 天的趋势与均值
  3. 03睡眠阶段和心率曲线
  4. 04活动、锻炼、训练会话和标签
  5. 05本地 OAuth 令牌存储与刷新
  6. 06公开样例数据沙盒

适用场景

  1. 01查看某日的睡眠阶段和准备度
  2. 02比较一个月内的 HRV 与最低心率
  3. 03分析活动、压力和睡眠趋势
  4. 04查看带标签日期与准备度的关联

MCP 相关

向 MCP 客户端提供只读 Oura 数据工具,包括每日汇总、趋势表、睡眠详情和心率数据。服务通过 stdio 运行,不提供修改 Oura 数据的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"royreznik-oura-ring": {
"command": "npx",
"args": [
"-y",
"@royreznik/oura-ring-mcp"
]
}
}
}
启动命令npx -y @royreznik/oura-ring-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@royreznik/oura-ring-mcp1.0.0

工具

14

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

Oura Ring MCP 服务(只读)

npm CI oura-ring-mcp MCP server – quality and maintenance score on Glama M8ven Score Node Read-only License: MIT

向 Claude、Cursor、VS Code 或任何 MCP 客户端询问你的 Oura Ring 准备度、睡眠、HRV、活动、压力和心率信息,同时不会赋予它修改数据的能力。

“我昨晚睡得怎么样?为什么准备度只有 64?” “比较一下过去 30 天的 HRV 和最低心率。” “显示昨晚的睡眠阶段和心率曲线。” “标记饮酒的日子之后,我的准备度会下降吗?”

Install in Cursor Install in VS Code

(安装前或安装后,先运行一次 auth 步骤。)

为什么选择此服务

  • 强制只读。 Oura 的 API 没有用于写入你数据的端点,而此客户端的限制更严格:它只能发送 GET 请求,拒绝 /v2/usercollection/ 以外的任何 URL,不会触及 webhook API,并且每个工具都带有 readOnlyHint: true。否则测试会导致构建失败。
  • 一次调用回答完整问题。 get_daily_overview 会同时返回某一天的准备度、睡眠、小睡、活动、压力、韧性、SpO2、锻炼和标签。get_trends 会返回每日数据表,以及最多 90 天的平均值和准备度区间。
  • 适合模型处理的输出。 使用小时、分钟、千米和本地时间,而非秒和米,输出紧凑 JSON;睡眠图以阶段片段表示;心率汇总为多个区间。传入 raw: true 可获取 Oura 的原始对象。
  • 优雅降级。 如果你在 Oura 的授权页面取消勾选某种数据类型,组合工具会将其列在 unavailable 下,而不会报错。
  • 令牌留在你的设备上。 使用你自己的 Oura API 应用、基于 PKCE 的 OAuth、权限为 0600 的令牌文件,并安全处理 Oura 的一次性刷新令牌。没有第三方服务,也没有遥测。
  • 无需账户即可试用。 设置 OURA_SANDBOX=1 即可提供 Oura 的公开示例数据。

快速开始

你需要 Node.js 20.11+ 和一个 Oura 账户。(Oura 已于 2025 年 12 月停用个人访问令牌,因此只能通过 OAuth 访问。)

1. 创建 Oura API 应用(2 分钟)
  1. 打开 cloud.ouraring.com/oauth/applications 并创建一个新应用。
  2. 将 Redirect URI 设为 http://localhost:8787/callback。
  3. 复制 Client ID 和 Client Secret。

无需 Oura 批准,应用最多可供 10 位用户使用,个人使用绰绰有余。

2. 连接你的 Oura 账户
npx -y @royreznik/oura-ring-mcp auth

根据提示粘贴你的 Client ID 和 Client Secret(输入密钥时不会显示)。浏览器会打开 Oura 的授权页面;保留所有数据类型的勾选状态并批准。令牌会保存到 ~/.config/oura-ring-mcp/tokens.json,之后会自动刷新。

(对于脚本,请设置 OURA_CLIENT_ID 和 OURA_CLIENT_SECRET,而不是回答提示。)

3. 将其添加到你的 MCP 客户端
Claude Code

作为插件安装(添加服务和 /oura:auth 技能,引导你完成连接):

/plugin marketplace add royreznik/oura-ring-mcp
/plugin install oura@oura-ring-mcp

或者只添加 MCP 服务:

claude mcp add oura --scope user -- npx -y @royreznik/oura-ring-mcp
Claude Desktop、Cursor、Windsurf

添加到客户端的 MCP 配置中(Claude Desktop:Settings → Developer → Edit Config;Cursor:~/.cursor/mcp.json;Windsurf:~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["-y", "@royreznik/oura-ring-mcp"]
    }
  }
}

对于 Claude Desktop,你也可以从最新版本安装 .mcpb bundle。

VS Code(GitHub Copilot)

.vscode/mcp.json(或你的用户级 mcp.json):

{
  "servers": {
    "oura": { "type": "stdio", "command": "npx", "args": ["-y", "@royreznik/oura-ring-mcp"] }
  }
}
OpenAI Codex CLI

~/.codex/config.toml:

[mcp_servers.oura]
command = "npx"
args = ["-y", "@royreznik/oura-ring-mcp"]
Docker

先在主机上运行 auth,然后挂载令牌目录:

docker build -t oura-ring-mcp https://github.com/royreznik/oura-ring-mcp.git
docker run -i --rm -v ~/.config/oura-ring-mcp:/home/node/.config/oura-ring-mcp oura-ring-mcp

然后询问:“给我看看今天的 Oura 概览。”

无需账户即可试用
claude mcp add oura-sandbox --env OURA_SANDBOX=1 -- npx -y @royreznik/oura-ring-mcp

沙盒模式会提供 Oura 的公开示例数据。无需授权,也不会使用个人数据。

工具

工具返回内容
get_daily_overview单日数据:准备度、睡眠评分和主要睡眠、午睡、活动、压力、恢复力、SpO2、心血管年龄、VO2 max、就寝时间建议、锻炼、时段、标签(默认为最近一个有评分的日期)
get_trends逐日表格,以及准备度、睡眠和活动评分、睡眠阶段、HRV、最低心率、体温、步数、卡路里和压力的平均值/最小值/最大值,覆盖 1–90 天
get_profile年龄、身高、体重、性别、电子邮件;戒指型号、尺寸、颜色、固件;电池电量
list_daily_readiness准备度评分、影响因素、体温偏差
list_daily_sleep睡眠评分和影响因素
list_sleep_periods / get_sleep_period夜间睡眠和午睡:阶段、入睡潜伏期、效率、HR、HRV、呼吸;某一晚的睡眠结构图和 HR/HRV 曲线
list_daily_activity活动评分、步数、卡路里、活动分钟数、久坐时间
list_workouts活动、强度、时长、卡路里、距离(可按活动筛选)
list_sessions包含心情、HR 和 HRV 的冥想/呼吸/放松时段
list_daily_health压力、恢复力、SpO2 和呼吸紊乱、心血管年龄、VO2 max、就寝时间窗口,按日期汇总
list_tagsOura 应用中的标签和备注(酒精、咖啡因、疾病、自定义等)
list_rest_mode_periods休息模式时段及其症状标签
get_heart_rate聚合为 5 分钟/15 分钟/小时/天(或原始数据)的心率时间序列,以及按来源统计的数据;每次调用最多 30 天

列表工具接受 start / end(YYYY-MM-DD,含首尾日期)、days 快捷参数和 next_token。详情请参阅**工具参考**。

配置

变量默认值用途
OURA_CLIENT_ID来自令牌文件你的应用客户端 ID(未设置时,auth 会询问)
OURA_CLIENT_SECRET来自令牌文件你的应用客户端密钥(未设置时,auth 会询问,且不会回显)
OURA_REDIRECT_URIhttp://localhost:8787/callback必须与应用上注册的重定向 URI 完全一致
OURA_TOKEN_PATH~/.config/oura-ring-mcp/tokens.json凭据的存储位置。必须是绝对路径(会展开 ~/)。遵循 XDG_CONFIG_HOME。
OURA_SANDBOX未设置设置为 1 时,提供 Oura 的公开示例数据,而非你的账户数据
oura-ring-mcp            Start the MCP server on stdio (what your MCP client runs)
oura-ring-mcp auth       Connect your Oura account (opens your browser)
oura-ring-mcp status     Check the stored connection
oura-ring-mcp logout     Delete the locally stored tokens
oura-ring-mcp --version

“今天”根据你电脑的时区计算,该时区应与 Oura 应用使用的时区一致。

隐私与安全

  • oura-ring-mcp 只会与 api.ouraring.com 通信(以及在 auth 期间通过浏览器访问 cloud.ouraring.com)。不收集遥测数据,也不使用中间服务。
  • 令牌和客户端密钥仅存储在一个只有你的用户才能读取的文件中(0600)。它们绝不会被记录日志或由工具返回。
  • **你的 MCP 客户端会将工具结果发送给其大模型。**你询问的健康数据会根据该模型提供商的条款与其共享。
  • 如需断开连接,请运行 oura-ring-mcp logout。如需彻底撤销访问权限,请在 cloud.ouraring.com/oauth/applications 删除应用,或在你的 Oura 账户中撤销访问权限。

详情:PRIVACY.md、SECURITY.md。

身份验证的工作原理

  • 使用 OAuth 2 授权码流程,配合 PKCE(S256)和随机 state,由仅监听回环地址的回调服务捕获。
  • Oura 刷新令牌只能使用一次。oura-ring-mcp 会在令牌过期前不久刷新(收到 401 时也会刷新),并通过锁文件确保同一台设备上的多个客户端(例如 Claude Desktop 和 Claude Code)不会同时刷新,一次只进行一个刷新操作,同时以原子方式写入新令牌。如果写入失败,新令牌会保留在内存中,因此磁盘空间用尽也不会导致你被注销。
  • 对速率限制(429,并遵循 Retry-After)、服务器错误、超时(30s)和网络错误进行退避重试。在客户端取消请求会停止其发出的 Oura 请求。

故障排除

症状解决方法
Oura 显示重定向 URI 错误应用的重定向 URI 必须与 OURA_REDIRECT_URI 完全一致,包括 http://、端口和 /callback。
Port 8787 is in use在应用上注册其他 URI(例如 http://localhost:9876/callback),并设置 OURA_REDIRECT_URI 后运行 auth。
Not connected to Oura运行 auth。如果客户端以其他用户身份运行,或使用不同的 HOME,请在客户端配置中设置 OURA_TOKEN_PATH。
Oura rejected the refresh token重新运行 auth(应用密钥已轮换、访问权限已撤销,或令牌文件已复制到另一台设备)。
某种数据类型显示在 unavailable 下(403)你在 Oura 授权页面取消了该项勾选,或需要有效的 Oura 会员资格。请重新运行 auth 并授权该项。
426 错误更新手机上的 Oura 应用并打开应用,使其同步。
缺少今天的数据Oura 只有在戒指通过 Oura 应用同步后才会有数据。请打开应用,然后再次询问。
npx -y @royreznik/oura-ring-mcp status

开发

npm install
npm test                 # unit, MCP integration, end-to-end and packaging tests (no network)
npm run smoke:sandbox    # every tool against Oura's live sandbox API
npm run smoke:live       # every tool against your account (after auth); prints only counts
npm run inspect          # MCP Inspector

请参阅 CONTRIBUTING.md。唯一不可妥协的规则:oura-ring-mcp 始终保持只读。

致谢与法律声明

架构、身份验证和测试方法改编自 Oryan Omer 的 whoop-mcp(MIT)。

MIT © Roy Reznik。非官方项目,与 Oura Health Oy 无关,也未获得其认可。“Oura”是 Oura Health Oy 的商标。本文内容不构成医疗建议。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。