Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ENABLE_APPLENoEnable Apple Health integration.false
GARMIN_EMAILNoYour Garmin Connect email address. Required if ENABLE_GARMIN is true and no tokens exist.
ENABLE_GARMINNoEnable Garmin Connect integration.true
GARMIN_PASSWORDNoYour Garmin Connect password. Required if ENABLE_GARMIN is true and no tokens exist.
APPLE_EXPORT_DIRNoPath to the folder containing Apple Health exports. Required if ENABLE_APPLE is true.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
garmin_daily_readinessA

Resume la recuperacion de un dia: training readiness, HRV, sueño, FC reposo, estres y Body Battery. La herramienta clave para decidir si empujar o descansar.

Args: params: date (YYYY-MM-DD), response_format (markdown|json).

Returns: str: dict con readiness_score, fc_reposo, estres_medio, body_battery_min/max, sueño_score, sueño_horas, hrv_media_noche; o "Error: ...".

garmin_get_activitiesA

Lista las ultimas actividades registradas con sus metricas resumidas.

Args: params: limit (1-50), response_format (markdown|json).

Returns: str: lista con id, nombre, tipo, fecha, distancia_m, duracion_s, fc_media, potencia_media_w; o "Error: ...".

garmin_get_activityA

Devuelve el detalle de una actividad concreta de Garmin.

Args: params: activity_id (str), response_format (markdown|json).

Returns: str: metricas clave (distancia, duracion, desnivel, FC media/max, potencia, calorias, VO2max, training effect); o "Error: ...".

garmin_sleepA

Desglose del sueño de una noche: fases, duracion total y puntuacion.

Args: params: date (YYYY-MM-DD), response_format (markdown|json).

Returns: str: dict con horas totales, fases (profundo/ligero/rem/despierto en horas), score y FC/respiracion media si estan disponibles; o "Error: ...".

garmin_hrvA

Variabilidad de la frecuencia cardiaca (HRV) de la noche indicada.

Args: params: date (YYYY-MM-DD), response_format (markdown|json).

Returns: str: dict con media de la ultima noche, media semanal, estado (balanced/ unbalanced/low) y rango base; o aviso si el dispositivo no reporta HRV.

garmin_hr_zonesA

Estima tus zonas de frecuencia cardiaca (Z1-Z5) a partir de tus datos.

Determina la FC maxima por prioridad: max_hr (si lo das) > mayor FC max observada en tus ultimas actividades > formula de Tanaka (208 - 0.7*edad). Usa la FC de reposo de Garmin. Calcula las zonas por Karvonen (FC reserva) o por %FCmax.

OJO e-bike: con bici electrica cuesta llegar a la FC maxima real, asi que la estimacion observada puede quedarse corta. Un test de campo o dar tu max_hr real da mejores zonas. Esta tool NO escribe en Garmin: las zonas se configuran a mano en Garmin Connect (Ajustes de usuario > Zonas de FC).

Args: params: max_hr?, age?, scan_activities (1-100), method (karvonen|hrmax), response_format (markdown|json).

Returns: str: FCmax y FC reposo usadas, metodo, fuente de la FCmax, y la tabla de zonas Z1-Z5 con su rango en ppm; o "Error: ...".

garmin_pace_zonesA

Estima las zonas de ritmo de carrera (Z1-Z5) a partir del ritmo umbral.

Si das threshold_pace lo usa; si no, intenta leer tu umbral de lactato de Garmin. Las zonas se calculan como multiplos del ritmo umbral (modelo clasico de 5 zonas).

Args: params: threshold_pace? ('M:SS'/km), response_format (markdown|json).

Returns: str: ritmo umbral usado y la tabla de zonas Z1-Z5 con su rango de ritmo (min/km); o "Error: ...".

garmin_activity_splitsA

Devuelve las vueltas (laps) de una actividad con su ritmo, FC y distancia.

Util para ver como dosifico un corredor. Nota: usa las VUELTAS de la actividad; si el reloj tiene auto-lap cada km, saldra el ritmo km a km. Si la actividad no tiene vueltas (no se pulso lap ni hay auto-lap), saldra como un unico tramo.

Args: params: activity_id (str), response_format (markdown|json).

Returns: str: lista de splits con distancia_km, tiempo, ritmo (min/km) y FC media; o "Error: ...".

garmin_race_predictionsA

Predicciones de tiempo de Garmin para 5K, 10K, media maraton y maraton.

Args: params: response_format (markdown|json).

Returns: str: tiempos estimados por distancia; o "Error: ...".

garmin_personal_recordsB

Lista tus records personales de Garmin (mejores marcas).

Args: params: response_format (markdown|json).

Returns: str: lista de records con tipo, valor y fecha; o "Error: ...".

garmin_fitness_metricsB

VO2max (correr y ciclismo) y edad fitness de Garmin.

Args: params: date? (YYYY-MM-DD, por defecto hoy), response_format (markdown|json).

Returns: str: vo2max_running, vo2max_cycling y edad_fitness; o "Error: ...".

garmin_training_statusA

Estado de entrenamiento, carga aguda/cronica, VO2max y endurance score.

Reune training status (estado, carga aguda, ratio agudo/cronico), VO2max y, si estan disponibles, endurance score y hill score.

Args: params: date? (YYYY-MM-DD, por defecto hoy), response_format (markdown|json).

Returns: str: dict con estado de entrenamiento y metricas de carga; o "Error: ...".

garmin_schedule_workoutA

Crea un entreno estructurado y lo programa en una fecha del calendario de Garmin.

