Oura健康数据MCP服务器

一个基于FastMCP的服务器,提供对Oura Ring健康数据的访问,支持通过MCP协议查询活动、睡眠、准备度和心率等健康指标。

  • by Sealjay
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Sealjay/mcp-oura

使用说明

mcp-oura

⚠️ 已存档项目-不再维护⚠️

此项目已存档,不再受支持。不会进行进一步的开发或维护。

为什么? 维护人员不再使用Oura,更重要的是,Claude和其他LLM服务现在支持本地Apple Health集成,这使得专用的Oura MCP服务器在大多数用例中基本上是不必要的。

如果您想继续开发以满足自己的需求,请随时分叉此存储库。


为OpenAI规范配置的Oura MCP(模型上下文协议)服务器。该服务器通过可部署到Azure应用程序服务的FastMCP API提供对Oura Ring健康数据的访问。

特性

  • FastMCP服务器:使用FastMCP构建,便于创建MCP工具
  • GitHub OAuth身份验证:使用GitHub OAuth身份验证保护您的服务器
  • Oura API集成:访问日常活动、睡眠、准备情况、心率和个人信息
  • Azure部署:已准备好使用Azure Developer CLI(azd)部署到Azure应用服务
  • 免费版兼容:配置为使用Azure的F1(免费)层

可用的MCP工具

服务器提供以下工具用于查询Oura数据:

基础数据检索工具

  • get_daily_activity:检索每日活动指标(步数、卡路里、活动时间)
  • get_daily_sleep:检索睡眠数据(持续时间、睡眠阶段、效率)
  • get_daily_readiness:检索准备状态评分和影响因素
  • get_heart_rate:检索心率测量值
  • get_personal_info:检索用户配置文件信息

OpenAI MCP规范工具

  • fetch:按类型和日期范围获取特定的Oura数据(遵循OpenAI MCP获取规范)

    • 支持数据类型: activity, sleep, readiness, heart_rate, personal_info
    • 接受可选 start_date 和 end_date YYYY-MM-DD格式的参数
    • 例子: fetch("sleep", "2024-01-01", "2024-01-07")
  • search:使用自然语言查询搜索Oura数据(遵循OpenAI MCP搜索规范)

    • 根据您的搜索查询智能地确定要查询的数据源
    • 接受可选 start_date 和 end_date YYYY-MM-DD格式的参数
    • 示例:
      • search("sleep quality last week")
      • search("activity and steps yesterday")
      • search("readiness score")

先决条件

获取您的Oura API代币

  1. 访问 Oura Cloud个人访问令牌
  2. 使用您的Oura帐户登录
  3. 点击“创建新的个人访问令牌”
  4. 给它起个名字,然后单击“创建”
  5. 复制令牌-部署时需要它

设置GitHub OAuth身份验证

此服务器使用GitHub OAuth来保护对FastMCP服务器的访问。按照以下步骤创建GitHub OAuth应用程序:

