garmin-mcp
garmin-mcp
Un servidor MCP local que expone tus datos de actividad, salud y entrenamiento de Garmin Connect (actividades, HRV, sueño, frecuencia cardíaca, estrés, body battery, training readiness, zonas de FC/potencia, umbral de lactato, FTP, VO2max, récords personales, entrenamientos, entrenamientos programados y planes de entrenamiento) como herramientas dentro de Claude Desktop.
Habla directamente con la API en vivo de Garmin Connect mediante la
biblioteca garminconnect.
Los datos son de solo lectura — nunca se escribe nada de vuelta a Garmin.
Cómo funciona la autenticación
El inicio de sesión de Garmin ocurre en dos lugares separados a propósito:
scripts/setup_auth.py— un script interactivo que ejecutas tú mismo en una terminal. Inicia sesión con tu correo electrónico/contraseña, te pide un código MFA si Garmin lo solicita, y guarda el token de sesión resultante en~/.garmin_mcp/tokens.El servidor MCP (
src/garmin_mcp/server.py), lanzado sin interfaz gráfica por Claude Desktop, solo carga y refresca silenciosamente ese token en caché. Nunca solicita MFA — Claude Desktop no le proporciona una terminal para pedirlo, y bloquearse en stdin colgaría las llamadas a las herramientas. Si la sesión en caché falta o ha caducado, las llamadas a las herramientas fallan con un error que te indica que vuelvas a ejecutarsetup_auth.py.
Tu contraseña de Garmin se almacena en el llavero de macOS (elemento/servicio
garmin-mcp, visible en Keychain Access), nunca se escribe en un archivo. Solo
se guarda tu correo electrónico de inicio de sesión de Garmin (no es secreto), en ~/.garmin_mcp/config.json.
Configuración
Instala las dependencias:
cd garmin_mcp uv syncEjecuta el inicio de sesión interactivo único:
uv run python scripts/setup_auth.pyIntroduce tu correo electrónico y contraseña de Garmin Connect (la contraseña se guarda en el llavero para la próxima vez). Introduce el código MFA cuando se te pida. Si se completa correctamente, verás una confirmación y la ruta de la caché del token.
Registra el servidor en Claude Desktop editando
~/Library/Application Support/Claude/claude_desktop_config.jsony añadiendo (junto a cualquier otra entrada demcpServers):{ "mcpServers": { "garmin": { "command": "uv", "args": ["run", "--project", "/Users/felix.guiony/Code/Perso/garmin_mcp", "garmin-mcp"] } } }Sal por completo de Claude Desktop (Cmd+Q, no solo cierres la ventana) y vuelve a abrirlo. El icono de herramientas/martillo debería mostrar las herramientas
garmin.
Herramientas
Herramienta | Descripción |
| Actividades recientes, las más recientes primero (paginado, filtro opcional por tipo) |
| Detalle completo de una actividad: resumen + series temporales por métrica |
| Datos de vueltas/parciales de una actividad |
| FC en reposo diaria + línea temporal de FC intraday |
| Pasos, calorías, FC en reposo, distancia, pisos, minutos de intensidad |
| Etapas del sueño, duración, puntuación del sueño |
| Variabilidad de la frecuencia cardíaca |
| Reserva de energía de Body Battery durante un rango de fechas |
| Nivel de estrés de todo el día |
| Puntuación de Training Readiness y factores contribuyentes |
| Identidad, preferencias de unidades, ajustes personales (FC máxima, FC en reposo, peso, altura, VO2max), zonas de FC y zonas de potencia por deporte |
| Umbral de lactato corriendo: frecuencia cardíaca, potencia y velocidad |
| Último Functional Threshold Power de ciclismo |
| FTP histórico para un deporte durante un rango de fechas |
| Datos de métricas máximas (p. ej., VO2max) durante un rango de fechas |
| Tendencia de la frecuencia cardíaca en reposo diaria durante un rango de fechas |
| Garmin Fitness Age para una fecha determinada |
| Récords personales |
| Plantillas de entrenamiento guardadas, las más recientes primero (paginado) |
| Estructura completa de un entrenamiento: segmentos, objetivos, intervalos |
| Calendario de entrenamientos programados para un mes determinado |
| Detalle de una instancia de entrenamiento programado |
| Planes de entrenamiento |
| Detalles de un plan de entrenamiento específico |
| Detalles de un plan de entrenamiento adaptativo específico |
Todos los parámetros de fecha aceptan YYYY-MM-DD y su valor por defecto es hoy.
Solución de problemas
Una llamada de herramienta devuelve un mensaje "Garmin session error" / "run setup_auth.py". Tu token de refresco en caché ha caducado o ha sido revocado (esto ocurre de vez en cuando, p. ej., tras un cambio de contraseña o un largo periodo de inactividad). Vuelve a ejecutar:
uv run python scripts/setup_auth.pyLímite de peticiones. Garmin Connect ocasionalmente limitará la velocidad de las peticiones rápidas; la biblioteca subyacente reintenta automáticamente los fallos transitorios, pero si ves un error de límite de peticiones, espera un poco y vuelve a intentarlo.
Verificación del servidor directamente, fuera de Claude Desktop:
uv run mcp dev src/garmin_mcp/server.pyabre el MCP Inspector para que puedas llamar a cada herramienta manualmente y comprobar su salida/esquema.
Estructura del proyecto
garmin_mcp/
pyproject.toml
src/garmin_mcp/
auth.py # keychain + token-cache helpers
server.py # FastMCP server and tool definitions
scripts/
setup_auth.py # interactive one-time/occasional loginThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sovnheim/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server