Garmin Connect

Acesse os dados de corrida e informações do plano de treinamento do Garmin Connect.

Documentação

garmin-mcp

Servidor MCP (Model Context Protocol) que fornece dados de corrida do Garmin Connect para LLMs.

Integra-se a clientes MCP como o Claude Desktop para realizar análise de treinos de corrida, planejamento, criação de treinos e muito mais.

Principais recursos

  • Consulta de atividades de corrida - atividades recentes, consulta por data, análise detalhada, dados de splits (47 campos: ritmo, FC, cadência, dinâmicas de corrida, potência, zonas de FC, GAP, inclinação, resistência, temperatura etc.)
  • Análise de trail running - análise de segmentos de inclinação ClimbPro, dificuldade por grau, ritmo ajustado por inclinação (GAP), detecção de corrida/caminhada, condições climáticas
  • Resumo semanal/mensal - tendência de volume, comparação com o mês anterior
  • Métricas de treino - VO2max, status de treino, prontidão para treino, previsão de corrida, limiar de lactato
  • FC/HRV - FC diária, variabilidade da frequência cardíaca, distribuição de zonas de FC por atividade
  • Bem-estar - sono, estresse, Body Battery, SpO2
  • Recordes pessoais/metas - PR, metas de condicionamento físico
  • Criação de treinos - treinos estruturados baseados em tempo/distância, intervalos, ritmo etc., enviados para o relógio Garmin (alvos de ritmo/FC/cadência/potência)
  • Gerenciamento de tênis de corrida - distância acumulada por tênis + rastreamento de desgaste
  • Privacidade - filtragem automática de PII (nome do proprietário, ID do perfil, coordenadas GPS) em todas as respostas da API

Requisitos

  • Python 3.10+
  • Gerenciador de pacotes uv
  • Conta Garmin Connect

Instalação

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

Autenticação

É necessária uma autenticação única inicial.

uv run python scripts/auth.py

Ao inserir e-mail e senha, o token OAuth é salvo em ~/.garminconnect/. Ao usar MFA, um prompt de inserção de código será exibido.

Se o token expirar, execute novamente ou defina as credenciais no arquivo .env para renovação automática.

Integração com Claude Desktop

Adicione em ~/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"
      ]
    }
  }
}

Use o caminho completo de uv. Verifique com which uv.

Após a configuração, reinicie o Claude Desktop para ativar as ferramentas.

Variáveis de ambiente (opcional)

Consulte .env.example para criar o arquivo .env.

VariávelDescriçãoPadrão
GARMIN_EMAILE-mail do Garmin Connect-
GARMIN_PASSWORDSenha do Garmin Connect-
GARMIN_TOKEN_DIRCaminho de armazenamento do token~/.garminconnect
GARMINTOKENSToken codificado em Base64 (para CI/Docker)-

Ferramentas fornecidas (24)

Activities

FerramentaDescriçãoPrincipais parâmetros
get_recent_activitiesLista de atividades de corrida recentes (inclui GAP, RWD)count (padrão 20, máximo 100)
get_activities_by_dateConsulta de atividades de corrida por intervalo de datasstart_date, end_date
get_activity_detailInformações detalhadas da atividade (inclui resistência, carga de impacto)activity_id
get_activity_splitsDados de splits por kmactivity_id
get_activity_weatherCondições climáticas durante a atividade (temperatura, umidade, velocidade do vento)activity_id
get_activity_typed_splitsAnálise de segmentos de inclinação ClimbPro (grau, GAP)activity_id

Summary

FerramentaDescriçãoPrincipais parâmetros
get_weekly_running_summaryResumo semanal de corridaend_date, weeks (máximo 12)
get_monthly_running_summaryResumo mensal de corrida + comparação com o mês anterioryear, month

Training

FerramentaDescriçãoPrincipais parâmetros
get_training_statusStatus de treinodate
get_training_readinessPontuação de prontidão para treinodate
get_vo2max_and_fitnessVO2max + idade de condicionamento físicodate
get_race_predictionsPrevisão de recordes 5K/10K/meia/maratonaNenhum
get_lactate_thresholdFC/ritmo de limiar de lactatostart_date, end_date

Heart Rate

FerramentaDescriçãoPrincipais parâmetros
get_heart_rate_dataDados diários de FCdate
get_hrv_dataVariabilidade da frequência cardíaca (HRV)date
get_activity_hr_zonesDistribuição de zonas de FC por atividadeactivity_id

