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.

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
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

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/the-mace/garmin-mcp-local'

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