Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GARMINTOKENSNoOverride the directory where Garmin OAuth tokens are stored. Default is ~/.garminconnect.
GARMIN_MCP_ENABLE_WRITESNoSet to '1' to enable write operations (rename activity, log weight/hydration). Default is '0'.

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_whoamiA

Identify the signed-in Garmin account and its unit preferences.

garmin_devicesA

List the Garmin devices registered to the account, newest sync first.

garmin_daily_summaryB

Whole-day wellness rollup: steps, calories, distance, floors, stress, body battery.

garmin_sleepB

Sleep for the night ending on the given date: stages, score and overnight vitals.

garmin_heart_rateB

Heart rate for a day. Summary gives min/max/resting; raw adds the 2-minute series.

garmin_hrvB

Overnight heart rate variability: last-night average, baseline and status.

garmin_stressB

All-day stress: average, max and time spent in each stress band.

garmin_body_batteryA

Body Battery charge and drain per day over a date range (default: last 7 days).

garmin_stepsC

Daily step totals over a range, or 15-minute buckets for one day via intraday_date.

garmin_spo2B

Pulse oximetry for a day: average and lowest overnight SpO2.

garmin_respirationB

Breathing rate for a day: waking, sleeping, highest and lowest breaths per minute.

garmin_intensity_minutesB

Moderate and vigorous intensity minutes for a day, against the weekly goal.

garmin_training_readinessC

Training readiness score for a day, with the factors that drove it.

garmin_training_statusB

Training status, acute/chronic load balance and VO2 max as of a date.

garmin_vo2maxB

VO2 max, fitness age and heat/altitude acclimation as of a date.

garmin_race_predictionsA

Predicted race times for 5K, 10K, half and full marathon.

garmin_personal_recordsB

Personal records across activity types.

garmin_activitiesB

Most recent activities, newest first. activity_type filters e.g. running, cycling.

garmin_activities_by_dateA

Activities within a date range (default: last 7 days), oldest first.

garmin_last_activityA

The most recently recorded activity.

garmin_activityC

One activity in detail. raw=true returns the full payload including chart samples.

garmin_activity_splitsB

Per-lap splits for an activity.

garmin_activity_weatherC

Weather recorded during an activity.

garmin_weightB

Weigh-ins over a date range (default: last 7 days), with body composition where recorded.

garmin_briefingA

Morning snapshot in one call: sleep, HRV, Body Battery, readiness, stress and RHR.

Fetches each section concurrently so answering "how am I doing today?" costs
one round trip instead of six. A section that fails is named in
``sectionsUnavailable`` rather than failing the whole briefing, and a
section the device does not record simply reports its own note.

Returns the numbers only — no training advice. Read readiness, HRV and Body
Battery together rather than any one alone.
garmin_api_getA

Call any Garmin Connect API path directly (read-only GET).

For endpoints the dedicated tools do not cover. Paths look like '/usersummary-service/usersummary/daily/{displayName}?calendarDate=2026-09-19'. Prefer a dedicated tool when one exists — this returns unshaped payloads.

garmin_training_historyA

Weekly training volume over recent weeks — the input for writing a plan.

Returns one row per week (distance, sessions, longest run, average pace) plus overall totals, in a single call. Use this before designing a plan rather than fetching activities one range at a time.

garmin_export_activitiesB

Export activities in a date range as CSV — the export Garmin makes awkward.

One header row then one row per activity, newest last. Narrow the range if the response comes back truncated.

garmin_create_workoutA

Create a structured running workout on Garmin, optionally scheduling it.

Steps are plain objects, in order. Each needs a ``kind`` (warmup, run,
interval, recovery, rest, cooldown) and a ``length`` — a distance like
"800m", "5km" or a time like "10min", "90s". Optionally add ``pace``
("4:30" or a range "4:30-4:20", minutes per kilometre) or
``heart_rate_zone`` (1-5), and a ``note``.

Repeats nest: ``{"repeat": 6, "steps": [{"kind": "interval", "length":
"800m", "pace": "4:30-4:20"}, {"kind": "recovery", "length": "90s"}]}``.

Once scheduled it appears on the watch on that date.
garmin_schedule_workoutA

Put an existing workout on the calendar for a given date.

garmin_list_workoutsB

List the workouts saved on the Garmin account, newest first.

garmin_scheduled_workoutsB

List workouts scheduled in a given month (defaults to the current one).

garmin_unschedule_workoutB

Remove a scheduled workout from the calendar. The workout itself is kept.

garmin_delete_workoutB

Delete a saved workout. Only affects plans — recorded activities cannot be deleted.

garmin_submit_mfa_codeA

Finish signing in to Garmin with the one-time code it emailed.

Only needed when a Garmin tool has just reported that a code was sent. The code is valid for 30 minutes; afterwards the saved tokens last about a year and this is not asked for again.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3/5.0

Scored across 35 tools

Disambiguation4/5

Most tools target a distinct metric or resource, and descriptions generally make boundaries clear. A few adjacent tools could be confused, such as garmin_last_activity versus garmin_activities, or garmin_create_workout with optional scheduling versus garmin_schedule_workout.

Naming Consistency4/5

All tools share the garmin_ prefix and use snake_case, which provides strong consistency. However, patterns vary between noun-style names like garmin_sleep and garmin_steps, verb_noun names like garmin_create_workout, and adjectival forms like garmin_scheduled_workouts.

Tool Count2/5

Thirty-five tools is a very large surface for one MCP server, even for a broad health/activity domain. Several metric-specific tools could plausibly be consolidated or grouped, and the count exceeds the range where agents can efficiently discover and select the right tool.

Completeness4/5

The server covers the main Garmin domains well: wellness metrics, activity retrieval and detail, workout creation and scheduling, and account auth. Minor gaps exist, such as no workout update operation and no nutrition/hydration coverage, but garmin_api_get provides a general escape hatch.

Maintenance

ActivityMaintained
ResponsivenessNo issues