Read-only WHOOP MCP server for recovery, sleep, HRV, strain, workouts, and personal health analytics in Claude, Codex, and GitHub Copilot.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add whoop --env WHOOP_CLIENT_ID='<WHOOP_CLIENT_ID>' --env WHOOP_CLIENT_SECRET='<WHOOP_CLIENT_SECRET>' -- npx -y whoop-ai-mcp~/.codex/config.toml
[mcp_servers.whoop]
command = "npx"
args = ["-y", "whoop-ai-mcp"]
env = { WHOOP_CLIENT_ID = "<WHOOP_CLIENT_ID>", WHOOP_CLIENT_SECRET = "<WHOOP_CLIENT_SECRET>" }
# codex mcp add whoop --env WHOOP_CLIENT_ID='<WHOOP_CLIENT_ID>' --env WHOOP_CLIENT_SECRET='<WHOOP_CLIENT_SECRET>' -- npx -y whoop-ai-mcp~/.cursor/mcp.json
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": [
"-y",
"whoop-ai-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "<WHOOP_CLIENT_ID>",
"WHOOP_CLIENT_SECRET": "<WHOOP_CLIENT_SECRET>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"whoop": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"whoop-ai-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "<WHOOP_CLIENT_ID>",
"WHOOP_CLIENT_SECRET": "<WHOOP_CLIENT_SECRET>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": [
"-y",
"whoop-ai-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "<WHOOP_CLIENT_ID>",
"WHOOP_CLIENT_SECRET": "<WHOOP_CLIENT_SECRET>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": [
"-y",
"whoop-ai-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "<WHOOP_CLIENT_ID>",
"WHOOP_CLIENT_SECRET": "<WHOOP_CLIENT_SECRET>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"whoop": {
"command": "npx",
"args": [
"-y",
"whoop-ai-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "<WHOOP_CLIENT_ID>",
"WHOOP_CLIENT_SECRET": "<WHOOP_CLIENT_SECRET>"
}
}
}
}Environment variables
WHOOP_CLIENT_IDWHOOP_CLIENT_SECRET
Replace the placeholders with your own credentials and keep them out of version control.