返回市场
呼啸-MCP

呼啸-MCP

作者:JedPattersonn6 星标更新:2025-10-28

项目介绍

Whoop MCP Server

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

在Railway上部署

功能

  • 全面概览 - 您的所有日常指标在一个调用中
  • 睡眠分析 - 深入了解睡眠表现和质量
  • 恢复指标 - 心率变异性(HRV)、静息心率(RHR)和恢复贡献者
  • 压力跟踪 - 日压力与心率区间和活动
  • 健康跨度 - 生物年龄和衰老速度指标

快速开始

  1. 克隆仓库:
git clone https://github.com/yourusername/whoop-mcp.git
cd whoop-mcp
  1. 创建包含您的WHOOP凭证的.env文件:
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
# 使用实际凭证编辑.env文件
  1. 构建Docker镜像:
docker build -t whoop-mcp .
  1. 运行容器:
docker run -d \
  --name whoop-mcp \
  whoop-mcp

--env-file .env标志会自动从您的.env文件加载所有环境变量。

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

Docker镜像是基于官方Bun Alpine镜像构建的。容器包括健康检查以监控服务器状态。

Smithery部署

此服务器配置为与Smithery平台一起工作,该平台用于部署MCP服务器。当在Smithery上部署时:

  1. 通过查询参数进行配置:Smithery作为查询参数传递您的凭证到/mcp端点(定义在smithery.yaml中):

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

  3. 部署按钮:使用上方的Railway部署按钮进行快速部署,或遵循Smithery文档进行其他部署选项。

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

配置

凭证配置

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

  1. 查询参数(由Smithery使用):作为查询参数传递到/mcp端点

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

变量名是否必需默认值描述
WHOOP_EMAIL-您的Whoop账户电子邮件
WHOOP_PASSWORD-您的Whoop账户密码
MCP_AUTH_TOKEN-可选的MCP请求身份验证令牌
PORT3000服务器端口

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

可选认证

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

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

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

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

客户端必须在授权头中包含令牌:

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

Windows:%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数据:

whoop_get_overview

检索特定日期的综合Whoop概览数据。

参数:

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

返回:

  • 周期信息:周期ID、天数、日期显示、睡眠状态
  • 实时指标:恢复分数、日压力、睡眠小时数、燃烧卡路里
  • 仪表盘:来自首页的所有评分仪表
  • 活动:今天的活动及其评分和时间
  • 关键统计数据:HRV、RHR、VO2最大值、呼吸频率、步数及其30天趋势
  • 日记:日记完成情况

示例用法:

"你能检查一下我今天的Whoop数据吗?"
"2024年1月15日我的恢复分数是多少?"
"给我看看昨天的Whoop统计数据"
"我走了多少步,今天的活动是什么?"

whoop_get_sleep

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

参数:

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

返回:

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

示例用法:

"我昨晚睡得怎么样?"
"10月27日的睡眠表现如何?"
"为什么我今天的睡眠分数这么低?"

whoop_get_recovery

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

参数:

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

返回:

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

示例用法:

"我今天的恢复分数是多少?"
"给我看看昨天的恢复分析"
"我的HRV趋势与基线相比如何?"

whoop_get_strain

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

参数:

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

返回:

  • 压力分数及其目标和最佳范围
  • 压力贡献者:
    • 心率区间1-3
    • 心率区间4-5
    • 强度活动时间
    • 步数
  • 今天的活动及其单独的压力分数
  • 趋势指标对比30天基线
  • 个性化教练见解

示例用法:

"我今天的压力分数是多少?"
"给我看看我的压力分析和活动"
"我在心率区间4-5的时间有多长?"
"我是否达到了最佳压力目标?"

whoop_get_healthspan

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

参数:

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

返回:

  • WHOOP年龄(生物年龄)
  • 年龄状态(较年轻、相同、较老于实际年龄)
  • 与实际年龄的年份差异
  • 衰老速度(例如,0.5x表示比平均速度慢)
  • 与前一时期的比较
  • 健康跨度测量的周日期范围

示例用法:

"我的WHOOP年龄是多少?"
"给我看看我的生物年龄和健康跨度数据"
"我与平均速度相比的衰老速度如何?"
"我是在比实际年龄更快还是更慢地衰老?"

工作原理

服务器自动处理认证:

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

安全性

最佳实践

  • 永远不要提交您的.env文件或分享您的WHOOP凭证
  • 服务器仅在内存中存储Whoop认证令牌(它们在24小时后过期)
  • **使用MCP_AUTH_TOKEN**当暴露服务器到网络或不受信任的客户端时
  • MCP_AUTH_TOKEN生成强随机令牌(例如,使用openssl rand -hex 32
  • 当在生产环境中运行或在网络中运行时,始终设置MCP_AUTH_TOKEN

贡献

欢迎贡献!请随时提交Pull Request。

许可证

MIT - 详情见LICENSE文件