Model Context Protocol server giving Claude (or any MCP client) full read + write access to your Whoop fitness data via the private reverse-engineered iOS API. 55 tools: recovery, sleep, strain, HRV trends, Strength Trainer, journal, Whoop Coach, and smart alarm.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add totem --env WHOOP_IOS_BEARER_TOKEN='<WHOOP_IOS_BEARER_TOKEN>' --env WHOOP_COGNITO_REFRESH_TOKEN='<WHOOP_COGNITO_REFRESH_TOKEN>' --env WHOOP_EMAIL='<WHOOP_EMAIL>' -- npx -y @briangaoo/totem~/.codex/config.toml
[mcp_servers.totem]
command = "npx"
args = ["-y", "@briangaoo/totem"]
env = { WHOOP_IOS_BEARER_TOKEN = "<WHOOP_IOS_BEARER_TOKEN>", WHOOP_COGNITO_REFRESH_TOKEN = "<WHOOP_COGNITO_REFRESH_TOKEN>", WHOOP_EMAIL = "<WHOOP_EMAIL>" }
# codex mcp add totem --env WHOOP_IOS_BEARER_TOKEN='<WHOOP_IOS_BEARER_TOKEN>' --env WHOOP_COGNITO_REFRESH_TOKEN='<WHOOP_COGNITO_REFRESH_TOKEN>' --env WHOOP_EMAIL='<WHOOP_EMAIL>' -- npx -y @briangaoo/totem~/.cursor/mcp.json
{
"mcpServers": {
"totem": {
"command": "npx",
"args": [
"-y",
"@briangaoo/totem"
],
"env": {
"WHOOP_IOS_BEARER_TOKEN": "<WHOOP_IOS_BEARER_TOKEN>",
"WHOOP_COGNITO_REFRESH_TOKEN": "<WHOOP_COGNITO_REFRESH_TOKEN>",
"WHOOP_EMAIL": "<WHOOP_EMAIL>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"totem": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@briangaoo/totem"
],
"env": {
"WHOOP_IOS_BEARER_TOKEN": "<WHOOP_IOS_BEARER_TOKEN>",
"WHOOP_COGNITO_REFRESH_TOKEN": "<WHOOP_COGNITO_REFRESH_TOKEN>",
"WHOOP_EMAIL": "<WHOOP_EMAIL>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"totem": {
"command": "npx",
"args": [
"-y",
"@briangaoo/totem"
],
"env": {
"WHOOP_IOS_BEARER_TOKEN": "<WHOOP_IOS_BEARER_TOKEN>",
"WHOOP_COGNITO_REFRESH_TOKEN": "<WHOOP_COGNITO_REFRESH_TOKEN>",
"WHOOP_EMAIL": "<WHOOP_EMAIL>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"totem": {
"command": "npx",
"args": [
"-y",
"@briangaoo/totem"
],
"env": {
"WHOOP_IOS_BEARER_TOKEN": "<WHOOP_IOS_BEARER_TOKEN>",
"WHOOP_COGNITO_REFRESH_TOKEN": "<WHOOP_COGNITO_REFRESH_TOKEN>",
"WHOOP_EMAIL": "<WHOOP_EMAIL>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"totem": {
"command": "npx",
"args": [
"-y",
"@briangaoo/totem"
],
"env": {
"WHOOP_IOS_BEARER_TOKEN": "<WHOOP_IOS_BEARER_TOKEN>",
"WHOOP_COGNITO_REFRESH_TOKEN": "<WHOOP_COGNITO_REFRESH_TOKEN>",
"WHOOP_EMAIL": "<WHOOP_EMAIL>"
}
}
}
}Environment variables
WHOOP_IOS_BEARER_TOKENWHOOP_COGNITO_REFRESH_TOKENWHOOP_EMAIL
Replace the placeholders with your own credentials and keep them out of version control.