WHOOP健康数据查询服务

一个基于Model Context Protocol (MCP)的服务,提供对WHOOP API的访问,允许AI助手查询用户的周期、恢复、睡眠、运动和健康数据。

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

使用说明

WHOOP MCP服务器

(非官方)

模型上下文协议(MCP)服务器,提供对WHOOP API的访问,允许Claude Code、Cursor等人工智能助手查询您的周期、恢复、睡眠、紧张和锻炼数据。

最初灵感来自 ctvidic/hop-mcp服务器

快速开始

1.安装依赖项

# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone and install
git clone https://github.com/0ptim/whoop-mcp-server.git
cd whoop-mcp-server
uv sync

# Optional: Install dev dependencies (for contributing)
uv sync --all-extras
uv run pre-commit install  # Sets up pre-commit hooks

2.获取WHOOP API证书

  1. 首选 WHOOP开发人员仪表板
  2. 接受API使用条款
  3. 创建一个团队(任何名字都可以)
  4. 点击 “创建应用程序”:
    • 姓名: MCP (或任何名称)
    • 联系人: 您的电子邮件
    • 隐私政策URL: https://example.com (未针对个人应用程序进行验证)
    • 重定向URL: http://localhost:1234
    • 范围: 全选
  5. 点击 “创建应用程序” 并复制您的 客户端ID 和 客户端密钥

3.配置服务器

# Copy the example config
cp config/whoop_config.example.json config/whoop_config.json

编辑 config/whoop_config.json 并填写您的凭据:

{
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET",
  "redirect_uri": "http://localhost:1234"
}

4.通过WHOOP进行身份验证

运行身份验证脚本以完成OAuth流程:

uv run python src/test_auth.py

浏览器将为您打开以授权该应用程序。授权后,复制整个重定向URL并将其粘贴回终端。您的令牌将被保存以备将来使用。

5.配置您的MCP客户端

由于这因客户而异,请参阅客户的文档。

{
  "servers": {
    "WHOOP": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/whoop-mcp-server",
        "run",
        "python",
        "src/whoop_server.py"
      ]
    }
  }
}

注: 替换 /ABSOLUTE/PATH/TO/whoop-mcp-server 带有此克隆存储库的实际路径。

可用工具

连接后,您的代理可以使用这些工具查询您的WHOOP数据:

用户数据

  • get_user_profile -获取您的个人资料信息
  • get_user_body_measurements -获取身高、体重和最大心率

健康摘要

  • get_health_summary(days) - 推荐用于健康分析! 结合恢复(评分、HRV、RHR)、睡眠(小时数、表现、效率)和压力数据,获取全面的每日总结

详细数据

  • get_recoveries(days) -获取HRV、RHR、恢复评分、SpO2和皮肤温度的恢复条目
  • get_sleeps(days) -获得睡眠记录,包括阶段分解、效率和呼吸频率
  • get_cycles(days) -获取包含压力评分、心率和卡路里的周期数据
  • get_workouts(days, sport?) -获取锻炼,可选择按运动进行筛选(例如,“跑步”、“举重”)

平均值

  • get_average_strain(days) -计算一段时间内的平均应变
  • get_average_sleep_hours(days) -计算平均睡眠时间

故障排除

身份验证问题

  1. 删除 config/.whoop_token.json 并重新运行 uv run python src/test_auth.py
  2. 确保WHOOP开发人员仪表板中的重定向URI匹配 http://localhost:1234

令牌已过期

令牌会自动刷新,但如果问题仍然存在:

rm config/.whoop_token.json
uv run python src/test_auth.py

发展

代码质量工具

本项目使用现代Python工具(2026年最佳实践):

  • 拉夫 -超快linter AND格式化器(取代Black、Flake8、isort、pyupgrade)
  • MyPy 的 -类型检查
  • 预提交挂钩 -每次提交前自动检查
# Format code
uv run ruff format src/

# Lint and auto-fix issues
uv run ruff check src/ --fix

# Type check
uv run mypy src/

# Setup pre-commit hooks (auto-runs all checks on commit)
uv run pre-commit install

测试

使用pytest运行测试:

# Run all tests
uv run pytest

# Run only integration tests (requires valid WHOOP token)
uv run pytest -m integration

# Run only unit tests (no API connection needed)
uv run pytest -m "not integration"

许可证

MIT许可证-有关详细信息,请参阅许可证文件。