Strava MCP Server

Accede a la API de Strava para interactuar con actividades, información del atleta y otros datos de Strava.

Documentación

Strava MCP Server

Un servidor de Model Context Protocol (MCP) que proporciona acceso a la API de Strava. Este servidor permite a los modelos de lenguaje interactuar con los datos de Strava, incluyendo actividades, información de atletas y más.

Características

  • 🏃‍♂️ Seguimiento y análisis de actividades
  • 📊 Estadísticas de atletas
  • 🗺️ Visualización de rutas
  • 🏆 Seguimiento de logros
  • 🤝 Funciones sociales (kudos, comentarios)

Requisitos previos

  • Python 3.12+
  • Credenciales de la API de Strava
  • pip (instalador de paquetes de Python)

Instalación

  1. Clona el repositorio:
git clone https://github.com/yourusername/strava_mcp.git
cd strava_mcp
  1. Crea un entorno virtual:
python -m venv venv
source venv/bin/activate  # On Windows: .\venv\Scripts\activate
  1. Instala las dependencias:
pip install -r requirements.txt

Configuración

  1. Crea un archivo config/.env con tus credenciales de la API de Strava:
STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_REFRESH_TOKEN=your_refresh_token
  1. Para obtener credenciales de la API de Strava:
    • Ve a https://www.strava.com/settings/api
    • Crea una nueva aplicación
    • Anota el Client ID y el Client Secret
    • Sigue el flujo de OAuth 2.0 para obtener tu token de actualización

Uso

Uso con Claude

Una vez conectado, puedes interactuar con tus datos de Strava a través de Claude de varias maneras:

Consultas de actividades

  • "Muéstrame mis actividades recientes"
  • "Obtén detalles sobre mi última carrera"
  • "¿Cuál fue mi recorrido más largo este mes?"
  • "Muéstrame actividades donde establecí récords personales"
  • "Muestra el mapa de ruta de mi última actividad"

Análisis de rendimiento

  • "¿Cuál es mi ritmo de carrera promedio este año?"
  • "Compara mi rendimiento en ciclismo entre el mes pasado y este mes"
  • "Muéstrame mis zonas de frecuencia cardíaca del entrenamiento de ayer"
  • "¿Cuál es mi ganancia total de elevación en todas las actividades?"
  • "Calcula mi kilometraje semanal de carrera"

Interacciones sociales

  • "¿Quién dio kudos en mi última actividad?"
  • "Muéstrame los comentarios de mi carrera de maratón"
  • "Enumera todas mis actividades de club"
  • "Encuentra actividades que hice con amigos"

Seguimiento de logros

  • "Enumera todos mis logros de segmentos"
  • "Muestra mis récords personales en segmentos locales"
  • "¿Qué logros obtuve esta semana?"
  • "Muestra mi progreso en metas anuales"

Datos disponibles a través de Claude

  1. Detalles de actividades:

    • Distancia, duración, ritmo
    • Mapas de ruta y perfiles de elevación
    • Datos de frecuencia cardíaca, potencia y cadencia
    • Información de splits y vueltas
    • Condiciones climáticas durante la actividad
  2. Estadísticas de atletas:

    • Totales del año hasta la fecha y de todos los tiempos
    • Récords personales y logros
    • Carga de entrenamiento y tendencias de condición física
    • Uso y mantenimiento de equipamiento
  3. Datos sociales:

    • Kudos y comentarios
    • Actividades de club y clasificaciones
    • Actividades y desafíos de amigos
    • Esfuerzos y clasificaciones de segmentos
  4. Información de rutas:

    • Mapas detallados con datos de elevación
    • Análisis de segmentos
    • Rutas y segmentos populares
    • Planificación y análisis de rutas

Como servidor MCP

Actualiza tu configuración de Claude Desktop:

{
    "mcpServers": {
        "Strava": {
            "command": "python",
            "args": ["src/strava_server.py"],
            "cwd": "/path/to/strava_mcp",
            "env": {
                "STRAVA_CLIENT_ID": "your_client_id",
                "STRAVA_CLIENT_SECRET": "your_client_secret",
                "STRAVA_REFRESH_TOKEN": "your_refresh_token"
            }
        }
    }
}

Como servidor HTTP

  1. Inicia el servidor:
./run_server.sh
  1. Accede a la API en http://localhost:8000

Endpoints disponibles:

  • GET /activities/recent - Lista actividades recientes
  • GET /activities/{id} - Obtén detalles de la actividad
  • GET /activities/{id}/map - Obtén la visualización del mapa de la actividad
  • GET /athlete/stats - Obtén estadísticas del atleta

Desarrollo

Estructura del proyecto

strava_mcp/
├── src/
│   ├── strava_server.py      # MCP server implementation
│   ├── strava_http_server.py # HTTP API server
│   ├── map_utils.py          # Map visualization utilities
│   └── templates.py          # HTML templates
├── config/
│   └── .env                  # Environment variables (not in git)
├── requirements.txt          # Python dependencies
└── run_server.sh            # Server startup script

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Haz commit de tus cambios
  4. Haz push a la rama
  5. Crea un Pull Request

Seguridad

  • Nunca hagas commit de archivos .env ni credenciales de API
  • El archivo .gitignore está configurado para evitar que se hagan commit de datos sensibles
  • Usa variables de entorno para toda la configuración sensible

Licencia

Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para obtener más detalles.

Agradecimientos

  • Documentación de la API de Strava
  • Especificación de Model Context Protocol (MCP)
  • Contribuyentes y mantenedores