Skip to main content
Glama
SkyBlob12

Strava MCP Server

by SkyBlob12

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 .env

Bearbeite .env:

STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_REDIRECT_URI=http://localhost:8080/callback
TOKENS_FILE_PATH=./tokens.json

3. Build

npm install
npm run build

4. 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 .env oder den env-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:

  1. Rufe strava_get_auth_url auf — Claude gibt eine URL zurück

  2. Öffne die URL in deinem Browser und autorisiere die App bei Strava

  3. Die Seite zeigt "✓ Authentification réussie !" an und die Tokens werden automatisch gespeichert


Verfügbare Tools

Authentifizierung

Tool

Beschreibung

strava_get_auth_url

Generiert die OAuth2-URL und startet den lokalen Callback-Server

strava_exchange_token

Manueller Fallback: Tausche einen Auth-Code gegen Tokens

strava_auth_status

Überprüfe, ob Tokens gültig sind und wann sie ablaufen

Aktivitäten

Tool

Beschreibung

strava_get_activities

Liste kürzliche Aktivitäten (Laufen, Radfahren, Gehen, Alle) mit Distanz, Pace, HF

strava_get_activity_detail

Volle Details für eine Aktivität: Splits pro km, Runden, Kalorien

strava_athlete_stats

Globale Strava-Statistiken: diese Woche, dieses Jahr, insgesamt

Analyse

Tool

Beschreibung

strava_analyze_training

Wöchentliche Volumenaufschlüsselung + Konsistenz-Score

strava_training_load

CTL (Fitness) / ATL (Ermüdung) / TSB (Frische) via TRIMP

strava_pace_zones

Verteilung über 6 Pace-Zonen, Überprüfung der 80/20-Regel

Vorhersage

Tool

Beschreibung

strava_predict_race_time

Vorhersage der Zielzeit via Riegel-Formel basierend auf einer Referenzleistung

strava_vdot

Berechne VDOT-Score + 5 Trainings-Pace-Zonen aus jeder Rennleistung

Trainingsplanung

Tool

Beschreibung

strava_generate_training_plan

Vollständiger periodisierter Plan von heute bis zum Renntag (Basis/Aufbau/Höhepunkt/Tapering)

strava_weekly_workout

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

  1. Startvolumen — Mischung aus deinem 4-Wochen-Durchschnitt in km und der CTL-basierten wöchentlichen km-Schätzung (robust bei Verletzungspausen)

  2. Höchstvolumen — 1,4× aktuell, mit rennspezifischen Mindestwerten (5K: 40km, 10K: 50km, Halbmarathon: 60km, Marathon: 80km)

  3. Wöchentliche Progression — begrenzt auf +10% pro Woche, um Verletzungen vorzubeugen

  4. 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

target_race

Renndistanz

"Marathon"

race_date

Renndatum (JJJJ-MM-TT)

"2026-10-18"

goal_time

Zielzeit

"3:45:00"

current_weekly_km

Aktuelles wöchentliches Kilometerpensum

55

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 2026
Mon amie veut courir un semi-marathon en 1h50 le 2026-09-14, elle fait environ 40km par semaine

Wenn 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 goal_time

Aus goal_time (erforderlich)

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 clean

Projektstruktur

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 tools

Tokens

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înement
Quelle 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-20
Calcule ma charge d'entraînement actuelle et dis-moi si je suis en forme pour une course ce week-end
Montre-moi la répartition de mes allures sur les 4 dernières semaines

Manueller 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 2026
Mon amie veut courir un semi-marathon en 1h50 le 14 septembre 2026, elle fait 40km par semaine

Lizenz

MIT

Install Server
F
license - not found
A
quality
-
maintenance - not tested

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