Garmin Training MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Garmin Training MCPWhat's my training today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Garmin Training MCP
Servidor MCP que conecta Claude con tu cuenta de Garmin Connect para que Claude pueda ver tus actividades, tu sueño y tus datos de recuperación, y con eso crear y adaptar día a día tu plan de entrenamiento (running, natación, ciclismo, fuerza) según tu meta.
Modos de uso
Modo | Transporte | Dónde corre | Ventaja |
Local | stdio | Tu ordenador, con Claude Desktop | Cero infraestructura, cero latencia |
VPS (Dokploy) | HTTP | Tu VPS, accesible por HTTPS | Accesible desde Claude Desktop, Claude Code, móvil... |
Puedes usar ambos simultáneamente: el local para uso rápido en el PC, el VPS para cuando estés fuera o desde el móvil.
Related MCP server: Garmin Coach MCP
1. Instalación
cd garmin-training-mcp
python3 -m venv venv
source venv/bin/activate # en Windows: venv\Scripts\activate
pip install -r requirements.txt2. Credenciales de Garmin
La primera vez que el servidor se conecte necesita tu email y contraseña de Garmin
Connect (las mismas que usas en la app). Después de ese primer login, el servidor
guarda un token de sesión en ~/.garmin_mcp/tokens y no vuelve a pedir credenciales
(hasta que el token caduque).
export GARMIN_EMAIL="tu_email@ejemplo.com"
export GARMIN_PASSWORD="tu_contraseña"3. Modo local (stdio con Claude Desktop)
3.1 Configurar Claude Desktop
Abre (o crea) el archivo de configuración de Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"garmin-training": {
"command": "/ruta/absoluta/a/garmin-training-mcp/venv/bin/python3",
"args": ["/ruta/absoluta/a/garmin-training-mcp/server.py"],
"env": {
"GARMIN_EMAIL": "tu_email@ejemplo.com",
"GARMIN_PASSWORD": "tu_contraseña"
}
}
}
}Reinicia Claude Desktop. Verás "garmin-training" en las herramientas disponibles.
4. Modo VPS con Dokploy
4.1 Subir el código a GitHub
cd garmin-training-mcp
git init && git add -A && git commit -m "initial"
git remote add origin https://github.com/TU_USUARIO/garmin-training-mcp.git
git push -u origin main4.2 Crear el proyecto en Dokploy
En tu VPS con Dokploy: Projects → Create Project → nombre
garmin-trainingApplications → Deploy from GitHub → selecciona el repo
Build Settings: Dokploy detecta el
Dockerfileautomáticamente. Si no:Build Pack:
DockerfileDockerfile path:
Dockerfile
Puerto:
8080
4.3 Variables de entorno en Dokploy
En tu proyecto → Environment → añade:
GARMIN_EMAIL=tu_email@example.com
GARMIN_PASSWORD=tu_contraseña
SUPABASE_URL=https://tu-proyecto.supabase.co # opcional
SUPABASE_KEY=tu_clave_anon # opcional
MCP_PORT=8080⚠️ Si usas Supabase, crea primero las tablas (ver sección más abajo).
4.4 Dominio + HTTPS
En Dokploy → Domains → añade tu dominio (ej:
garmin.tudominio.com)Dokploy configura SSL automáticamente con Let's Encrypt
Tu MCP server queda accesible en
https://garmin.tudominio.com/mcp/
4.5 Conectar Claude al VPS
En claude_desktop_config.json (o .claude/settings.json para Claude Code):
{
"mcpServers": {
"garmin-training": {
"transport": {
"type": "streamable-http",
"url": "https://garmin.tudominio.com/mcp/"
}
}
}
}Reinicia Claude Desktop. Las mismas tools estarán disponibles, pero ahora corriendo en tu VPS.
4.6 Probar la conexión
curl -X POST https://garmin.tudominio.com/mcp/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'5. Cómo usarlo con Claude
Ejemplos de cosas que puedes pedirle a Claude una vez conectado:
"Mi meta es correr una media maratón en menos de 1h50 el 15 de noviembre. Entreno 4 días por semana. Créame un plan."
"Buenos días, ¿qué toca hoy?" → Claude usará
get_daily_briefing"¿Puedo hacer series hoy o mejor lo dejo suave?" →
get_training_recommendation"Ayer nadé 2000m, ¿cómo voy?" →
get_recent_activities/get_activity_detail"He dormido fatal esta semana, ajusta el plan" →
get_sleep+save_training_plan"¿Cómo entrené el mes pasado?" →
query_activities_by_date_range
6. Herramientas (tools) que expone el servidor
Tool | Para qué sirve |
| Actividades de los últimos N días |
| Detalle + parciales de una actividad concreta |
| Sueño (score, fases, horas) de los últimos N días |
| HRV, FC reposo, estrés, Body Battery, training readiness |
| Estado de forma general y predicciones de marca |
| Actividades entre dos fechas concretas |
| Minutos entrenados por semana y ratio ACWR |
| Veredicto de "¿qué puedo hacer hoy?" con razones |
| Importa el |
| Actividades importadas de Strava |
| Garmin + Strava juntas, ordenadas por fecha |
| Leer / definir tu meta |
| Leer / guardar el plan |
| Histórico de ajustes al plan |
| Ejercicios de fuerza/core reales |
| Registra una sesión de gimnasio |
| Histórico de sesiones de fuerza |
| Resumen todo-en-uno para decidir el ajuste del día |
7. Multi-dispositivo con Supabase (opcional)
Por defecto, el objetivo/plan/diario/histórico se guardan en JSON local.
Si defines SUPABASE_URL + SUPABASE_KEY, se usa Supabase (Postgres en la nube).
Crear las tablas en Supabase
En el SQL Editor de tu proyecto Supabase:
create table if not exists goals (
id int primary key default 1,
sport text,
description text,
target_date date,
details jsonb,
updated_at timestamptz default now()
);
create table if not exists training_plan (
id int primary key default 1,
plan jsonb,
updated_at timestamptz default now()
);
create table if not exists journal (
id bigserial primary key,
ts timestamptz default now(),
note text
);
create table if not exists strength_log (
id bigserial primary key,
date date,
exercises jsonb,
notes text,
logged_at timestamptz default now()
);En Project Settings → API → copia la Project URL y la clave anon/public.
Importar histórico de Strava
Strava → Configuración → Mi cuenta → "Descargar o eliminar tu cuenta"
Dentro del ZIP:
activities.csvDile a Claude: "Importa mi CSV de Strava, está en /ruta/activities.csv"
Puedes re-importar: las actividades no se duplican
8. Notas y límites
Librería no oficial: si Garmin cambia su API, puede dejar de funcionar hasta que se actualice
garminconnect(pip install -U garminconnect).Sin push/webhooks: Claude tira de los datos cuando se lo pides; no hay notificación automática en tiempo real.
Los datos de fuerza dependen de que tu reloj/app los registre con detalle.
El motor de recomendación es un motor de reglas transparente, no un diagnóstico médico. Si hay dolor o enfermedad, eso pesa más que cualquier número.
Variables de entorno
Variable | Requerido | Descripción |
| Sí | Email de Garmin Connect |
| Sí | Contraseña de Garmin Connect |
| No | URL del proyecto Supabase |
| No | Clave anon/public de Supabase |
| No | Host del servidor HTTP (default: |
| No | Puerto del servidor HTTP (default: |
This 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 Servers
- AlicenseBqualityAmaintenanceConnects Claude Desktop to Garmin Connect, enabling natural language queries of fitness activity data, health metrics, sleep analysis, workout management, and device information with 94 available tools.1001MIT
- Flicense-qualityBmaintenanceConnects Claude to Garmin Connect data for personalized running coaching, including morning readiness checks, post-run analysis, weekly reviews, and goal tracking.
- Flicense-qualityDmaintenanceConnects Claude Desktop to your Garmin Connect running data stored locally in SQLite, enabling querying, syncing, and AI analysis of fitness activities.1
- Flicense-qualityCmaintenanceConnects Garmin watch data to Claude Desktop, allowing users to ask natural language questions about their health and activity data from Garmin Connect.
Related MCP Connectors
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
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/javipaur/MCP-Garmin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server