Skip to main content
Glama
SkyBlob12

Strava MCP Server

by SkyBlob12

Servidor MCP de Strava

Un servidor del Protocolo de Contexto de Modelos (MCP) que conecta Claude a tu cuenta de Strava. Pídele a Claude en lenguaje natural que analice tu entrenamiento, prediga tiempos de carrera, calcule cargas de entrenamiento o genere un plan de entrenamiento periodizado completo.

Características

  • 13 herramientas en 5 categorías: autenticación, actividades, análisis, predicción, planificación

  • Flujo OAuth2 con servidor de callback local automático: sin necesidad de copiar códigos manualmente

  • Ritmos de entrenamiento basados en VDOT (Fórmula de carrera de Jack Daniels)

  • Métricas de carga de entrenamiento CTL/ATL/TSB (Carga de entrenamiento crónica/aguda, Equilibrio de estrés de entrenamiento)

  • Predicciones de tiempo de carrera mediante la fórmula de Riegel

  • Planes de entrenamiento periodizados completos (Base → Construcción → Pico → Taper) con lógica específica para la carrera

Requisitos

  • Node.js ≥ 18

  • Una cuenta de Strava

  • Claude Desktop (o cualquier cliente compatible con MCP)


Configuración

1. Crear una aplicación de API de Strava

Ve a strava.com/settings/api y crea una aplicación.

  • Dominio de callback de autorización: localhost

Anota tu Client ID y Client Secret.

2. Configurar variables de entorno

cp .env.example .env

Edita .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. Construir

npm install
npm run build

4. Configurar Claude Desktop

Edita %APPDATA%\Claude\claude_desktop_config.json (Windows) o ~/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"
      }
    }
  }
}

Puedes usar tanto .env como el bloque env en la configuración de Claude Desktop: ambos funcionan.

5. Autenticar

Reinicia Claude Desktop y, en una conversación:

  1. Llama a strava_get_auth_url: Claude devolverá una URL

  2. Abre la URL en tu navegador y autoriza la aplicación en Strava

  3. La página mostrará "✓ Authentification réussie !" y los tokens se guardarán automáticamente


Herramientas disponibles

Autenticación

Herramienta

Descripción

strava_get_auth_url

Genera la URL de OAuth2 e inicia el servidor de callback local

strava_exchange_token

Alternativa manual: intercambia un código de autorización por tokens

strava_auth_status

Comprueba si los tokens son válidos y cuándo caducan

Actividades

Herramienta

Descripción

strava_get_activities

Lista actividades recientes (Carrera, Ciclismo, Caminata, Todas) con distancia, ritmo, FC

strava_get_activity_detail

Detalle completo de una actividad: parciales por km, vueltas, calorías

strava_athlete_stats

Estadísticas globales de Strava: esta semana, este año, histórico

Análisis

Herramienta

Descripción

strava_analyze_training

Desglose del volumen semanal + puntuación de consistencia

strava_training_load

CTL (forma física) / ATL (fatiga) / TSB (frescura) mediante TRIMP

strava_pace_zones

Distribución en 6 zonas de ritmo, verificación de la regla 80/20

Predicción

Herramienta

Descripción

strava_predict_race_time

Predice tiempos de llegada mediante la fórmula de Riegel a partir de un esfuerzo de referencia

strava_vdot

Calcula la puntuación VDOT + 5 zonas de ritmo de entrenamiento a partir de cualquier rendimiento en carrera

Planificación de entrenamiento

Herramienta

Descripción

strava_generate_training_plan

Plan periodizado completo desde hoy hasta el día de la carrera (Base/Construcción/Pico/Taper)

strava_weekly_workout

Genera solo las sesiones de la próxima semana para una fase determinada


Detalles del plan de entrenamiento

Fases

Fase

Enfoque

Intensidad

Base

Base aeróbica

Carreras suaves, carrera larga, progresiones

Construcción

Umbral de lactato

Tempo, carrera media suave, carrera larga

Pico

VO2max + específico de carrera

Intervalos, tempo, carrera larga

Taper

Frescura

Volumen reducido, calidad de mantenimiento

Cómo se calcula el volumen

  1. Volumen inicial — combinación de tu promedio de 4 semanas en km y la estimación semanal en km derivada del CTL (robusto ante pausas por lesiones)

  2. Volumen pico — 1.4× el actual, con mínimos específicos por carrera (5K: 40km, 10K: 50km, Media: 60km, Maratón: 80km)

  3. Progresión semanal — limitada a +10% por semana para prevenir lesiones

  4. Semanas de recuperación — automáticas cada 4 semanas dentro de cada fase (volumen × 0.8)

Lógica específica de carrera

  • Maratón (Construcción y Pico): Las carreras largas incluyen una sección a ritmo de maratón (~45% de la carrera a ritmo de competición)

  • Profundidad del Taper: Los 5K reducen hasta el 80% del volumen pico, el Maratón hasta el 40% — las carreras más cortas necesitan menos recuperación

  • Intervalos: 6 × 1000m para 5K/10K, 5 × 1000m para Media/Maratón

VDOT y zonas de ritmo

Basado en la Fórmula de carrera de Jack Daniels. Zonas calculadas como una fracción del VDOT:

Zona

% de VDOT

Uso

Suave

65%

Carreras diarias, carrera larga

Maratón

80%

Secciones a ritmo de maratón

Umbral

86%

Carreras tempo

Intervalo

98%

Intervalos de VO2max

Repetición

105%

Trabajo de velocidad / progresiones


Generación de planes para amigos (modo manual)

strava_generate_training_plan admite un modo manual que evita Strava por completo. Pasa current_weekly_km y goal_time juntos y no se necesita cuenta de Strava; útil para generar planes para amigos desde tu propio Claude Desktop.

Parámetros requeridos

Parámetro

Descripción

Ejemplo

target_race

Distancia de carrera

"Marathon"

race_date

Fecha de carrera (AAAA-MM-DD)

"2026-10-18"

goal_time

Tiempo objetivo

"3:45:00"

current_weekly_km

Kilometraje semanal actual

55

Ejemplos de 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

Cuando se proporcionan tanto current_weekly_km como goal_time, la herramienta omite todas las llamadas a la API de Strava. El resume en la respuesta incluirá source_volume: "Fourni manuellement" para confirmar qué modo se utilizó.

Comparación de modos

Modo Strava

Modo Manual

Se necesita cuenta de Strava

No

Calibración de volumen

Promedio de 4 semanas + CTL

Valor que proporcionas

Estimación de VDOT

De actividades recientes o goal_time

De goal_time (requerido)

Caso de uso

Tu propio entrenamiento

Amigos / atletas sin Strava


Desarrollo

# 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

Estructura del proyecto

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 almacena tus tokens de acceso y actualización de Strava. Está en .gitignore: nunca lo subas al repositorio. Los tokens se actualizan automáticamente cuando caducan (los tokens de acceso de Strava duran 6 horas).


Ejemplos de prompts

Modo Strava (tu propia cuenta)

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

Modo manual (amigos / sin 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

Licencia

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