totem — Claude Code MCP server: features and setup
Connects Whoop to an AI agent over MCP, exposing wearable data for queries. Useful for checking recovery, sleep, or strain from a client conversation.
claude mcp add --env WHOOP_IOS_BEARER_TOKEN=<WHOOP_IOS_BEARER_TOKEN> --env WHOOP_COGNITO_REFRESH_TOKEN=<WHOOP_COGNITO_REFRESH_TOKEN> --env WHOOP_EMAIL=<WHOOP_EMAIL> --env WHOOP_USER_ID=<WHOOP_USER_ID> --env WHOOP_TIMEZONE=<WHOOP_TIMEZONE> --transport stdio thebriangao-totem -- npx -y @thebriangao/totemWhat totem does
totem links Whoop with an MCP-compatible client and provides tools to read and write account data. The project lists 55 tools, automatic Cognito token renewal, and a bounded cache for reads. Ask an agent about today's recovery, sleep, or strain.
Node 24+ and a Whoop account are required. In Claude Code, the server can run through npx; setup needs Whoop tokens and the account email. One important caveat: totem uses Whoop's private iOS API rather than its public OAuth API, and this access method does not comply with Whoop's terms.
What it helps with
- query Whoop recovery metrics through MCP
- check sleep and workout strain data
- give an AI client access to Whoop data
- refresh Whoop tokens for a deployed server
Example prompts for the agent
- Show my Whoop recovery metrics for today.
- Compare my sleep and strain over the selected period.
- Check how my Whoop workouts have changed.
How to install totem
Platform CLI
claude mcp add --env WHOOP_IOS_BEARER_TOKEN=<WHOOP_IOS_BEARER_TOKEN> --env WHOOP_COGNITO_REFRESH_TOKEN=<WHOOP_COGNITO_REFRESH_TOKEN> --env WHOOP_EMAIL=<WHOOP_EMAIL> --env WHOOP_USER_ID=<WHOOP_USER_ID> --env WHOOP_TIMEZONE=<WHOOP_TIMEZONE> --transport stdio thebriangao-totem -- npx -y @thebriangao/totemReplace <…> with your own values
Platform CLI
codex mcp add thebriangao-totem --env WHOOP_IOS_BEARER_TOKEN=<WHOOP_IOS_BEARER_TOKEN> --env WHOOP_COGNITO_REFRESH_TOKEN=<WHOOP_COGNITO_REFRESH_TOKEN> --env WHOOP_EMAIL=<WHOOP_EMAIL> --env WHOOP_USER_ID=<WHOOP_USER_ID> --env WHOOP_TIMEZONE=<WHOOP_TIMEZONE> -- npx -y @thebriangao/totemReplace <…> with your own values
Config file
{
"mcpServers": {
"thebriangao-totem": {
"command": "npx",
"args": [
"-y",
"@thebriangao/totem"
],
"env": {
"WHOOP_IOS_BEARER_TOKEN": "<WHOOP_IOS_BEARER_TOKEN>",
"WHOOP_COGNITO_REFRESH_TOKEN": "<WHOOP_COGNITO_REFRESH_TOKEN>",
"WHOOP_EMAIL": "<WHOOP_EMAIL>",
"WHOOP_USER_ID": "<WHOOP_USER_ID>",
"WHOOP_TIMEZONE": "<WHOOP_TIMEZONE>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"thebriangao-totem": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@thebriangao/totem"
],
"env": {
"WHOOP_IOS_BEARER_TOKEN": "<WHOOP_IOS_BEARER_TOKEN>",
"WHOOP_COGNITO_REFRESH_TOKEN": "<WHOOP_COGNITO_REFRESH_TOKEN>",
"WHOOP_EMAIL": "<WHOOP_EMAIL>",
"WHOOP_USER_ID": "<WHOOP_USER_ID>",
"WHOOP_TIMEZONE": "<WHOOP_TIMEZONE>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e WHOOP_IOS_BEARER_TOKEN=<WHOOP_IOS_BEARER_TOKEN> -e WHOOP_COGNITO_REFRESH_TOKEN=<WHOOP_COGNITO_REFRESH_TOKEN> -e WHOOP_EMAIL=<WHOOP_EMAIL> -e WHOOP_USER_ID=<WHOOP_USER_ID> -e WHOOP_TIMEZONE=<WHOOP_TIMEZONE> thebriangao-totem npx -y @thebriangao/totemReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about totem
How do I install totem in Claude Code?
Run `claude mcp add totem -e WHOOP_IOS_BEARER_TOKEN=<WHOOP_IOS_BEARER_TOKEN> -e WHOOP_COGNITO_REFRESH_TOKEN=<WHOOP_COGNITO_REFRESH_TOKEN> -e WHOOP_EMAIL=<WHOOP_EMAIL> -- npx -y @thebriangao/totem`. Replace the placeholders with your Whoop tokens and account email.
What does totem do?
It connects Whoop data to an MCP-compatible AI client. The server exposes tools for reading and writing wearable data.
What does totem require, and what should I know about its Whoop access?
It requires Node 24+ and a Whoop account. It uses Whoop's private iOS API instead of the public OAuth API, which does not comply with Whoop's terms.