oura-mcp 是一个远程 MCP(Model Context Protocol)服务器,旨在将 Oura Ring 的健康数据接入任何支持 MCP 的聊天客户端,例如 ChatGPT 或 Claude。它没有自己的用户界面、独立应用或内置模型,而是作为桥梁,让用户已经付费使用的 AI 助手调用工具,并以用户所说的任何语言解释数据。
用途
该项目解决的核心问题是让 Oura Ring 数据变得可对话。用户可以直接向 ChatGPT 或 Claude 提问,例如“我这周睡得怎么样?”,助手会调用 oura-mcp 提供的工具,获取并解释睡眠、准备度、活动、压力和心率等数据。它不用于构建仪表盘或图表(Oura 官方应用已提供),也不用于获取原始数据供脚本使用(可直接调用 Oura API)。
主要能力
- 任务导向的工具:将 18 个 Oura API 端点分组为 10 个工具,匹配人们实际提问的方式,而非简单的一对一封装。
- 令牌高效响应:服务器端将时长转换为分钟,单位嵌入字段名(如 deep_min、efficiency_pct),剥离原始时间序列和内部 ID。单次工具响应为 0.2–3 KB,而非 50 KB。
- 响应格式可选:数据密集型工具支持 response_format: concise | detailed,默认简洁,可按需展开。
- 可操作的错误:例如心率查询范围过宽时,返回“请查询 3 天或更少,或使用 oura_get_readiness 查看趋势”,而非 400 错误。
- 合理默认值:每个工具在零参数时均可工作(默认最近 7 天)。
- 只读工具:所有工具均标记 readOnlyHint,ChatGPT 不会在每次调用时要求确认。
使用方式
本地运行(Claude Desktop)
- 从最新发布版下载 oura-mcp.mcpb,双击安装。演示模式立即生效,使用假样本数据,无需 Oura 账户。
- 连接真实戒指(约 5 分钟):在 developer.ouraring.com/applications 创建自己的 Oura 应用(免费、即时、无需审核),重定向 URI 设置为 http://localhost:8888/callback。
- 在 Claude Desktop 中:设置 → 扩展 → oura-mcp → 配置 → 粘贴应用的 Client ID 和 Client Secret(密钥存储在操作系统钥匙串中)。
- 向 Claude 提问健康问题,浏览器会打开 Oura 同意页面,批准后即可查看自己的数据。令牌保留在本地(~/.oura-mcp/,权限 600)。
Docker 方式
- 在 developer.ouraring.com/applications 注册 OAuth 应用(重定向 URI http://localhost:8888/callback),将凭据放入 .env 文件,与 docker-compose.yml 副本放在一起。
- 一次性浏览器同意,保存令牌到 ./data:docker compose --profile setup up get-token。
- 从源码运行:npm install && npm run build,然后使用 "command": "node", "args": ["/path/to/oura-mcp/dist/src/stdio.js"](cwd 设为仓库目录,以便解析 data/tokens.json)。
自托管(远程:ChatGPT、claude.ai 网页版)
- 需要 Node 22+ 或 Docker,以及具有公共 HTTPS 的主机(免费层 VM 配合 Caddy 即可)。避免请求间会休眠的免费层,ChatGPT 冷启动会超时。
- 保持 .env 中 PORT=3000(或调整 compose 端口映射)。
- 无需戒指即可开发:OURA_SANDBOX=1 npm run dev 提供 Oura 沙盒数据。
- 连接聊天客户端:MCP 端点为 https://your-host/mcp/<MCP_PATH_SECRET>。
- ChatGPT:设置 → 应用 → 高级设置 → 启用开发者模式;设置 → 应用 → 创建,粘贴 MCP 端点 URL,认证选“无认证”;在对话中打开 + 菜单 → 开发者模式 → 启用应用。需在桌面网页版设置,之后移动端对话也可用。
- Claude:设置 → 连接器 → 添加自定义连接器,粘贴 MCP 端点 URL → 添加。Claude 从 Anthropic 云端连接,服务器必须公网可达(不能是 localhost)。
- 仅支持 stdio 的客户端可使用 mcp-remote 桥接。
适用场景
- 希望用自然语言询问 Oura Ring 健康数据的个人用户。
- 已使用 ChatGPT 或 Claude 并希望将健康数据接入对话的用户。
- 注重隐私、希望自托管并完全控制数据的用户。
限制
- 需要有效的 Oura 订阅(API 无订阅返回 403),或使用沙盒演示模式。
- Oura 于 2025 年 12 月弃用个人访问令牌,必须使用 OAuth 应用,这是 Oura 的规定。
- 远程路径需要公网 HTTPS 主机,且不能是冷启动休眠的免费层。
- 自托管设计为单用户,数据在用户服务器与 Oura 之间直接流动。
- 部分指标(如 resilience、vo2_max)需佩戴约 2 周或完成体能测试后才有数据。
- 提示注入风险:健康对话应视为敏感,避免与浏览网页等不可信内容混合在同一聊天中。
安全与隐私
- OAuth 令牌从不离开用户服务器;MCP 客户端仅看到工具结果。
- 只读范围;Oura API 没有健康数据写入端点,本服务器也没有。
- 任何工具都不会返回用户邮箱。
- 可选的用量日志仅记录工具名称和耗时,从不记录健康值。
状态与路线图
- 自托管、单用户设计,目前运行作者家庭的戒指数据。
- 即将推出:一键 Claude Desktop 扩展(.mcpb)和免费层 Cloudflare Workers 部署按钮。