1.创建GitHub OAuth应用程序

  1. 首选 GitHub开发人员设置
  2. 点击左侧边栏中的“OAuth Apps”
  3. 点击“新建OAuth应用程序”
  4. 填写申请详情:
    • 应用程序名称: mcp-oura (或您喜欢的名字)
    • 主页网址:您的Azure应用服务URL(例如。, https://web-abc123.azurewebsites.net)
    • 授权回调URL:您的Azure应用服务URL+ /auth/callback (例如。, https://web-abc123.azurewebsites.net/auth/callback)
  5. 点击“注册申请”
  6. 在应用程序详细信息页面上:
    • 复制 客户端ID -部署时需要这个
    • 点击“生成新的客户端密码”
    • 复制 客户端密钥 -您将立即需要它(它不会再次显示)

备注:如果你还不知道你的Azure应用服务URL,你可以在第一次部署后更新GitHub OAuth应用程序设置。运行后将显示URL azd up.

2.了解OAuth配置

GitHub OAuth集成提供:

  • 安全认证:只有通过GitHub进行身份验证的用户才能访问MCP服务器
  • 用户识别:访问GitHub用户信息(用户名、电子邮件等)
  • 最小配置:只需设置三个环境变量

服务器将在以下位置自动配置OAuth端点:

  • 授权: https://your-app.azurewebsites.net/auth/authorize
  • 令牌: https://your-app.azurewebsites.net/auth/token
  • 回拨: https://your-app.azurewebsites.net/auth/callback

部署到Azure

1.克隆存储库

git clone https://github.com/Sealjay/mcp-oura.git
cd mcp-oura

2.登录Azure

azd auth login

备注:如果使用政府云,请先配置azd:

azd config set cloud.name AzureUSGovernment
azd auth login

3.设置环境变量

在部署之前,请设置您的Oura API令牌和GitHub OAuth凭据:

azd env set OURA_API_TOKEN "your-oura-api-token-here"
azd env set GITHUB_CLIENT_ID "your-github-client-id"
azd env set GITHUB_CLIENT_SECRET "your-github-client-secret"

将占位符值替换为:

  • your-oura-api-token-here:上一步中的实际Oura API代币
  • your-github-client-id:GitHub OAuth应用程序中的客户端ID
  • your-github-client-secret:GitHub OAuth应用程序中的客户端密码

备注:The BASE_URL 将自动设置为您的Azure应用服务URL。如果您需要覆盖它,可以手动设置:

azd env set BASE_URL "https://your-custom-domain.com"

4.部署到Azure

azd up

此命令将:

  • 提示您输入环境名称(用作资源组的前缀)
  • 请求Azure位置和订阅
  • 构建您的应用程序
  • 提供Azure资源(应用服务、应用服务计划)
  • 部署应用程序代码

备注:第一次部署可能需要5-10分钟。

5.获取您的部署URL

部署完成后,azd将输出您的web应用程序URL。您还可以通过以下方式检索它:

azd env get-values | grep WEB_URI

使用MCP服务器

服务器作为MCP流式http服务器运行,位于 /mcp 终点。您可以使用任何兼容MCP的客户端连接到它。

MCP客户端示例

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

# Connect to your deployed server
async with stdio_client(StdioServerParameters(
    command="python",
    args=["-m", "httpx", "https://your-app.azurewebsites.net/mcp"],
)) as (read, write):
    async with ClientSession(read, write) as session:
        # Initialize the connection
        await session.initialize()
        
        # List available tools
        tools = await session.list_tools()
        print(f"Available tools: {tools}")
        
        # Call a tool
        result = await session.call_tool("get_daily_activity", {
            "start_date": "2024-01-01",
            "end_date": "2024-01-07"
        })
        print(result)

本地开发

设置

  1. 创建虚拟环境:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项:
pip install -r src/requirements.txt
  1. 设置环境变量:
export OURA_API_TOKEN="your-oura-api-token"
export GITHUB_CLIENT_ID="your-github-client-id"
export GITHUB_CLIENT_SECRET="your-github-client-secret"
export BASE_URL="http://localhost:8000"

备注:对于没有身份验证的本地开发,可以省略GitHub OAuth变量。如果未设置身份验证,服务器将在没有身份验证的情况下运行。

  1. 运行服务器:
cd src
python app.py

服务器将于启动 http://localhost:8000/mcp

本地测试

使用MCP兼容客户端连接到 http://localhost:8000/mcp 使用可流式传输的http。

保护您的部署

此部署包括 GitHub OAuth身份验证 默认情况下,当您配置GitHub OAuth环境变量时。这为您的MCP服务器提供了安全的访问控制。

身份验证设置

当您使用GitHub OAuth凭据进行部署时(如设置部分所述),服务器将:

  • 所有MCP工具访问都需要GitHub身份验证
  • 通过GitHub的API验证OAuth令牌
  • 在身份验证上下文中提供用户信息

其他安全选项

对于其他安全层,您还可以考虑:

  1. 虚拟网络:部署到虚拟网络并限制访问
  2. 托管身份:使用Azure托管身份安全访问Azure资源
  3. API管理:使用Azure API管理进行额外的速率限制和监控

无身份验证运行(仅限开发)

对于本地开发或测试,您可以通过不设置GitHub OAuth环境变量来运行服务器而无需身份验证。 不建议用于生产。

更新部署

更改后,使用以下命令重新部署:

azd deploy

成本考虑

默认情况下,此模板对应用程序服务使用F1(免费)层。免费套餐包括:

  • 10个免费应用
  • 1 GB磁盘空间
  • 165 MB RAM
  • 没有自定义域

对于生产用途或更高性能,请考虑升级到付费级别。看 Azure应用服务定价页面 了解详情。

要更改层,请编辑 infra/resources.bicep 第61行:

  • F1:免费套餐
  • D1:共享层(开发商折扣价)
  • B1:基本层(建议用于生产)

故障排除

部署问题

查看日志:

azd monitor --logs

或者通过Azure门户:

  1. 导航到您的应用程序服务
  2. 转到“日志流”或“诊断和解决问题”

API错误

  • 我们的API错误:验证您的 OURA_API_TOKEN 有效且未过期
  • 未返回数据:确保您的Oura Ring最近已同步
  • 连接问题:检查您的应用程序服务是否正在运行且可访问

身份验证错误

  • GitHub OAuth错误:验证您的GitHub OAuth应用程序凭据是否正确
  • 回调URL不匹配:确保GitHub OAuth应用程序中的授权回调URL与部署的URL匹配+ /auth/callback
  • 无效令牌GitHub OAuth令牌实时验证。确保您使用的是OAuth流中的有效令牌

资源

许可证

该项目根据MIT许可证获得许可。

贡献

该项目已存档,不再接受捐款。 如果你想继续开发,可以随意分叉存储库。