Wellness

FerramentaDescriçãoPrincipais parâmetros
get_sleep_dataDados de sonodate
get_daily_wellnessEstresse/Body Battery/SpO2/frequência respiratóriadate
get_weekly_wellness_summaryTendência semanal de bem-estarend_date, weeks (máximo 4)

Records & Goals

FerramentaDescriçãoPrincipais parâmetros
get_personal_recordsRecordes pessoais (1K a maratona)Nenhum
get_goalsMetas de condicionamento físicostatus (active/completed/all)

Workout

FerramentaDescriçãoPrincipais parâmetros
create_running_workoutCriação de treino e upload para Garmin (baseado em tempo/distância, alvos de ritmo/FC/cadência/potência)name, steps, description
get_workoutsLista de treinos salvoscount (padrão 20, máximo 100)

Gear

FerramentaDescriçãoPrincipais parâmetros
get_running_gearLista de tênis de corrida + distância acumulada + desgasteNenhum

Guia de criação de treinos

Com create_running_workout, você pode criar treinos de corrida estruturados e sincronizá-los com o relógio Garmin.

Tipos de Step

TipoDescrição
warmupAquecimento
intervalIntervalo (alta intensidade)
recoveryTrote de recuperação
restDescanso total (parado)
cooldownDesaquecimento
repeatGrupo de repetições

Condições de término (duração do Step)

CampoTipoDescriçãoExemplo
duration_secondsintBaseado em tempo"duration_seconds": 300 (5 minutos)
distance_metersintBaseado em distância"distance_meters": 1000 (1 km)

É possível misturar steps baseados em tempo/distância em um único treino.

Tipos de Target

TipoFormato do valorExemplo
pacemin:sec/km"min": "4:30", "max": "4:50"
heart_ratebpm"min": 140, "max": 155
cadencespm"min": 170, "max": 185
powerwatts"min": 280, "max": 320

Opções

  • Memorando do treino: adicione uma descrição completa com o parâmetro description
  • Memorando do Step: adicione "description": "메모" a cada step
  • Pular recuperação final: adicione "skip_last_rest": true ao step de repetição

Exemplo: intervalo de 4x1km baseado em distância

{
  "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": "마무리 조깅"
    }
  ]
}

Para o guia detalhado de criação de treinos, consulte AGENTS.md; para a especificação completa de solicitações/respostas das ferramentas, consulte TOOL_SPEC.md.

Exemplos de uso

No Claude Desktop, você pode usar da seguinte forma:

  • "Resuma minha corrida desta semana"
  • "Analise a tendência de volume semanal dos últimos 3 meses"
  • "Calcule meu ritmo de treino Jack Daniels VDOT com base no meu VO2max"
  • "Verifique a distribuição de zonas de FC das atividades recentes e se estou mantendo a proporção 80/20"
  • "Crie um treino de intervalo 4x1km para amanhã"
  • "Verifique se algum dos meus tênis de corrida precisa ser substituído"
  • "Analise a correlação entre sono e prontidão para treino"
  • "Analise meu desempenho por segmento de inclinação nos trail runs recentes"
  • "Verifique a proporção de caminhada/corrida no trail running"

Metodologias de treino de corrida suportadas

MetodologiaDados utilizados
Jack Daniels VDOTVO2max, PR, previsão de corrida
Norwegian Double ThresholdLimiar de lactato, zonas de FC
80/20 TrainingDistribuição de zonas de FC
Hanson's MethodVolume semanal/mensal, tendência de ritmo
PfitzingerVolume semanal, análise de corridas longas
Análise de trail/ultraSegmentos de inclinação ClimbPro, clima, RWD, GAP

Desenvolvimento

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

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

Privacidade

Os seguintes campos de informações pessoais são removidos automaticamente de todas as respostas da API Garmin:

  • Informações do proprietário: ownerId, ownerFullName, ownerDisplayName, userId, URL da imagem de perfil
  • ID do perfil: userProfilePK, userProfileId, profileId, profileNumber
  • Informações do usuário: displayName, fullName, userPro, userRoles
  • Coordenadas GPS: startLatitude, startLongitude, endLatitude, endLongitude

Essa filtragem é processada recursivamente pela função strip_pii() de src/garmin_mcp/sanitize.py.

Stack de tecnologia

Licença

MIT