Strava MCP Server
Strava MCP-Server
Ein Model Context Protocol (MCP)-Server, der Claude mit deinem Strava-Konto verbindet. Bitte Claude in natürlicher Sprache, dein Training zu analysieren, Rennzeiten vorherzusagen, Trainingsbelastungen zu berechnen oder einen vollständigen periodisierten Trainingsplan zu erstellen.
Funktionen
13 Tools in 5 Kategorien: Authentifizierung, Aktivitäten, Analyse, Vorhersage, Planung
OAuth2-Ablauf mit automatischem lokalen Callback-Server — kein manuelles Kopieren von Codes
VDOT-basierte Trainingsgeschwindigkeiten (Jack Daniels' Running Formula)
CTL/ATL/TSB-Trainingsbelastungsmetriken (Chronische/Akute Trainingsbelastung, Training Stress Balance)
Rennzeitvorhersagen mittels Riegel-Formel
Vollständige periodisierte Trainingspläne (Basis → Aufbau → Höhepunkt → Tapering) mit rennspezifischer Logik
Anforderungen
Node.js ≥ 18
Ein Strava-Konto
Claude Desktop (oder ein beliebiger MCP-kompatibler Client)
Einrichtung
1. Erstelle eine Strava-API-Anwendung
Gehe zu strava.com/settings/api und erstelle eine Anwendung.
Authorization Callback Domain:
localhost
Notiere dir deine Client ID und dein Client Secret.
2. Konfiguriere Umgebungsvariablen
cp .env.example .envBearbeite .env:
STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_REDIRECT_URI=http://localhost:8080/callback
TOKENS_FILE_PATH=./tokens.json3. Build
npm install
npm run build4. Konfiguriere Claude Desktop
Bearbeite %APPDATA%\Claude\claude_desktop_config.json (Windows) oder ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"strava": {
"command": "node",
"args": ["C:/path/to/McpStrava/dist/index.js"],
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"TOKENS_FILE_PATH": "C:/path/to/McpStrava/tokens.json"
}
}
}
}Du kannst entweder
.envoder denenv-Block in der Claude Desktop-Konfiguration verwenden — beides funktioniert.
5. Authentifizierung
Starte Claude Desktop neu und führe dann in einer Unterhaltung folgende Schritte aus:
Rufe
strava_get_auth_urlauf — Claude gibt eine URL zurückÖffne die URL in deinem Browser und autorisiere die App bei Strava
Die Seite zeigt "✓ Authentification réussie !" an und die Tokens werden automatisch gespeichert
Verfügbare Tools
Authentifizierung
Tool | Beschreibung |
| Generiert die OAuth2-URL und startet den lokalen Callback-Server |
| Manueller Fallback: Tausche einen Auth-Code gegen Tokens |
| Überprüfe, ob Tokens gültig sind und wann sie ablaufen |
Aktivitäten
Tool | Beschreibung |
| Liste kürzliche Aktivitäten (Laufen, Radfahren, Gehen, Alle) mit Distanz, Pace, HF |
| Volle Details für eine Aktivität: Splits pro km, Runden, Kalorien |
| Globale Strava-Statistiken: diese Woche, dieses Jahr, insgesamt |
Analyse
Tool | Beschreibung |
| Wöchentliche Volumenaufschlüsselung + Konsistenz-Score |
| CTL (Fitness) / ATL (Ermüdung) / TSB (Frische) via TRIMP |
| Verteilung über 6 Pace-Zonen, Überprüfung der 80/20-Regel |
Vorhersage
Tool | Beschreibung |
| Vorhersage der Zielzeit via Riegel-Formel basierend auf einer Referenzleistung |
| Berechne VDOT-Score + 5 Trainings-Pace-Zonen aus jeder Rennleistung |
Trainingsplanung
Tool | Beschreibung |
| Vollständiger periodisierter Plan von heute bis zum Renntag (Basis/Aufbau/Höhepunkt/Tapering) |
| Generiere nur die Einheiten für die nächste Woche einer bestimmten Phase |
Details zum Trainingsplan
Phasen
Phase | Fokus | Intensität |
Basis | Aerobe Grundlage | Lockere Läufe, langer Lauf, Steigerungen |
Aufbau | Laktatschwelle | Tempo, lockerer Dauerlauf, langer Lauf |
Höhepunkt | VO2max + rennspezifisch | Intervalle, Tempo, langer Lauf |
Tapering | Frische | Reduziertes Volumen, Erhalt der Qualität |
Wie das Volumen berechnet wird
Startvolumen — Mischung aus deinem 4-Wochen-Durchschnitt in km und der CTL-basierten wöchentlichen km-Schätzung (robust bei Verletzungspausen)
Höchstvolumen — 1,4× aktuell, mit rennspezifischen Mindestwerten (5K: 40km, 10K: 50km, Halbmarathon: 60km, Marathon: 80km)
Wöchentliche Progression — begrenzt auf +10% pro Woche, um Verletzungen vorzubeugen
Erholungswochen — automatisch jede 4. Woche innerhalb jeder Phase (Volumen × 0,8)
Rennspezifische Logik
Marathon (Aufbau & Höhepunkt): Lange Läufe beinhalten einen Abschnitt im Marathontempo (~45% des Laufs im Renntempo)
Tapering-Tiefe: 5K tapert auf 80% des Höchstvolumens, Marathon auf 40% — kürzere Rennen benötigen weniger Erholung
Intervalle: 6 × 1000m für 5K/10K, 5 × 1000m für Halbmarathon/Marathon
VDOT & Pace-Zonen
Basierend auf Jack Daniels' Running Formula. Zonen werden als Bruchteil des VDOT berechnet:
Zone | % von VDOT | Verwendung |
Easy | 65% | Tägliche Läufe, langer Lauf |
Marathon | 80% | Abschnitte im Marathontempo |
Threshold | 86% | Tempoläufe |
Interval | 98% | VO2max-Intervalle |
Repetition | 105% | Schnelligkeitstraining / Steigerungen |
Pläne für Freunde erstellen (manueller Modus)
strava_generate_training_plan unterstützt einen manuellen Modus, der Strava komplett umgeht. Übergebe current_weekly_km und goal_time zusammen, dann ist kein Strava-Konto erforderlich — nützlich, um Pläne für Freunde von deinem eigenen Claude Desktop aus zu erstellen.
Erforderliche Parameter
Parameter | Beschreibung | Beispiel |
| Renndistanz |
|
| Renndatum (JJJJ-MM-TT) |
|
| Zielzeit |
|
| Aktuelles wöchentliches Kilometerpensum |
|
Beispiel-Prompts
Génère un plan marathon pour mon ami, il court 55km par semaine et vise 3h45, la course est le 18 octobre 2026Mon amie veut courir un semi-marathon en 1h50 le 2026-09-14, elle fait environ 40km par semaineWenn sowohl current_weekly_km als auch goal_time angegeben sind, überspringt das Tool alle Strava-API-Aufrufe. Die resume in der Antwort enthält source_volume: "Fourni manuellement", um zu bestätigen, welcher Modus verwendet wurde.
Modus-Vergleich
Strava-Modus | Manueller Modus | |
Strava-Konto erforderlich | Ja | Nein |
Volumenkalibrierung | 4-Wochen-Schnitt + CTL | Wert, den du angibst |
VDOT-Schätzung | Aus kürzlichen Aktivitäten oder | Aus |
Anwendungsfall | Dein eigenes Training | Freunde / Athleten ohne Strava |
Entwicklung
# Watch mode (no build step needed)
npm run dev
# Build TypeScript
npm run build
# Run built server
npm start
# Clean build artifacts
npm run cleanProjektstruktur
src/
├── index.ts # MCP server entry point
├── config.ts # Env vars, Strava constants, race distances
├── types.ts # Shared TypeScript interfaces
├── auth/
│ ├── oauth.ts # OAuth2 URL builder, token exchange
│ ├── tokenStore.ts # Load/save tokens.json, expiry check
│ ├── callbackServer.ts # Local HTTP server for OAuth redirect
│ └── authTools.ts # MCP auth tools
├── strava/
│ ├── client.ts # Axios instance with auto token refresh
│ ├── activities.ts # Strava activities API
│ ├── athlete.ts # Strava athlete/stats API
│ └── activityTools.ts # MCP activity tools
├── analytics/
│ ├── metrics.ts # Weekly stats, pace zones, consistency score
│ ├── trainingLoad.ts # TRIMP, CTL/ATL/TSB computation
│ └── analysisTools.ts # MCP analysis tools
├── prediction/
│ ├── riegel.ts # Riegel race time prediction formula
│ ├── vdot.ts # VDOT computation, training paces, race equivalents
│ └── predictionTools.ts # MCP prediction tools
└── planning/
├── workouts.ts # Workout templates and distance bounds
├── plan.ts # Plan generation, phase allocation, VDOT estimation
└── planTools.ts # MCP planning toolsTokens
tokens.json speichert deine Strava-Zugriffs- und Refresh-Tokens. Es befindet sich in .gitignore — committe es niemals. Tokens werden automatisch aktualisiert, wenn sie ablaufen (Strava-Zugriffstokens sind 6 Stunden gültig).
Beispiel-Prompts
Strava-Modus (dein eigenes Konto)
Analyse mes 8 dernières semaines d'entraînementQuelle serait mon heure sur un marathon si je cours un 10K en 45min ?Génère-moi un plan d'entraînement pour un semi-marathon le 2026-09-20Calcule ma charge d'entraînement actuelle et dis-moi si je suis en forme pour une course ce week-endMontre-moi la répartition de mes allures sur les 4 dernières semainesManueller Modus (Freunde / kein Strava)
Génère un plan marathon pour mon ami, il court 55km par semaine et vise 3h45, la course est le 18 octobre 2026Mon amie veut courir un semi-marathon en 1h50 le 14 septembre 2026, elle fait 40km par semaineLizenz
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SkyBlob12/McpStrava'
If you have feedback or need assistance with the MCP directory API, please join our Discord server