Garmin Connect

Accede a los datos de actividad y la información del plan de entrenamiento de Garmin Connect.

Documentación

garmin-mcp

Servidor MCP (Model Context Protocol) que proporciona datos de running de Garmin Connect a LLMs.

Se integra con clientes MCP como Claude Desktop para realizar análisis de entrenamiento de running, planificación, creación de workouts, etc.

Funciones principales

  • Consulta de actividades de running - Actividades recientes, consulta por fecha, análisis detallado, datos de splits (47 campos: ritmo, frecuencia cardíaca, cadencia, dinámicas de running, potencia, zonas de FC, GAP, pendiente, stamina, temperatura, etc.)
  • Análisis de trail running - Análisis de segmentos de pendiente ClimbPro, dificultad por grado, ritmo ajustado por pendiente, detección de correr/caminar, condiciones meteorológicas
  • Resumen semanal/mensual - Tendencias de volumen, comparación con el mes anterior
  • Métricas de entrenamiento - VO2max, estado de entrenamiento, disposición para entrenar, predicciones de carrera, umbral de lactato
  • Frecuencia cardíaca/HRV - FC diaria, variabilidad de la frecuencia cardíaca, distribución de zonas de FC por actividad
  • Bienestar - Sueño, estrés, Body Battery, SpO2
  • Récords/objetivos personales - RP, objetivos de fitness
  • Creación de workouts - Workouts estructurados basados en tiempo/distancia, intervalos, tempo, etc., enviados al reloj Garmin (objetivos de ritmo/FC/cadencia/potencia)
  • Gestión de zapatillas - Distancia acumulada por par + seguimiento del desgaste
  • Privacidad - Filtrado automático de PII (nombre del propietario, ID de perfil, coordenadas GPS) en todas las respuestas de la API

Requisitos

  • Python 3.10+
  • Gestor de paquetes uv
  • Cuenta de Garmin Connect

Instalación

git clone https://github.com/leewnsdud/garmin-connect-mcp.git
cd garmin-connect-mcp
uv sync

Autenticación

Se requiere autenticación una sola vez la primera vez.

uv run python scripts/auth.py

Al introducir correo electrónico y contraseña, el token OAuth se guarda en ~/.garminconnect/. Si se usa MFA, aparecerá un aviso para introducir el código.

Si el token caduca, vuelve a ejecutarlo o configura las credenciales en el archivo .env para que se renueve automáticamente.

Integración con Claude Desktop

Añade en ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "garmin-mcp": {
      "command": "/Users/<username>/.local/bin/uv",
      "args": [
        "--directory",
        "/path/to/garmin-mcp",
        "run",
        "garmin-mcp"
      ]
    }
  }
}

Debes usar la ruta completa de uv. Verifícalo con which uv.

Tras la configuración, reinicia Claude Desktop para que las herramientas se activen.

Variables de entorno (opcional)

Consulta .env.example para crear el archivo .env.

VariableDescripciónValor por defecto
GARMIN_EMAILCorreo electrónico de Garmin Connect-
GARMIN_PASSWORDContraseña de Garmin Connect-
GARMIN_TOKEN_DIRRuta de almacenamiento del token~/.garminconnect
GARMINTOKENSToken codificado en Base64 (para CI/Docker)-

Herramientas disponibles (24)

Activities

HerramientaDescripciónParámetros principales
get_recent_activitiesLista de actividades de running recientes (incluye GAP, RWD)count (por defecto 20, máximo 100)
get_activities_by_dateConsulta de actividades de running por rango de fechasstart_date, end_date
get_activity_detailInformación detallada de la actividad (incluye stamina, carga de impacto)activity_id
get_activity_splitsDatos de splits por kmactivity_id
get_activity_weatherCondiciones meteorológicas durante la actividad (temperatura, humedad, velocidad del viento)activity_id
get_activity_typed_splitsAnálisis de segmentos de pendiente ClimbPro (grado, GAP)activity_id

Summary

HerramientaDescripciónParámetros principales
get_weekly_running_summaryResumen semanal de runningend_date, weeks (máximo 12)
get_monthly_running_summaryResumen mensual de running + comparación con el mes anterioryear, month

Training

HerramientaDescripciónParámetros principales
get_training_statusEstado de entrenamientodate
get_training_readinessPuntuación de disposición para entrenardate
get_vo2max_and_fitnessVO2max + edad de fitnessdate
get_race_predictionsTiempos estimados en 5K/10K/medio maratón/maratónNinguno
get_lactate_thresholdFC/ritmo en umbral de lactatostart_date, end_date

Heart Rate

HerramientaDescripciónParámetros principales
get_heart_rate_dataDatos de FC diariosdate
get_hrv_dataVariabilidad de la frecuencia cardíaca (HRV)date
get_activity_hr_zonesDistribución de zonas de FC por actividadactivity_id

Wellness

HerramientaDescripciónParámetros principales
get_sleep_dataDatos de sueñodate
get_daily_wellnessEstrés/Body Battery/SpO2/frecuencia respiratoriadate
get_weekly_wellness_summaryTendencias semanales de bienestarend_date, weeks (máximo 4)

