Skip to main content
Glama
Garmin MCP for macOS

Garmin MCP for macOS

by devnjw

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GARMIN_MCP_TIMEZONENoOptional IANA timezone setting, e.g. "Europe/Berlin". Without this setting, the server reads the Mac's configured zone through /etc/localtime, falling back to UTC if unavailable. Garmin's calendar dates are preserved; summary timestamps are displayed in the selected timezone.

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_api_activityB

Full activity details, including fields omitted from the summary tool. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_activity_workoutsB

Workouts associated with an activity. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_activity_searchA

Search activities with every documented filter. Distances and elevations are meters, durations are seconds, dive depth is centimeters, and power is watts. Array filters become repeated query parameters. Supply all four coordinates for a bounding box. Follow pagination with start and limit. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_heart_rate_zonesC

Heart-rate zone settings. generate_defaults defaults to false; setting it true may generate account zone settings when none exist. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_download_activityA

Download the original activity ZIP to a private local directory. Returns file metadata; never extracts the archive. This tool writes a new file on this Mac. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_fitness_ageA

Fitness-age data as of a date. full_history_scan controls the look-back search. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_weight_goalsB

Effective weight goals for a date interval. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_hrv_dailyA

Full daily HRV summary and readings. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_hrv_summariesA

HRV summaries across a date interval. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_food_logsA

Food logs with optional goals, nutrition, media and meal filters. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_menstrual_summaryC

Menstrual-cycle summary for a date. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_menstrual_dayC

Menstrual-cycle day view, including optional analysis and prediction reference date. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_sleep_dailyC

Full sleep response for a date, with fields preserved. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_sleep_summariesA

Sleep summaries across a date interval, including empty placeholders from Garmin. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_profileC

Full profile settings. May include account identifiers and personal information. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_hydrationA

Daily hydration statistics. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_stepsA

Daily step statistics. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_stressA

Daily stress statistics. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_daily_summaryA

Full daily user summary, preserving all Garmin fields. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_daily_summariesB

User summary range response, including the original data envelope. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_weight_allA

All weight measurements from the weight/all endpoint. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_weight_rangeB

Weight range response; include_all controls all versus latest daily entries. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_body_batteryA

Body Battery readings and optional interval grouping using chunks. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_spo2B

Daily oxygen saturation and acclimation data. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_heart_rateA

Daily heart-rate readings and summary. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_api_wellness_activitiesB

Wellness activity summaries across a date interval. Raw JSON fields are not normalized. Date ranges default to 7 days and allow at most 31 days (activity search uses pagination).

garmin_statusA

Check whether GARMIN_PERSONAL_API_KEY is configured without revealing its value. verify=True performs a Garmin authentication check, without returning profile data.

garmin_daily_summaryB

Daily steps, energy, heart rate, stress, Body Battery and intensity minutes. Date YYYY-MM-DD; default today in the configured timezone.

garmin_sleepA

Sleep duration/stages in seconds, score and overnight vitals. Inclusive wake-up dates; defaults to the last 7 days, maximum 90. Missing days are explicit.

garmin_hrvA

Nightly HRV and weekly average in milliseconds, Garmin baseline and status. Inclusive wake-up dates, default last 7 days, maximum 90.

garmin_body_batteryA

Body Battery charge/drain points and observed sample minimum/maximum. Inclusive dates, default last 7 days, maximum 90. No invented recovery score.

garmin_activitiesA

Search workouts by Garmin's local activity dates; optional type e.g. running. Default last 7 days. limit 1–50, offset >=0. Follow next_offset to check for more pages.

garmin_activityA

Summary measurements for one activity: meters, seconds, bpm, watts and training effect. Use activity_id from garmin_activities. Does not download FIT files or return GPS tracks.

garmin_dayA

Combine daily summary, sleep, HRV, Body Battery and workouts for one date. Check all section statuses and activity pagination; incomplete data is marked partial.

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

Disambiguation2/5

There are two overlapping tool families: raw `garmin_api_*` endpoints and normalized `garmin_*` convenience tools. Many pairs are easily confused, such as `garmin_api_daily_summary` vs `garmin_api_daily_summaries` vs `garmin_daily_summary`, or `garmin_api_sleep_summaries` vs `garmin_api_sleep_daily` vs `garmin_sleep`. Descriptions help somewhat, but an agent must carefully distinguish raw-vs-normalized and single-vs-range variants.

Naming Consistency3/5

All names use snake_case, but the set mixes a `garmin_api_` raw-endpoint family with a shorter `garmin_` normalized family. Singular/plural distinctions like `garmin_activity`/`garmin_activities` and `daily_summary`/`daily_summaries` are meaningful but add surface inconsistency. The pattern is readable but not fully uniform.

Tool Count2/5

34 tools is heavy for a personal health-data server and includes many near-duplicate raw/normalized variants. Several tools earn their place, but the surface feels bloated rather than tightly scoped. This exceeds the typical 3–15 well-scoped range.

Completeness4/5

The surface broadly covers Garmin health data: activities, sleep, HRV, Body Battery, steps, stress, hydration, weight, profile, menstrual cycle, heart-rate zones, food logs, and activity downloads. It is mostly read-only, which is appropriate, but some Garmin domains such as devices, training status, and badges are absent. These are minor gaps rather than dead ends for core workflows.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues