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

Capabilities

Features and capabilities supported by this server

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.

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.

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