健身数据协议服务器

一个用于访问Whoop健身数据的模型上下文协议(MCP)服务器,可将WHOOP生物识别数据集成到Claude、LLMs和其他MCP兼容应用中。

  • by JedPattersonn
  • TypeScript
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 JedPattersonn/whoop-mcp

使用说明

Whoop MCP服务器

用于访问Whoop健身数据的模型上下文协议(MCP)服务器。将您的WHOOP生物特征数据集成到Claude、LLM和其他MCP兼容应用程序中。

特性

  • 综合概述 -您的所有日常指标都在一次通话中
  • 睡眠分析 -深入了解睡眠表现和质量
  • 恢复指标 -HRV、RHR和恢复贡献者
  • 应变追踪 -心率区域和活动导致的日间疲劳
  • 健康跨度 -生物年龄和衰老速度指标

快速开始

  1. 克隆存储库:
git clone https://github.com/yourusername/whoop-mcp.git
cd whoop-mcp
  1. 创建一个 .env 使用您的WHOOP凭据进行归档:
echo "WHOOP_EMAIL=your-email@example.com" > .env
echo "WHOOP_PASSWORD=your-password" >> .env
echo "PORT=3000" >> .env

或者设置为环境变量:

export WHOOP_EMAIL='your-email@example.com'
export WHOOP_PASSWORD='your-password'
  1. 安装依赖项:
bun install
  1. 启动服务器:
bun run start

或者用于热重载开发:

bun run dev

服务器将在上运行 http://localhost:3000/mcp 默认情况下。

Docker部署

  1. 创建一个 .env 使用您的凭据文件:
cp .env.example .env
# Edit .env with your actual credentials
  1. 构建Docker镜像:
docker build -t whoop-mcp .
  1. 运行容器:
docker run -d \
  --name whoop-mcp \
  whoop-mcp

这 --env-file .env flag会自动从您的 .env 文件。

  1. 查看日志:
docker logs -f whoop-mcp
  1. 停止容器:
docker stop whoop-mcp

Docker镜像基于Bun Alpine官方镜像。容器包括用于监视服务器状态的健康检查。

Smithery部署

此服务器配置为与 史密瑟里,一个用于部署MCP服务器的平台。在Smithery部署时:

  1. 通过查询参数进行配置:Smithery将您的凭据作为查询参数传递给 /mcp 端点(定义于 smithery.yaml):

    • whoopEmail -您的Whoop帐户电子邮件
    • whoopPassword -您的Whoop帐户密码
    • mcpAuthToken -可选身份验证令牌
  2. 自动配置:在Smithery上运行时,服务器会自动从查询参数中提取这些参数,因此您不需要手动设置环境变量。

  3. 部署按钮:使用上面的铁路部署按钮进行快速部署,或按照以下步骤操作 Smithery的文件 其他部署选项。

这 smithery.yaml 存储库根目录中的文件定义了Smithery用于安全收集凭据的配置模式。

配置

凭据配置

服务器支持两种提供凭据的方法:

  1. 查询参数 (Smithery使用):将凭据作为查询参数传递给 /mcp 端点

    • whoopEmail -您的Whoop帐户电子邮件
    • whoopPassword -您的Whoop帐户密码
    • mcpAuthToken -可选身份验证令牌
  2. 环境变量 (用于本地/Docker部署):

变量 必填 默认 描述
WHOOP_EMAIL 是 - 您的Whoop帐户电子邮件
WHOOP_PASSWORD 是 - 您的Whoop帐户密码
MCP_AUTH_TOKEN 否 - MCP请求的可选身份验证令牌
PORT 无 3000 服务器端口

服务器将首先检查查询参数,如果没有提供,则回退到环境变量。

可选身份验证

为了保护您的MCP服务器免受未经授权的访问,您可以设置 MCP_AUTH_TOKEN 环境变量。设置后,对的所有请求 /mcp 端点必须包含匹配的Bearer令牌:

export MCP_AUTH_TOKEN='your-secret-token-here'

或者将其添加到您的 .env 文件:

echo "MCP_AUTH_TOKEN=your-secret-token-here" >> .env

然后,客户端必须在Authorization标头中包含令牌:

curl -X POST http://localhost:3000/mcp \
  -H "Authorization: Bearer your-secret-token-here" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

注: 如果 MCP_AUTH_TOKEN 如果未设置,服务器将接受所有请求(对本地开发有用)。

与Claude Desktop一起使用

将此配置添加到您的Claude Desktop配置文件中:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

视窗: %APPDATA%/Claude/claude_desktop_config.json

无身份验证(本地开发)