Records & Goals

HerramientaDescripciónParámetros principales
get_personal_recordsRécords personales (1K~maratón)Ninguno
get_goalsObjetivos de fitnessstatus (active/completed/all)

Workout

HerramientaDescripciónParámetros principales
create_running_workoutCreación de workouts y carga en Garmin (basados en tiempo/distancia, objetivos de ritmo/FC/cadencia/potencia)name, steps, description
get_workoutsLista de workouts guardadoscount (por defecto 20, máximo 100)

Gear

HerramientaDescripciónParámetros principales
get_running_gearLista de zapatillas + distancia acumulada + tasa de desgasteNinguno

Guía de creación de workouts

Puedes crear workouts de running estructurados con create_running_workout y sincronizarlos con tu reloj Garmin.

Tipos de Step

TipoDescripción
warmupCalentamiento
intervalIntervalo (alta intensidad)
recoveryTrote de recuperación
restDescanso completo (parado)
cooldownEnfriamiento
repeatGrupo de repeticiones

Condiciones de finalización (duración del Step)

CampoTipoDescripciónEjemplo
duration_secondsintBasado en tiempo"duration_seconds": 300 (5 minutos)
distance_metersintBasado en distancia"distance_meters": 1000 (1 km)

Puedes combinar steps basados en tiempo y distancia en un mismo workout.

Tipos de Target

TipoFormato del valorEjemplo
pacemin:seg/km"min": "4:30", "max": "4:50"
heart_ratebpm"min": 140, "max": 155
cadencespm"min": 170, "max": 185
powervatios"min": 280, "max": 320

Opciones

  • Nota del workout: añade una descripción completa con el parámetro description
  • Nota del Step: añade "description": "메모" a cada step
  • Omitir recuperación final: añade "skip_last_rest": true al step de repeticiones

Ejemplo: intervalos de 4x1 km basados en distancia

{
  "name": "4x1km Intervals @4:30",
  "description": "10K 레이스 대비 VO2max 인터벌",
  "steps": [
    {
      "type": "warmup",
      "duration_seconds": 600,
      "description": "가볍게 조깅"
    },
    {
      "type": "repeat",
      "count": 4,
      "skip_last_rest": true,
      "steps": [
        {
          "type": "interval",
          "distance_meters": 1000,
          "target": { "type": "pace", "min": "4:20", "max": "4:40" },
          "description": "목표 페이스 유지"
        },
        {
          "type": "recovery",
          "duration_seconds": 120,
          "description": "천천히 조깅으로 회복"
        }
      ]
    },
    {
      "type": "cooldown",
      "duration_seconds": 600,
      "description": "마무리 조깅"
    }
  ]
}

Consulta la guía detallada de creación de workouts en AGENTS.md y la especificación completa de solicitudes/respuestas de herramientas en TOOL_SPEC.md.

Ejemplos de uso

Puedes usar Claude Desktop de las siguientes maneras:

  • "Resume mi running de esta semana"
  • "Analiza la tendencia de volumen semanal de los últimos 3 meses"
  • "Calcula mis ritmos de entrenamiento según Jack Daniels VDOT basándote en mi VO2max"
  • "Revisa la distribución de zonas de FC de mis actividades recientes y comprueba si estoy cumpliendo la proporción 80/20"
  • "Crea un workout de intervalos de 4x1 km para mañana"
  • "Comprueba si alguna de mis zapatillas necesita ser reemplazada"
  • "Analiza la correlación entre sueño y disposición para entrenar"
  • "Analiza mi rendimiento por segmentos de pendiente en mis trail runs recientes"
  • "Comprueba la proporción caminar/correr en mis trail runs"

Metodologías de entrenamiento de running compatibles

MetodologíaDatos utilizados
Jack Daniels VDOTVO2max, RP, predicciones de carrera
Norwegian Double ThresholdUmbral de lactato, zonas de FC
80/20 TrainingDistribución de zonas de FC
Método de HansonVolumen semanal/mensual, tendencias de ritmo
PfitzingerVolumen semanal, análisis de carreras largas
Análisis de trail/ultraSegmentos de pendiente ClimbPro, clima, RWD, GAP

Desarrollo

# 코드 수정 후 패키지 재설치
uv sync --reinstall-package garmin-mcp

# Claude Desktop 재시작으로 MCP 서버 반영

Privacidad

Los siguientes campos de información personal se eliminan automáticamente de todas las respuestas de la API de Garmin:

  • Información del propietario: ownerId, ownerFullName, ownerDisplayName, userId, URL de imagen de perfil
  • ID de perfil: userProfilePK, userProfileId, profileId, profileNumber
  • Información del usuario: displayName, fullName, userPro, userRoles
  • Coordenadas GPS: startLatitude, startLongitude, endLatitude, endLongitude

Este filtrado se procesa de forma recursiva mediante la función strip_pii() de src/garmin_mcp/sanitize.py.

Stack tecnológico

Licencia

MIT