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 |
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": 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_instructionsA | Explain the local Garmin Connect authentication flow without asking the user to paste secrets into an agent. |
| garmin_get_profileA | 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_deviceB | 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_dayB | Get Garmin daily steps and summary chart for a date. |
| garmin_get_heart_dayB | Get Garmin daily heart-rate samples and resting heart-rate context for a date. Not medical advice. |
| garmin_get_sleep_dayB | Get Garmin sleep summary, stages and sleep window for a date. Not medical advice. |
| garmin_get_stress_dayB | 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_dayB | Get Garmin intensity minutes for a date. |
| garmin_get_hydration_dayA | 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_activitiesA | 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_detailsC | Get detailed Garmin activity samples when available. |
| garmin_activity_seriesA | Bounded time-series for one activity metric. Returns exact stats computed on full-resolution samples plus a downsampled series capped at 500 points, so a 3-hour ride at 1 Hz never blows the context window. Prefer garmin_get_activity / splits / hr_zones first; reach for this when you actually need the shape of the effort over time. GPS is never returned here. |
| 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_zonesB | 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. Gated by explicit_user_intent: true (requires explicit user intent). |
| garmin_daily_summaryA | 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_contextA | 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server