Skip to main content
Glama
the-mace

garmin-mcp-local

by the-mace

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GARMIN_EMAILYesYour Garmin Connect email address. Used for authentication to Garmin's API.
ALERT_EMAIL_TONoOptional: Email address to send failure alerts to. Leave unset to disable alerting.
GARMIN_PASSWORDYesYour Garmin Connect password. Used for authentication to Garmin's API.
GARMIN_MAX_RETRIESNoOptional: Maximum number of retries on rate limit or server errors.
GARMIN_TOKEN_STORENoOptional: Path where the session token is cached. Defaults to a directory in the project.
GARMIN_MIN_REQUEST_INTERVAL_SECONDSNoOptional: Minimum delay between API requests for rate limiting. Default is likely 1 second.

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
list_activitiesA

List activities from the local cache, most recent first.

start_date/end_date: 'YYYY-MM-DD', inclusive, optional.
activity_type: exact match against Garmin's granular activity_type
    (e.g. 'road_biking', 'gravel_cycling', 'indoor_cycling', 'treadmill_running'), optional.
sport_type: exact match against Garmin's broader sport_type grouping
    (e.g. 'CYCLING', 'RUNNING', 'WALKING') -- prefer this over activity_type
    for questions like "how many bike rides" or "how many runs", since it
    groups all the granular variants (road/gravel/indoor cycling, etc.)
    together in one filter instead of requiring you to enumerate and
    manually classify a mixed activity list yourself. Optional.
get_activity_detailA

Full detail for one activity: summary row + laps + HR/power zones + gear.

get_daily_health_metricsB

Daily steps/HR/stress/body battery/SpO2/respiration for a date range (inclusive, 'YYYY-MM-DD').

get_sleepA

Nightly sleep stages + sleep score breakdown for a date range (inclusive, 'YYYY-MM-DD').

get_training_trendsB

Training status, readiness, VO2max, load (ACWR), endurance/hill scores, and race predictions for a date range (inclusive, 'YYYY-MM-DD').

get_sync_statusA

Recent sync_log entries -- what's been fetched, what failed/was rate-limited, and the current resume cursors for every category. Check this before trusting 'no data' as a real gap vs. a not-yet-synced range.

execute_sqlA

Run an ad hoc read-only SQL query against the local cache. Only SELECT/WITH/EXPLAIN/PRAGMA table_info statements are allowed.

sync_nowA

Explicitly hit the live Garmin API to pull new data since the last successful sync, for every category. Rate-limited; respects any active cooldown from a previous 429. Never called automatically by other tools.

backfill_batch_nowB

Run one controlled batch of API-driven backfill per category, walking further back into history than the bulk export (or a prior backfill run) reached. Call repeatedly to walk the full history without one giant fetch.

`categories`, if given, restricts the batch to that subset (e.g.
["hrv_daily"]) instead of every category -- one of: activities,
daily_health_metrics, sleep, hrv_daily, training_readiness,
training_status, race_predictions, body_composition.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct aspect of Garmin data: sync management, data retrieval for specific domains (activities, health, sleep, training), and direct SQL access. There is no functional overlap.

Naming Consistency5/5

All tools use a consistent snake_case verb_noun pattern (e.g., get_sleep, list_activities, sync_now), with 'get' and 'list' as common prefixes, making the naming predictable.

Tool Count5/5

9 tools is ideal for a Garmin data server: it covers core operations (sync, backfill, query) without being overwhelming or sparse. Each tool serves a clear purpose.

Completeness4/5

The set provides direct tools for activities, health metrics, sleep, and training trends, but lacks dedicated tools for backfilled categories like body composition or race predictions. However, the execute_sql tool allows ad hoc queries to fill these gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues