Garmin MCP Lite
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| garmin_activitiesA | List recent activities filtered by date range and type. Args: start_date: Start date in YYYY-MM-DD format. Defaults to 7 days ago. end_date: End date in YYYY-MM-DD format. Defaults to today. activity_type: Filter by sport type. One of: running, cycling, swimming, diving, all. limit: Maximum number of activities to return. |
| garmin_activity_detailA | Get detailed metrics for a single activity by ID. Args: activity_id: The Garmin activity ID. fields: Optional list of extra data sections to include. Supported values: "splits", "hrZones", "laps", "gps". Omit to return the basic summary only. |
| garmin_training_planB | Get the scheduled training workout for a specific date. Args: date: Date in YYYY-MM-DD format. Defaults to today. |
| garmin_training_statusA | Get current training status summary. Returns training status label, VO2Max, acute training load, load focus distribution (aerobic_low / aerobic_high / anaerobic), recovery time, training readiness score, and sleep score. |
| garmin_healthA | Get health metrics for a specific date. Args: metric: The health metric to retrieve. Options: - "sleep" : Sleep duration, stages (deep/REM/light), and quality score. - "hrv" : HRV status, weekly average, and last-night reading. - "stress" : Average and peak stress levels. - "body_battery" : Body battery charge/drain, peak, and current level. - "spo2" : Blood oxygen saturation (average, lowest, latest). - "respiration" : Respiration rate (average, min, max). - "intensity" : Weekly intensity minutes vs. goal (moderate + vigorous). - "steps" : Daily step count vs. goal, floors climbed, and resting HR. - "all" : All of the above combined (default). date: Date in YYYY-MM-DD format. Defaults to today. |
| garmin_gearB | Get the gear library (shoes, bikes, etc.) with real cumulative mileage for each item. |
| garmin_deviceB | Get connected device information including firmware version, update availability, primary tracker role, and registration date. |
| garmin_hr_trendB | Get resting heart rate historical trend data. Args: period: Time window. One of: "7d" (7 days), "30d" (30 days), "90d" (90 days). |
| garmin_weekly_statsA | Get aggregated training volume statistics for a given period. Args: period: Time period. One of: "week" (7 days), "month" (30 days), "year" (365 days). |
| garmin_coachB | List active Garmin Coach training plans. |
| garmin_eventsA | Get upcoming race events from the Garmin calendar, including target distance and goal finish time. |
| garmin_challengesA | Get in-progress challenges and badge completion status, including virtual challenges and monthly badges. |
| garmin_race_predictionA | Predict finish times for the 5K, 10K, half marathon and marathon. Garmin derives these from recent running activities, so an account with no recent runs returns nothing. Args: period: "today" returns the current prediction only. "90d" or "1y" also reports how each prediction moved across that window (change_s is negative when the athlete got faster). |
| garmin_personal_recordsB | Get personal records (PRs) with the activity each one was set in. Args: sport: Restrict to one discipline. One of: all, running, cycling, swimming, steps. |
| garmin_zonesA | Get heart rate zone boundaries and threshold values for one sport. Use this to interpret the heart-rate-zone durations returned by
Args: sport: Which zone configuration to return. One of: running, cycling, swimming, default (Garmin's account-wide default). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool targets a distinct data resource (activities, activity detail, zones, health, gear, events, challenges, coach, etc.), and the descriptions explicitly cross-reference related tools (zones ↔ activity_detail hrZones). Minor overlap exists between garmin_health (which returns resting HR under "steps"), garmin_hr_trend, and garmin_training_status (also surfaces recovery/readiness), so an agent could pick the wrong one when looking for heart-rate or readiness data.
Every tool follows the same `garmin_<resource>` snake_case pattern with no deviations or style mixing. Names are predictable enough that an agent can guess a tool's existence from its resource.
15 tools sits at the top of the well-scoped range but each maps to a genuinely distinct Garmin data domain, with no filler. The many-metric `garmin_health` tool is sensibly bundled rather than split into nine separate tools, keeping the surface compact.
The read-only surface covers the core Garmin lifecycle well: activities, activity detail, health, training status/plan, zones, PRs, gear, events, challenges, and device info. Gaps are mostly around write/action operations (no marking workouts complete, adjusting training plans, uploading or editing activities), which may be intentional for a "Lite" server but leaves some agent workflows as dead ends.