一个用于访问Whoop健身数据的模型上下文协议(MCP)服务器。将您的WHOOP生物识别数据集成到Claude、LLMs和其他兼容MCP的应用程序中。
git clone https://github.com/yourusername/whoop-mcp.git
cd whoop-mcp
.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'
bun install
bun run start
或用于开发并支持热重载:
bun run dev
默认情况下,服务器将在http://localhost:3000/mcp运行。
.env文件:cp .env.example .env
# 使用实际凭证编辑.env文件
docker build -t whoop-mcp .
docker run -d \
--name whoop-mcp \
whoop-mcp
--env-file .env标志会自动从您的.env文件加载所有环境变量。
docker logs -f whoop-mcp
docker stop whoop-mcp
Docker镜像是基于官方Bun Alpine镜像构建的。容器包括健康检查以监控服务器状态。
此服务器配置为与Smithery平台一起工作,该平台用于部署MCP服务器。当在Smithery上部署时:
通过查询参数进行配置:Smithery作为查询参数传递您的凭证到/mcp端点(定义在smithery.yaml中):
whoopEmail - 您的Whoop账户电子邮件whoopPassword - 您的Whoop账户密码mcpAuthToken - 可选的身份验证令牌自动配置:当在Smithery上运行时,服务器会自动从查询参数中提取这些信息,因此您不需要手动设置环境变量。
部署按钮:使用上方的Railway部署按钮进行快速部署,或遵循Smithery文档进行其他部署选项。
存储库根目录中的smithery.yaml文件定义了Smithery用来安全收集您的凭证的配置模式。
服务器支持两种提供凭证的方法:
查询参数(由Smithery使用):作为查询参数传递到/mcp端点
whoopEmail - 您的Whoop账户电子邮件whoopPassword - 您的Whoop账户密码mcpAuthToken - 可选的身份验证令牌环境变量(用于本地/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
客户端必须在授权头中包含令牌:
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配置文件中:
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概览数据。
参数:
date(可选) - 格式为YYYY-MM-DD的日期,默认为今天。返回:
示例用法:
"你能检查一下我今天的Whoop数据吗?"
"2024年1月15日我的恢复分数是多少?"
"给我看看昨天的Whoop统计数据"
"我走了多少步,今天的活动是什么?"
检索详细的睡眠分析和性能指标。
参数:
date(可选) - 格式为YYYY-MM-DD的日期,默认为今天。返回:
示例用法:
"我昨晚睡得怎么样?"
"10月27日的睡眠表现如何?"
"为什么我今天的睡眠分数这么低?"
检索全面的恢复深度分析,包括贡献者和趋势。
参数:
date(可选) - 格式为YYYY-MM-DD的日期,默认为今天。返回:
示例用法:
"我今天的恢复分数是多少?"
"给我看看昨天的恢复分析"
"我的HRV趋势与基线相比如何?"
检索全面的压力深度分析,包括贡献者、活动和趋势。
参数:
date(可选) - 格式为YYYY-MM-DD的日期,默认为今天。返回:
示例用法:
"我今天的压力分数是多少?"
"给我看看我的压力分析和活动"
"我在心率区间4-5的时间有多长?"
"我是否达到了最佳压力目标?"
检索全面的健康跨度分析,包括WHOOP年龄(生物年龄)和衰老速度指标。
参数:
date(可选) - 格式为YYYY-MM-DD的日期,默认为今天。返回:
示例用法:
"我的WHOOP年龄是多少?"
"给我看看我的生物年龄和健康跨度数据"
"我与平均速度相比的衰老速度如何?"
"我是在比实际年龄更快还是更慢地衰老?"
服务器自动处理认证:
.env文件或分享您的WHOOP凭证MCP_AUTH_TOKEN**当暴露服务器到网络或不受信任的客户端时MCP_AUTH_TOKEN生成强随机令牌(例如,使用openssl rand -hex 32)MCP_AUTH_TOKEN欢迎贡献!请随时提交Pull Request。
MIT - 详情见LICENSE文件