本服务器基于模型上下文协议(MCP),借助 Oura API v2,可让用户访问 Oura Ring 的健康与健身数据。
此 MCP 服务器将 Oura Ring 的所有主要数据类型作为工具公开:
git clone
cd oura-ring-mcp
npm install
npm run build
若为个人使用,请创建个人访问令牌:
在项目根目录下创建一个 .env 文件:
# 必需:你的 Oura Ring 个人访问令牌
OURA_ACCESS_TOKEN=your_personal_access_token_here
# 可选:仅用于网络钩子功能
OURA_CLIENT_ID=your_client_id_here
OURA_CLIENT_SECRET=your_client_secret_here
# 可选:覆盖默认的 API 基础 URL(通常不需要)
# OURA_BASE_URL=https://api.ouraring.com
若要使用网络钩子实现实时数据更新:
OURA_CLIENT_ID 和 OURA_CLIENT_SECRET 添加到 .env 文件中npm test
npm run test:api
此命令将测试实际的 API 调用,以验证你的凭证并显示示例数据。
启动 MCP 服务器,以便与 MCP 客户端配合使用:
npm start
或者在开发模式下运行:
npm run dev
注意:服务器通过标准输入输出进行通信,等待 MCP 协议消息。你需要一个 MCP 客户端(如 Claude Desktop、Continue 或其他兼容 MCP 的工具)来与之交互。
get_personal_info — 获取用户个人信息get_sleep — 获取睡眠数据,可选择指定日期范围get_daily_sleep — 获取每日睡眠汇总get_readiness — 获取恢复状态数据get_daily_readiness — 获取每日恢复状态汇总get_activity — 获取活动数据get_daily_activity — 获取每日活动汇总get_workouts — 获取锻炼记录get_heart_rate — 获取心率测量值get_sessions — 获取呼吸练习、冥想和小憩记录get_daily_stress — 获取每日压力和恢复数据get_tags — 获取用户创建的标签get_enhanced_tags — 获取带有元数据的增强标签get_sleep_time — 获取就寝时间和起床时间数据get_rest_mode_periods — 获取休息模式时段get_ring_configuration — 获取手环设置get_webhook_subscriptions — 列出活跃的网络钩子订阅create_webhook_subscription — 创建新的网络钩子订阅delete_webhook_subscription — 删除网络钩子订阅大多数工具接受可选的日期范围参数:
start_date — 开始日期,格式为 YYYY-MM-DDend_date — 结束日期,格式为 YYYY-MM-DDnext_token — 用于大型数据集分页的令牌示例:
{
"start_date": "2024-01-01",
"end_date": "2024-01-31"
}
本 MCP 服务器基于 Oura API v2 构建,主要特性如下:
所有数据以结构化 JSON 格式返回,并使用 Zod 模式进行类型检查和验证。
网络钩子可在 Oura 数据发生变化时提供实时通知,对于需要最新数据的应用程序,推荐使用此功能。
OURA_CLIENT_ID 和 OURA_CLIENT_SECRETcreate_webhook_subscription 工具,并提供以下参数:
callback_url — 你的端点 URL(必须为 HTTPS)verification_token — 用于验证的秘密令牌event_type — 事件类型('create'、'update'、'delete')data_type — 数据类型('sleep'、'activity' 等)tag — 用户标签enhanced_tag — 带有元数据的增强标签workout — 锻炼记录session — 呼吸练习、冥想、小憩记录sleep — 睡眠数据daily_sleep — 每日睡眠汇总daily_readiness — 每日恢复状态汇总daily_activity — 每日活动汇总daily_stress — 每日压力数据src/
├── types.ts # TypeScript 类型和 Zod 模式
├── oura-client.ts # Oura API 客户端实现
├── server.ts # MCP 服务器实现
└── index.ts # 主入口点
test/
├── test.ts # 基本服务器实例化测试
├── manual-test.ts # 使用真实凭证进行 API 连接性测试
└── debug-test.ts # 原始 API 响应调试工具
npm run build
# 测试服务器实例化(无需进行 API 调用)
npm test
# 使用你的凭证测试实际的 API 连接性
npm run test:api
npm run lint
“无效或过期的身份验证令牌”
OURA_ACCESS_TOKEN 是否正确“访问被拒绝”(403 错误)
速率限制超出(429 错误)
网络钩子验证失败
verification_token 是否与你提供的一致本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
欢迎贡献代码!请阅读贡献指南,并提交拉取请求以进行改进。