WHOOP数据连接服务

一个连接LLM与WHOOP健康数据的MCP服务器,提供恢复、睡眠、锻炼、压力等多维度数据分析功能。

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

使用说明

哎呀,mcp

将LLM连接到您的MCP服务器 呐喊 数据——恢复、睡眠、锻炼、压力等等。

建于 FastMCP 和那个 世界卫生组织API v2.

备注:WHOOP开发者应用程序仅限于10名授权用户。

先决条件

  1. 拥有您账户数据的WHOOP会员资格
  2. WHOOP开发人员应用程序——在 developer-dashboard.whoop.com
  3. Python 3.10+和 紫外线

安装

git clone https://github.com/anaselmhamdi/whoop-mcp.git
cd whoop-mcp
uv sync

用法

远程(推荐)

部署时,服务器使用FastMCP的OAuthProxy。只需将URL添加到MCP客户端即可——身份验证通过WHOOP的OAuth流自动进行。

克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "whoop": {
      "type": "http",
      "url": "https://your-app.fly.dev/mcp/"
    }
  }
}

首次连接时,您的浏览器将打开WHOOP登录。授权后,工具立即可用。

本地

对于本地使用(stdio模式),请在 .env 文件:

cp .env.example .env
# Fill in WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET, WHOOP_ACCESS_TOKEN, WHOOP_REFRESH_TOKEN
uv run whoop-mcp

令牌自动刷新——当访问令牌过期时,客户端使用刷新令牌获取新的令牌,并将这两个令牌持久化回 .env.

克劳德桌面 (本地):

{
  "mcpServers": {
    "whoop": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/whoop-mcp", "whoop-mcp"]
    }
  }
}

使用MCP检查员进行测试

uv run fastmcp dev src/whoop_mcp/server.py

可用工具

工具 说明
get_profile 获取用户资料(姓名、电子邮件)
get_body_measurement 获取身体测量值(身高、体重、最大心率)
get_cycles 列出有压力和心率的生理周期
get_cycle_by_id 按ID获取单个周期
get_recovery_collection 列出恢复分数(恢复百分比、HRV、RHR、SpO2)
get_recovery_by_id 获取单个恢复记录
get_sleep_collection 列出睡眠记录(阶段、表现、呼吸频率)
get_sleep_by_id 获取一个睡眠记录
get_workout_collection 列出训练(压力、心率区、距离)
get_workout_by_id 进行一次锻炼

列表工具接受可选参数:

  • start --要从中筛选的ISO-8601日期时间(例如。 2024-01-01T00:00:00.000Z)
  • end --ISO-8601日期时间要过滤到
  • limit --要返回的最大记录数

部署

Fly.io

  1. 安装 flyctl
  2. 创建应用程序:
    fly launch --no-deploy
    
  3. 设置秘密:
    cat .env | fly secrets import
    
  4. 将您的Fly.io应用程序URL作为重定向URI添加到 WHOOP开发人员仪表板:
    https://your-app.fly.dev/auth/callback
    
  5. 部署:
    fly deploy
    

CI/CD

GitHub操作工作流(.github/workflows/deploy.yml)推送时自动部署 main。要设置它,请执行以下操作:

  1. 获取Fly.io部署令牌:
    fly tokens create deploy -x 999999h
    
  2. 添加为 FLY_API_TOKEN 在GitHub仓库的机密中(设置>机密>操作)

发展

uv sync              # Install dependencies
uv run pytest        # Run tests
uv run pytest -v     # Run tests with output

许可证

麻省理工学院