内容
op-mcp
[](https://github.com/colesmcintosh/whoop-mcp/actions/workflows/ci.yml)
[](./LICENSE)
[](https://railway.com/newtemplate=https:///colesmcintosh/whoop-mcp)
一款适用于 [Model Context Protocol](https://modelcontextprotocol.io) 的服务器,针对 [Whoop API v2](https://developer.whoop.com/),使用TypeScript和[Bun](https://bun编写。
作为MCP工具公开恢复、睡眠、周期、锻炼、个人资料和身体测量。 它是单租户的:您op开发者应用,自己授权,服务器读取您的Whoop数据共享托管或每用户登录系统。
## 设置
### 1一个Whoop应用
在 <https://developer-dashboard.whoop/create> 登录。
- **名称**:任意(`whocp` 即可)。
- **联系方式**:您的电子邮件 **隐私政策网址**:链接到您的仓库或托管的隐私页面。
- **重定向网址**:`http://localhost:8080/oauth/callback`。
- **作用域**:启用 `read:profile`、`read:body_measurement`、`read:cycles`、`read:recovery`、`read:sleep`、`read:workout`。(`offline` 由客户端在OAuth时请求,仪表盘上不可配置。)
复制 **客户端ID** 和 **客户端密钥**。
### 2. 授权一次
```sh
git clone https://github.com/colesmcintosh/whoop-mcp.git
cd whocp
bun install
export_CLIENT_ID=...
export WHOOP_CLIENT_SECRET= src/cli/whoop-auth.ts 打开您的浏览器,PKCE流程,保存令牌
```
保存到 `~/.hoop-mcp/token.json`(或 `WHOOP_TOKEN_FILE` 指向之后会自动刷新。
### 3. 注册MCP服务器
```claude mcp add \
--env WHOOP_CLIENT_ID=$WHOOP_CLIENT_ID --env WHOOP_CLIENT_SECRET=$WHOOP_CLIENT_SECRET \
-- bun $PWD/src/cli/whocp.ts
```
任何子进程(stdio传输)的M都以相同的方式工作。 询问它类似“我的情况如何?”
## (可选)
`whoop-mcp` 也可以作为单HTTP服务器运行 - Whoop账户,只是可以通过,而不是作为子进程启动(适用于无法启动本地进程的客户端另一台设备访问)。 设置 `PORT`(或 `MCP_HTTP_ADDR`)和一个承载令`MCP_AUTH_TOKEN该令牌控制 `/mcp` 端点:
```export MCP_AUTH_TOKEN=$(opensslhex 32)
export8080
bun src/cliop-mcp.ts
客户端中,将地址http://localhost:8080/mcp`, `Authorization: Bearer $MCP_AUTH_TOKEN` 头。参见 [.md](./DEPLOY.md如何在 Railway 或部署此应用,包括如何在上初始化令牌存储 公开的工具
| 工具 | Whoop 端点 |
| --- |
| `` | `GET //user/profile/basic` |
| `get_body_measurement` | `GET /v2/user/measurement/body` |
| `list_cycles`GET /v2/cycle` |
| `get_cycle` | `GET /v2/cycle/{id}` |
| `get_cycle_recovery` | `GET /v2/cycle/{id}/recovery` |
| `get_cycle_sleep` | `GET /vycle/{id}/sleep` |
| `list_recovery` | `GET /v2/re |
| `list_sleep`GET /v2/activity` |
| `get_sleep` | `GET /v2/activity/sleep/{id}` |
| `list_workouts` | `GET /v2/activity/workout` |
| `get_workout` | `GET /v2/activity/workout/{id}` |
列表端点接受 `limit`(1-25)、`start`/`end`(RFC3339)和 `next_token` 进行分页。
## 环境变量
| 环境变量 | 是否必填 | 用途 |
| --- | --- | --- |
| `WHOOP_CLIENT_ID` | 是 | 来自Whoop仪表盘。 |
| `WHOOP_CLIENT_SECRET` | 是 | 来自Whoop仪表盘。 |
| `WHOOP_REDIRECT_URI` | 否 | 仅op-auth` 使用。默认为 `http://localhost:8080/oauth/callback`;localhost`/`127.0.1`。 |
WHOOP_TOKEN_FILE` 覆盖本地令牌路径。默认为平台配置目录(例如 `~/.config/whoop-m.json`),或中的 `/data/token.json |
| `PORT` /CP_HTTP_ADDR` | 设置其中一个以HTTP模式运行,而不是stdio。 如果两者,则 `MCP_HTTP_ADDR优先。 |
| `_AUTH_TOKEN` | 是模式下 | 每个 `/mcp` 请求所需的Bearer令 |
| `WHOOP_TOKEN` | 否 | 在下(例如新的Docker首次启动时初始化令。 参见 [DEPLOY.md](./DEPLOY.md)。 |
## 布局
```
src/cli/ whoop-mcp(HTTP入口点),whoop-auth(本地OAuth启动)
src OAuth+PKCE令牌存储,自动牌源
src/whoop/ Whoop API v客户端
src/mcp/ MCP工具注册
src 单租户HTTP传输Bearer令牌保护的,/healthz)
```
## 开发
```sh
bun test
bun run
bun run lint
-t whoop-m```
## 安全
参见CURITY.md](./SECURITY简而言之:
- `MCP_AUTH_TOKEN` **是** HTTP模式下的凭证 -密码一样对待它。 启动失败如果没有它。
-使用PKCE; `who` 只接受本地重- 令牌文件以 `0600` 权限写入。
许可证
[MIT)。 不隶属于WHO Inc. - “Who仅作为该连接器API的名义引用。