内容
# whoop-mcp
适用于 [Whoop API](https://developer.whoop.com) 的 MCP(模型上下文协议)服务器。连接您的 Whoop 健康数据 — 恢复、睡眠、锻炼、生理周期和个人资料 — 到任何与 MCP 兼容的 AI 工具。
## 前置条件
- Node.js 18+
- 具有 OAuth 应用的 [Whoop 开发者账户](https://developer.whoop.com)
## 设置
### 1. 创建 Whoop OAuth 应用
1. 前往 [developer.whoop.com](https://developer.whoop.com) 并创建账户
2. 创建新应用
3. 添加 `http://localhost:3000/callback` 作为重定向 URI
4. 复制您的 **客户端 ID** 和 **客户端密钥**
### 2. 安装和构建
```bash
npm install
npm run build
```
### 3. 配置您的 AI 工具
MCP 服务器命令与您使用的工具无关:
```
命令:node
参数:
- /绝对路径/to/whoop-mcp/dist/index.js
环境变量:
WHOOP_CLIENT_ID: 您的客户端 ID
WHOOP_CLIENT_SECRET: 您的客户端密钥
```
将 `/绝对路径/to/whoop-mcp` 替换为实际保存该项目的位置。
#### Claude Desktop
编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/绝对路径/to/whoop-mcp/dist/index.js"],
"env": {
"WHOOP_CLIENT_ID": "您的客户端 ID",
"WHOOP_CLIENT_SECRET": "您的客户端密钥"
}
}
}
}
```
#### Cursor
编辑项目根目录下的 `.cursor/mcp.json`(或全局的 `~/.cursor/mcp.json`):
```json
{
"mcpServers": {
"whoop": {
"command": "node",
"args": ["/绝对路径/to/whoop-mcp/dist/index.js"],
"env": {
"WHOOP_CLIENT_ID": "您的客户端 ID",
"WHOOP_CLIENT_SECRET": "您的客户端密钥"
}
}
}
}
```
#### ChatGPT Desktop
ChatGPT Desktop 支持 MCP 服务器。通过 **设置 → 工具 → MCP 服务器** 添加服务器,使用上述相同的命令和参数。
#### 其他与 MCP 兼容的工具
该服务器适用于任何支持 MCP stdio 传输的工具:**Windsurf**、**Zed**、**Cline**、**Continue** 等。参考您所用工具的文档,了解如何添加 MCP 服务器配置 — 所有工具的命令和参数都相同。
### 4. 授权
首次使用时,服务器将:
1. 打开您的浏览器,前往 Whoop 授权页面
2. 要求您登录并授予访问权限
3. 将令牌保存到 `~/.config/whoop-mcp/tokens.json`
令牌会自动刷新 — 您只需授权一次。
## 可用工具
| 工具 | 描述 |
|------|-------------|
| `get_profile` | 您的 Whoop 用户个人资料(姓名、电子邮件) |
| `get_body_measurements` | 身高、体重、最大心率 |
| `get_cycles` | 具有应激评分的生理周期 |
| `get_cycle` | 按 ID 获取单个周期 |
| `get_recovery_collection` | 具有 HRV、RHR、SpO2 的恢复评分 |
| `get_recovery` | 按 ID 获取单个恢复 |
| `get_sleep_collection` | 睡眠活动,包含阶段细分 |
| `get_sleep` | 按 ID 获取单个睡眠活动 |
| `get_workout_collection` | 具有应激和心率区的锻炼 |
| `get_workout` | 按 ID 获取单个锻炼 |
集合工具接受可选的 `limit`、`start`、`end`(ISO 8601)和 `nextToken` 参数,用于过滤和分页。
## 示例提示
- *"本周我的恢复评分是多少?*"
- *"昨晚我睡得怎么样?*"
- *"显示我最近 5 次锻炼*"
- *"过去一个月我的平均 HRV 是多少?*"