使用说明
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_dateYYYY-MM-DD格式的参数 - 例子:
fetch("sleep", "2024-01-01", "2024-01-07")
- 支持数据类型:
-
search:使用自然语言查询搜索Oura数据(遵循OpenAI MCP搜索规范)- 根据您的搜索查询智能地确定要查询的数据源
- 接受可选
start_date和end_dateYYYY-MM-DD格式的参数 - 示例:
search("sleep quality last week")search("activity and steps yesterday")search("readiness score")
先决条件
- Azure开发者命令行界面(azd)
- Python 3.11+
- Oura API个人访问令牌
- GitHub OAuth应用程序 (用于身份验证)
- Azure订阅
获取您的Oura API代币
- 访问 Oura Cloud个人访问令牌
- 使用您的Oura帐户登录
- 点击“创建新的个人访问令牌”
- 给它起个名字,然后单击“创建”
- 复制令牌-部署时需要它
设置GitHub OAuth身份验证
此服务器使用GitHub OAuth来保护对FastMCP服务器的访问。按照以下步骤创建GitHub OAuth应用程序:
1.创建GitHub OAuth应用程序
- 首选 GitHub开发人员设置
- 点击左侧边栏中的“OAuth Apps”
- 点击“新建OAuth应用程序”
- 填写申请详情:
- 应用程序名称:
mcp-oura(或您喜欢的名字) - 主页网址:您的Azure应用服务URL(例如。,
https://web-abc123.azurewebsites.net) - 授权回调URL:您的Azure应用服务URL+
/auth/callback(例如。,https://web-abc123.azurewebsites.net/auth/callback)
- 应用程序名称:
- 点击“注册申请”
- 在应用程序详细信息页面上:
- 复制 客户端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应用程序中的客户端IDyour-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)
本地开发
设置
- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- 安装依赖项:
pip install -r src/requirements.txt
- 设置环境变量:
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变量。如果未设置身份验证,服务器将在没有身份验证的情况下运行。
- 运行服务器:
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令牌
- 在身份验证上下文中提供用户信息
其他安全选项
对于其他安全层,您还可以考虑:
- 虚拟网络:部署到虚拟网络并限制访问
- 托管身份:使用Azure托管身份安全访问Azure资源
- 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门户:
- 导航到您的应用程序服务
- 转到“日志流”或“诊断和解决问题”
API错误
- 我们的API错误:验证您的
OURA_API_TOKEN有效且未过期 - 未返回数据:确保您的Oura Ring最近已同步
- 连接问题:检查您的应用程序服务是否正在运行且可访问
身份验证错误
- GitHub OAuth错误:验证您的GitHub OAuth应用程序凭据是否正确
- 回调URL不匹配:确保GitHub OAuth应用程序中的授权回调URL与部署的URL匹配+
/auth/callback - 无效令牌GitHub OAuth令牌实时验证。确保您使用的是OAuth流中的有效令牌
资源
许可证
该项目根据MIT许可证获得许可。
贡献
该项目已存档,不再接受捐款。 如果你想继续开发,可以随意分叉存储库。