SEGURIDAD: por defecto NO escribe (dry_run=True): devuelve una previsualizacion. Para crear y programar de verdad, hay que llamar con dry_run=False.

Cada paso tiene un tipo (warmup/interval/recovery/cooldown/rest), una duracion en minutos y un objetivo opcional:

  • ciclismo: ZONA DE FC (hr_zone 1-5) o rango de FC (hr_min/hr_max) o potencia.

  • correr (sport='running'): RITMO en 'M:SS' por km (pace_fast/pace_slow), o zona/rango de FC.

Args: params: date (YYYY-MM-DD), sport (por defecto cycling), name, steps[], description?, dry_run, response_format (markdown|json).

Returns: str: en dry_run, la previsualizacion (pasos + duracion estimada). Si se ejecuta de verdad, el workout_id creado y la confirmacion de programacion; o "Error: ...".

garmin_list_workoutsA

Lista los entrenos guardados en tu biblioteca de Garmin (con su id).

Util para obtener el workout_id que necesitan garmin_schedule_workout (reprogramar) o garmin_delete_workout.

Args: params: limit (1-100), response_format (markdown|json).

Returns: str: lista con id, nombre, deporte y duracion_s; o "Error: ...".

garmin_delete_workoutA

Borra un entreno guardado de tu biblioteca de Garmin.

SEGURIDAD: requiere confirm=True. Sin confirmacion no borra nada.

Args: params: workout_id (str), confirm (bool), response_format (markdown|json).

Returns: str: confirmacion de borrado o aviso de que falta confirmar; o "Error: ...".

garmin_add_body_compositionA

Guarda en Garmin Connect una medicion de peso y composicion corporal.

Util si tu bascula no se sincroniza con ninguna app: le dictas los valores y quedan registrados en Garmin, donde luego los lee fitness_body_composition para ver la evolucion.

SEGURIDAD: por defecto NO escribe (dry_run=True): devuelve una previsualizacion. Llama con dry_run=False para guardarlo.

Args: params: weight_kg (obligatorio), date?, time?, body_fat_pct?, water_pct?, muscle_mass_kg?, bone_mass_kg?, visceral_fat?, bmi?, basal_met_kcal?, metabolic_age?, dry_run, response_format.

Returns: str: previsualizacion de lo que se guardaria, o confirmacion del registro; o "Error: ...".

fitness_profileA

Muestra el perfil configurado (FCmax, FC reposo, edad, ritmo umbral).

Estos valores se guardan en el .env (USER_MAX_HR, USER_RESTING_HR, USER_AGE, USER_THRESHOLD_PACE) y los usan por defecto las herramientas de zonas cuando no se los indicas explicitamente. Asi no tienes que repetirlos cada vez.

Args: params: response_format (markdown|json).

Returns: str: los valores del perfil, o un aviso de que estan sin configurar.

fitness_planned_vs_actualA

Compara los entrenos PLANIFICADOS con las actividades REALMENTE ejecutadas en un rango de fechas, y calcula la adherencia al plan.

"Planificado" = solo entrenos estructurados de tu biblioteca que hayas programado (no las actividades ya completadas que Garmin lista en el calendario). El cruce es por dia: si un dia tenia entreno programado y hubo actividad, se considera cumplido; si habia plan y no hubo actividad, no realizado; si hubo actividad sin plan, extra.

Args: params: start (YYYY-MM-DD), end? (YYYY-MM-DD, por defecto = start), response_format (markdown|json).

Returns: str: resumen con dias planificados, cumplidos, no realizados y extra, porcentaje de adherencia, y el detalle por dia; o "Error: ...".

fitness_weekly_summaryA

Resumen de entrenamiento y recuperacion de un periodo (por defecto una semana).

Cruza Garmin (actividades, km, horas) con Apple (sueño medio, HRV media, FC reposo media, pasos, entrenos de fuerza). Requiere haber importado Apple para la parte de recuperacion.

Args: params: start (YYYY-MM-DD), end? (por defecto start+6 dias), response_format.

Returns: str: resumen agregado del periodo; o "Error: ...".

fitness_recovery_vs_trainingA

Cruza, dia a dia, lo que entrenaste (Garmin + Apple) con tu recuperacion (HRV, sueño y FC en reposo de Apple).

Sirve para ver correlaciones: si la HRV baja tras dias duros, si duermes peor los dias de fuerza, etc. Requiere Apple importado para la recuperacion.

Args: params: start (YYYY-MM-DD), end? (por defecto start+6 dias), response_format.

Returns: str: tabla por dia con entreno y metricas de recuperacion; o "Error: ...".

fitness_body_compositionA

Evolucion de peso, % de grasa y masa muscular/magra en un periodo.

Lee de Garmin (bascula / entradas manuales) y de Apple Health, y muestra los valores por fecha mas la tendencia (diferencia entre el primero y el ultimo). Pensado para seguimiento mensual, no para pesarse a diario.

Args: params: start (YYYY-MM-DD), end? (por defecto start+6 dias; usa un rango amplio, p. ej. 3 meses, para ver tendencia), response_format.

Returns: str: series por fecha y tendencias de peso/grasa/musculo; o "Error: ...".

fitness_daily_briefA

Resumen de la mañana: como vienes de recuperacion y que tienes planificado hoy.

Junta en una sola llamada: recuperacion de anoche (HRV, sueño y FC reposo de Apple, con Garmin como respaldo), lo que entrenaste ayer, y los entrenos que tengas programados para hoy en Garmin.

Args: params: date? (YYYY-MM-DD, por defecto hoy), response_format.

Returns: str: brief del dia; o "Error: ...".

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/bynoe17/DkwtMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server