{
  "mcpServers": {
    "whoop": {
      "command": "bun",
      "args": ["run", "/absolute/path/to/whoop-mcp/index.ts"],
      "env": {
        "WHOOP_EMAIL": "your-email@example.com",
        "WHOOP_PASSWORD": "your-password"
      }
    }
  }
}

带身份验证(推荐)

{
  "mcpServers": {
    "whoop": {
      "command": "bun",
      "args": ["run", "/absolute/path/to/whoop-mcp/index.ts"],
      "env": {
        "WHOOP_EMAIL": "your-email@example.com",
        "WHOOP_PASSWORD": "your-password",
        "MCP_AUTH_TOKEN": "your-secret-token-here"
      }
    }
  }
}

替换 /absolute/path/to/whoop-mcp/ 此目录的实际路径。

可用工具

服务器提供五个主要工具来访问您的Whoop数据:

hub_get_概述

在单个API调用中检索特定日期的全面Whoop概览数据。

参数:

  • date (可选)-YYYY-MM-DD格式的日期。默认为今天。

退货:

  • 循环信息:周期ID、日期、日期显示、睡眠状态
  • 实时指标:恢复评分、日间疲劳、睡眠时间、消耗的卡路里
  • 仪表:主屏幕上的所有得分仪
  • 活动:今天的活动有分数和次数
  • 关键统计数据:心率变异性、相对心率、最大摄氧量、呼吸频率、30天趋势步数
  • 期刊:日记账完成状态

示例用法:

"Can you check my Whoop data for today?"
"What was my recovery score on 2024-01-15?"
"Show me my Whoop stats from yesterday"
"How many steps did I take and what were my activities today?"

呼_睡眠

检索详细的睡眠分析和性能指标。

参数:

  • date (可选)-YYYY-MM-DD格式的日期。默认为今天。

退货:

  • 睡眠表现评分
  • 小时数与所需时间
  • 睡眠一致性
  • 睡眠效率
  • 高睡眠压力百分比
  • 个性化见解和建议

示例用法:

"How did I sleep last night?"
"What's my sleep performance for October 27?"
"Why is my sleep score low today?"

呼_ get恢复

检索全面的恢复深度分析,包括贡献者和趋势。

参数:

  • date (可选)-YYYY-MM-DD格式的日期。默认为今天。

退货:

  • 恢复分数(0-100%)
  • 恢复贡献者:
    • 心率变异性
    • 静息心率(RHR)
    • 呼吸频率
    • 睡眠性能
  • 趋势指标与30天基线
  • 个性化教练见解

示例用法:

"What's my recovery score today?"
"Show me my recovery analysis for yesterday"
"How is my HRV trending compared to my baseline?"

百日咳杆菌

检索全面的应变深度分析,包括贡献者、活动和趋势。

参数:

  • date (可选)-YYYY-MM-DD格式的日期。默认为今天。

退货:

  • 带有目标和最佳范围的应变评分
  • 压力因素:
    • 心率1-3区
    • 心率4-5区
    • 力量活动时间
    • 步骤
  • 今天的活动有个人压力评分
  • 趋势指标与30天基线
  • 个性化教练见解

示例用法:

"What's my strain score today?"
"Show me my strain analysis and activities"
"How much time did I spend in heart rate zones 4-5?"
"Did I reach my optimal strain target?"

hub_get-healthspan

检索全面的健康范围分析,包括WHOOP年龄(生物年龄)和衰老速度指标。

参数:

  • date (可选)-YYYY-MM-DD格式的日期。默认为今天。

退货:

  • WHOOP年龄(生物年龄)
  • 年龄状态(年轻、相同、年长与实际年龄)
  • 与实际年龄相差的年份
  • 衰老速度(例如,0.5x=衰老速度低于平均水平)
  • 与上期比较
  • 健康跨度测量的每周日期范围

示例用法:

"What's my WHOOP Age?"
"Show me my biological age and healthspan data"
"How fast am I aging compared to average?"
"Am I aging slower or faster than my chronological age?"

运作原理

服务器自动处理身份验证:

  1. 首次请求时使用您的电子邮件/密码登录
  2. 存储访问令牌(24小时有效)
  3. 在令牌过期之前自动重新进行身份验证
  4. 重新身份验证后重试失败的请求

安全

最佳实践

  • 永不承诺 你的 .env 归档或共享您的WHOOP凭据
  • 服务器仅在内存中存储Whoop身份验证令牌(24小时后过期)
  • 使用 MCP_AUTH_TOKEN 将服务器暴露给网络或不受信任的客户端时
  • 为生成强随机令牌 MCP_AUTH_TOKEN (例如,使用 openssl rand -hex 32)
  • 当在生产中或网络上运行时, 总是 集 MCP_AUTH_TOKEN

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT-有关详细信息,请参阅LICENSE文件