Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GARMIN_EMAILYesYour Garmin Connect login email
GARMIN_PASSWORDYesYour Garmin Connect login password
MCP_AUTH_PASSWORDYesPassword used for OAuth authorization to access the MCP server

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
get_sleepA

Sleep duration, sleep stages, sleep score, and overnight HRV.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to last night (yesterday). Pass today's date to get the most recent recorded sleep when you wake up.

get_recent_activitiesA

List recent activities with type, duration, distance, and average heart rate.

Args: limit: How many of the most recent activities to return. Capped at 50.

get_activity_detailsA

Detailed metrics for one activity, including splits and HR zones.

Args: activity_id: The activity's numeric Garmin ID, as returned by get_recent_activities.

get_training_loadB

Daily training load with acute and chronic load and current status.

Args: days: Number of recent days to summarise. Capped at 28.

get_hrv_statusA

Current HRV status, baseline range, and the last 7 nights of readings.

get_body_batteryA

Body battery values across the day, plus min, max, charged, and drained totals.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today.

get_steps_and_caloriesA

Daily step total, distance, calories, floors, and intensity minutes.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today.

get_resting_heart_rateA

Resting heart rate trend over the last days days.

Args: days: How many recent days to include. Capped at 28.

get_stressB

Stress levels across the day with average, max, and time-in-zone breakdown.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today.

get_training_readinessA

Daily training readiness score (0-100) with contributing factors.

The score reflects how prepared the user is to train, drawing on sleep, HRV status, recovery time, and recent training load.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today.

get_daily_briefingA

One-call morning snapshot: sleep, HRV, Body Battery, readiness, load, and RHR.

Fuses the individual recovery and training-load tools into a single payload so you can reason across them in one shot instead of making six separate calls. Each section is fetched independently and concurrently; a section that fails comes back null and is named in sections_unavailable rather than failing the whole briefing. Also returns rhr_vs_baseline_bpm, the most recent resting HR relative to its trailing average.

The server returns facts only and computes no training advice — interpret the numbers yourself (e.g. weigh readiness, HRV status, and Body Battery together).

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today. The sleep, Body Battery, and training-readiness sections honour this date; the HRV, training-load, and resting-HR sections always report their own most-recent trailing window. For the default (this-morning) call everything lines up; passing a past date yields a mixed snapshot.

get_fitness_metricsA

VO2 max (running and cycling), fitness age, and predicted race times.

Combines Garmin's "max metrics" tile (VO2 max, fitness age) with current race-time predictions for 5K, 10K, half marathon, and marathon.

Args: date: Calendar date for the VO2 max snapshot in YYYY-MM-DD format. Defaults to today.

get_personal_recordsA

Personal records across activity types (fastest 1K/5K/10K, longest run, etc.).

get_body_compositionA

Weight, body fat, and muscle-mass trend over recent days.

Returns one row per day Garmin has a reading for, plus the latest weight and average over the window.

Args: end_date: End of the window in YYYY-MM-DD format. Defaults to today. days: Window size in days. Capped at 90.

get_respirationA

Daily respiration rate: average, min, max, and waking vs. sleeping averages.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today.

get_weekly_summaryA

Weekly aggregates for a single metric.

Args: metric: One of "steps", "stress", or "intensity_minutes". weeks: How many recent weeks to include. Capped at 12. end_date: End of the window in YYYY-MM-DD format. Defaults to today.

get_strength_setsA

Set-by-set breakdown of a logged strength session: exercises, reps, and weight.

Parses Garmin's recorded sets for one strength_training activity into working sets (with the recognised exercise, rep count, and load) plus a per-exercise rollup and total training volume. Rest periods are included and flagged. Sets Garmin could not classify come back with a null exercise name.

Args: activity_id: The activity's numeric Garmin ID, from get_recent_activities.

get_endurance_scoreA

Garmin endurance score with its activity-type contributors.

