Skip to main content
Glama

whoop-mcp

Lokaler MCP-Server für die WHOOP API v2. Läuft vollständig auf dem eigenen Rechner: Recovery, Schlaf, Strain und Workouts stehen in Claude als Tools zur Verfügung, ein täglicher Sync legt eine lokale Historie an und schreibt einen JSON-Export fürs eigene Dashboard.

Was es kann

Tool

Zweck

whoop_summary

Kombinierter Tagesüberblick aus Recovery, Schlaf und Strain

whoop_recovery

Recovery Score, HRV, Ruhepuls, SpO2, Hauttemperatur

whoop_sleep

Dauer, Schlafphasen, Performance, Konsistenz, Atemfrequenz

whoop_cycles

Tages-Strain, Kalorien, Ø- und Maximalpuls

whoop_workouts

Trainings mit Strain, HF-Zonen, Distanz, Kalorien

whoop_body

Größe, Gewicht, maximale Herzfrequenz

whoop_history

Langzeitauswertung aus der lokalen Datenbank, mit Trendvergleich

whoop_sync

Daten abrufen, lokal speichern, Export schreiben

Einheiten werden alltagstauglich umgerechnet: Millisekunden zu Stunden, Kilojoule zu Kilokalorien, Meter zu Kilometern. Die Rohantworten bleiben in der Datenbank erhalten.

Related MCP server: whoop-mcp

Voraussetzungen

Eine App im WHOOP Developer Dashboard mit dieser Redirect URL:

http://localhost:8765/callback

und diesen Scopes:

offline  read:recovery  read:cycles  read:sleep  read:workout
read:body_measurement  read:profile

offline ist zwingend erforderlich — ohne diesen Scope gibt WHOOP keinen Refresh Token heraus und die Verbindung müsste stündlich erneuert werden.

Installation

git clone https://github.com/d00ennis/whoop-mcp.git
cd whoop-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Einrichtung

whoop-mcp setup     # Client ID und Secret hinterlegen (landen im Schlüsselbund)
whoop-mcp auth      # Browser öffnet sich, Zugriff einmal bestätigen
whoop-mcp sync      # erster Abruf, standardmäßig 90 Tage rückwirkend
whoop-mcp status    # Konfiguration und Datenbestand prüfen

In Claude einbinden

In ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "whoop": {
      "command": "/PFAD/ZU/whoop-mcp/.venv/bin/whoop-mcp",
      "args": ["serve"]
    }
  }
}

Danach Claude neu starten.

Täglicher Sync

Per launchd oder Cron, zum Beispiel jeden Morgen um 6:30 Uhr:

30 6 * * * /PFAD/ZU/whoop-mcp/.venv/bin/whoop-mcp sync >> ~/.whoop-mcp/sync.log 2>&1

Wo die Daten liegen

Was

Wo

Client ID, Secret, Tokens

macOS-Schlüsselbund (Dienst whoop-mcp)

Historie

~/.whoop-mcp/whoop.db (SQLite)

Export fürs Dashboard

~/.whoop-mcp/whoop.json

Über WHOOP_MCP_DATA_DIR und WHOOP_MCP_EXPORT_PATH lassen sich Verzeichnis und Exportpfad verlegen.

Aufbau

config.py      Pfade, Scopes, Secret-Speicher (Schlüsselbund mit Datei-Fallback)
auth.py        OAuth-Flow, lokaler Callback-Server, Token-Rotation
client.py      HTTP-Client: Pagination, 401-Refresh, 429-Backoff
normalize.py   Rohantworten zu flachen Datensätzen mit sinnvollen Einheiten
aggregate.py   Tageszusammenführung, Durchschnitte, Trends
store.py       SQLite-Historie, idempotente Upserts
sync.py        Abgleich und JSON-Export
server.py      MCP-Tools

Tests

pip install -e ".[dev]"
pytest

Lizenz und Datenschutz

Private Nutzung. Es werden keine Daten an Dritte übertragen — siehe PRIVACY.md.

Available Tools

9 tools
whoop_bodyA

Koerpermasse aus WHOOP: Groesse, Gewicht und maximale Herzfrequenz.

Inputs: no named parameters. Returns: object

whoop_cyclesC

Tages-Strain, Kalorienverbrauch sowie durchschnittliche und maximale Herzfrequenz.

Inputs: days. Returns: object

whoop_historyB

Langfristige Auswertung aus der lokalen Datenbank statt aus der API.

Schnell und ohne Rate-Limit, benoetigt aber einen vorherigen Sync. Mit metric (etwa "hrv_ms", "recovery_score", "strain", "asleep_hours") kommt zusaetzlich ein Trendvergleich zurueck.

Inputs: days, metric. Returns: object

whoop_lifeos_updateA

Recovery, Schlaf und Strain ins Life-OS-Dashboard schreiben.

Aktualisiert nur die Whoop-Felder; Strava-Aktivitaeten, Gewicht und Ernaehrung bleiben unberuehrt. Vor dem Schreiben wird eine Sicherung angelegt. Mit dry_run werden die Aenderungen nur angezeigt.

Inputs: dry_run. Returns: object

whoop_recoveryC

Recovery Score, HRV, Ruhepuls, SpO2 und Hauttemperatur der letzten Tage.

Inputs: days. Returns: object

whoop_sleepC

Schlafdauer, Schlafphasen, Performance, Konsistenz und Atemfrequenz.

Inputs: days. Returns: object

whoop_summaryA

Kombinierter Tagesueberblick: Recovery, Schlaf und Strain je Tag.

Das Standard-Tool fuer Fragen wie "Wie war meine Woche?". Liefert pro Tag einen Datensatz plus Durchschnitte und Trends.

Inputs: days. Returns: object

whoop_syncB

Daten von WHOOP in die lokale Datenbank holen und den Life-OS-Export schreiben.

Ohne days wird ab dem letzten Sync nachgeholt.

Inputs: days. Returns: object

whoop_workoutsA

Trainingseinheiten mit Strain, Herzfrequenzzonen, Distanz und Kalorien.

Mit sport laesst sich auf eine Sportart filtern, etwa "running".

Inputs: days, sport. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 9 tools

    Disambiguation5/5

    Each tool targets a distinct data category (recovery, sleep, cycles, workouts, body, history) or operation (sync, Life-OS update), with clear descriptions that eliminate ambiguity. The summary tool provides an overarching view but does not overlap with specific metric tools.

    Naming Consistency5/5

    All tools follow the consistent pattern 'whoop_<descriptive_noun>', with only 'whoop_lifeos_update' using a compound noun, which is still uniform and predictable.

    Tool Count5/5

    With 9 tools, the set is well-scoped for a health/fitness MCP server, covering essential data retrieval, history, and synchronization without unnecessary bloat.

    Completeness4/5

    The domain of WHOOP data is well-covered: recovery, sleep, strain, workouts, body metrics, and historical trends are all present. Minor gaps like account info or raw intraday data might be missing, but core user needs are met.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers