Garmin MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMIN_CACHE | No | Optional cache type, e.g., sqlite | |
| GARMIN_DOMAIN | No | Garmin domain (garmin.com or garmin.cn) | garmin.com |
| GARMIN_CACHE_PATH | No | Path for cache file if caching is enabled | ~/.garmin-mcp/cache.sqlite |
| GARMIN_TOKEN_PATH | No | Path to store Garmin Connect tokens | ~/.garmin-mcp/garmin_tokens.json |
| GARMIN_PRIVACY_MODE | No | Privacy mode: summary, structured, or raw | summary |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| garmin_data_inventoryA | Inventory supported Garmin data domains, auth scope requirements, privacy boundary and recommended first calls. Does not call Garmin APIs or expose user data. |
| garmin_agent_manifestA | Machine-readable install, runtime and client guidance for AI agents. Does not call Garmin or expose secrets. |
| garmin_capabilitiesA | Explain supported Garmin data, privacy boundaries, recommended agent workflow and project links. |
| garmin_quickstartA | Personalized 3-step setup walkthrough for the human user. Adapts to current state (env vars set? token present? what's next?). Call this first when the user asks 'how do I connect Garmin?' |
| garmin_demoA | Returns realistic example payloads of garmin_daily_summary, garmin_wellness_context, and garmin_get_body_battery_day so agents see the contract before any real Garmin Connect call. |
| garmin_profile_getB | Read the shared Delx wellness profile (~/.delx-wellness/profile.json). Returns the user's preferred name, body basics, goals, devices, training context, nutrition context, agent preferences, and missing critical fields. Cross-connector — the same profile is also available from other Delx Wellness MCPs (WHOOP, Oura, Nourish, Fitbit, etc). Read-only. |
| garmin_profile_updateA | Persist a partial patch to the shared Delx wellness profile (~/.delx-wellness/profile.json). REQUIRES explicit_user_intent=true. Top-level fields stored: profile (preferred_name, language, timezone, units, age_or_birth_year, height, weight, sex_or_gender_context), goals, devices, training, nutrition, preferences, safety, notes. NEVER stores OAuth tokens, API keys, refresh tokens, cookies, or any secret-shaped field — writes will be rejected at validation time. Cross-connector — the same profile is read by other Delx Wellness MCPs. |
| garmin_onboardingA | Return the 11-question Delx wellness onboarding flow (in English or pt-BR) plus the current shared profile state and missing critical fields. Read-only. The agent should ask these questions one-by-one, then call garmin_profile_update with explicit_user_intent=true to save. The same profile is reused by every Delx Wellness connector (WHOOP, Oura, Nourish, etc.) — agents can call the equivalent {connector}_onboarding tools to cover their respective domains, or rely on this one since all connectors share the same questions. |
| garmin_auth_instructionsB | Explain the local Garmin Connect authentication flow without asking the user to paste secrets into an agent. |
| garmin_get_profileB | Get the authenticated Garmin profile using the configured privacy mode. |
| garmin_get_user_settingsB | Get Garmin account user settings such as units and display preferences. |
| garmin_list_devicesA | List devices registered to the Garmin account. |
| garmin_get_primary_training_deviceA | Get the primary Garmin training device when available. |
| garmin_get_daily_summaryA | Get Garmin daily movement and wellness summary for a date. |
| garmin_get_steps_dayA | Get Garmin daily steps and summary chart for a date. |
| garmin_get_heart_dayA | Get Garmin daily heart-rate samples and resting heart-rate context for a date. Not medical advice. |
| garmin_get_sleep_dayA | Get Garmin sleep summary, stages and sleep window for a date. Not medical advice. |
| garmin_get_stress_dayA | Get Garmin stress summary and samples for a date. Not medical advice. |
| garmin_get_body_battery_dayA | Get Garmin Body Battery daily report for a date. Not medical advice. |
| garmin_get_body_battery_eventsB | Get Garmin Body Battery charge/drain events for a date. Not medical advice. |
| garmin_get_hrv_dayA | Get Garmin HRV status and overnight HRV metrics for a date when available. Not medical advice. |
| garmin_get_training_readiness_dayA | Get Garmin training readiness for a date when supported by the device/account. Not medical advice. |
| garmin_get_training_status_dayA | Get Garmin aggregated training status for a date when supported by the device/account. Not medical advice. |
| garmin_get_respiration_dayB | Get Garmin respiration data for a date when available. Not medical advice. |
| garmin_get_spo2_dayB | Get Garmin Pulse Ox / SpO2 data for a date when available. Not medical advice. |
| garmin_get_intensity_minutes_dayC | Get Garmin intensity minutes for a date. |
| garmin_get_hydration_dayB | Get Garmin hydration summary for a date when available. |
| garmin_get_weight_rangeA | Get Garmin weight/body-composition logs for a date range. Not medical advice. |
| garmin_list_activitiesC | List recent Garmin activities. Supports pagination, optional date filters and privacy modes. |
| garmin_get_activityB | Get a Garmin activity summary by activity id. |
| garmin_get_activity_detailsB | Get detailed Garmin activity samples when available. |
| garmin_get_activity_splitsB | Get Garmin activity splits/laps by activity id. |
| garmin_get_activity_weatherB | Get Garmin activity weather by activity id when available. |
| garmin_get_activity_hr_zonesA | Get Garmin activity heart-rate zone time by activity id when available. |
| garmin_connection_statusA | Check local Garmin config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Garmin or exposing secrets. |
| garmin_cache_statusA | Show optional local SQLite cache status. Enable with GARMIN_CACHE=sqlite or GARMIN_CACHE=true. |
| garmin_privacy_auditA | Return local privacy, cache, token-path and env-presence posture without revealing secret values. |
| garmin_disconnect_localA | Delete the local Garmin token file. This does not change the Garmin account; use only when the user explicitly wants to disconnect this MCP. |
| garmin_daily_summaryB | Build a practical daily summary from Garmin activity, sleep, heart-rate, HRV, stress and Body Battery when available. Read-only and non-medical. |
| garmin_weekly_summaryA | Build a weekly Garmin scorecard with movement, sleep, HRV, stress, Body Battery, bottlenecks and actions. Read-only and non-medical. |
| garmin_wellness_contextB | Normalize Garmin readiness, sleep score, Body Battery and recent movement load into the shared wellness_context shape for recommendation engines. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| garmin_daily_checkin | Ask an agent to create a practical daily health and training check-in from Garmin. |
| garmin_weekly_review | Ask an agent to review Garmin trends across activity, sleep, stress, Body Battery and heart context. |
| garmin_intraday_investigation | Investigate one day of Garmin heart, stress, Body Battery and activity details without pretending to have raw telemetry. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| garmin_data_inventory | Static inventory of supported Garmin data domains, privacy modes and recommended first calls. |
| garmin_capabilities | Static capabilities, API boundary, privacy modes and recommended agent workflow. |
| garmin_agent_manifest | Machine-readable install and operating instructions for AI agents. |
| garmin_profile | Authenticated Garmin profile using the configured privacy mode. |
| garmin_latest_activity | Most recent Garmin activity log in the configured privacy mode. |
| garmin_daily_summary | Daily Garmin health summary built from API data. |
| garmin_weekly_summary | Weekly Garmin health review built from API data. |
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/davidmosiah/garminmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server