The endurance score reflects accumulated aerobic capacity across activities. It only updates after qualifying activities, so a given day may have no value.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today.

get_hill_scoreA

Garmin hill score (climbing strength + endurance) for a date.

Combines a strength and an endurance component into an overall hill score. Requires qualifying climbing efforts, so it is often empty for flat-terrain athletes — an empty result is reported via note rather than an error.

Args: date: Calendar date in YYYY-MM-DD format. Defaults to today.

get_activity_weatherA

Weather conditions recorded during an activity (temp, humidity, wind).

Units follow your Garmin account's measurement system (US accounts report degrees Fahrenheit and mph).

Args: activity_id: The activity's numeric Garmin ID, from get_recent_activities.

preview_strength_workoutA

Assemble a strength workout and show what WOULD be created — no network call.

Resolves each exercise name to Garmin's catalog and returns a readable summary, the resolved Garmin name + confidence per exercise, warnings for anything that did not map cleanly, and a confirmation_token to pass to create_strength_workout. Always call this first and review the result.

Args: workout: the workout definition (name, blocks of sets/exercises).

create_strength_workoutA

Create a strength workout in your Garmin Connect library (a WRITE).

Requires writes to be enabled (GARMIN_WRITE_ENABLED) and a matching confirmation_token from preview_strength_workout (it binds to the exact workout previewed). The workout lands in your library — it reaches the watch only after you "Send to Device" in Garmin Connect and sync.

Args: workout: the workout definition (same shape as preview). confirmation_token: token returned by preview_strength_workout. confirm: dev/stdio only (no JWT secret) — set True to confirm.

list_workoutsA

List workouts saved in your Garmin Connect library (id, name, sport).

These are workout templates in the library — the source the watch syncs from — not logged activities. Use the ids with delete_workout.

Args: limit: maximum number of workouts to return (default 50).

delete_workoutA

Delete ONE workout from your Garmin Connect library (a WRITE, irreversible).

Preview-then-confirm: call without a token first — that call deletes nothing and returns the workout's name plus a confirmation_token. Review the name, then call again with the token to actually delete. Deleting from the library also removes the workout from the watch on its next sync. There is no bulk delete; confirm each workout individually.

Args: workout_id: id from list_workouts. confirmation_token: token from the preview call for this same id. confirm: dev/stdio only (no JWT secret) — set True to confirm.

preview_running_workoutA

Assemble a running workout and show what WOULD be created — no network call.

Validates the structure (one end condition per step, paired pace bounds, pace format) and returns a readable summary, sanity warnings, and a confirmation_token to pass to create_running_workout. Always call this first and review the result.

Args: workout: the workout definition (name, steps and/or repeat groups).

create_running_workoutA

Create a structured running workout in your Garmin Connect library (a WRITE).

Supports warmup/cooldown/interval/recovery steps, repeat groups for intervals, and optional pace targets ('M:SS' per km). Requires writes to be enabled (GARMIN_WRITE_ENABLED) and a matching confirmation_token from preview_running_workout. The workout lands in your library — get it on the watch via schedule_workout (syncs automatically for that date) or "Send to Device" in Garmin Connect.

Args: workout: the workout definition (same shape as preview). confirmation_token: token returned by preview_running_workout. confirm: dev/stdio only (no JWT secret) — set True to confirm.

schedule_workoutA

Put an existing library workout on a Garmin Connect calendar date (a WRITE).

Works for any workout type (running, strength, ...). A scheduled workout is pushed to the watch automatically on its next sync — no "Send to Device" needed. Reversible with unschedule_workout.

Args: workout_id: id from create_running_workout / create_strength_workout / list of workouts in Garmin Connect. date: calendar date, YYYY-MM-DD.

unschedule_workoutA

Remove a scheduled workout from the calendar (a WRITE; keeps the template).

The workout stays in your library — only the calendar entry is removed.

Args: schedule_id: id returned by schedule_workout.

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/Tyler-Irving/garmin-mcp'

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