MCP Hub
Back to servers

garmin-connect-mcp

An MCP server that provides access to Garmin Connect fitness, health, and training data through 61 specialized tools. It enables users to query activities, sleep metrics, and performance stats directly within AI clients like Claude or Cursor.

glama
Stars
15
Forks
5
Updated
Feb 18, 2026
Validated
Mar 12, 2026

garmin-connect-mcp

MCP server for Garmin Connect. Access your fitness, health, and training data from Claude Code, Claude Desktop, Cursor, Windsurf, or any MCP client.

61 tools across 7 categories: activities, daily health, trends, sleep, body composition, performance/training, and profile/devices.

API endpoints and authentication flow based on python-garminconnect by cyberjunky.

Requirements

  • Node.js 20+
  • A Garmin Connect account (email and password)

Installation

Claude Code

claude mcp add garmin -e GARMIN_EMAIL=you@email.com -e GARMIN_PASSWORD=yourpass -- npx -y @nicolasvegam/garmin-connect-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "garmin": {
      "command": "npx",
      "args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
      "env": {
        "GARMIN_EMAIL": "you@email.com",
        "GARMIN_PASSWORD": "yourpass"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "garmin": {
      "command": "npx",
      "args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
      "env": {
        "GARMIN_EMAIL": "you@email.com",
        "GARMIN_PASSWORD": "yourpass"
      }
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "garmin": {
      "command": "npx",
      "args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
      "env": {
        "GARMIN_EMAIL": "you@email.com",
        "GARMIN_PASSWORD": "yourpass"
      }
    }
  }
}

Any MCP Client

Run the server with environment variables:

GARMIN_EMAIL=you@email.com GARMIN_PASSWORD=yourpass npx -y @nicolasvegam/garmin-connect-mcp

The server communicates over stdio using the Model Context Protocol.

Available Tools

Activities (12 tools)

ToolDescription
get_activitiesList recent activities with pagination
get_activities_by_dateSearch activities within a date range
get_last_activityGet the most recent activity
count_activitiesGet total number of activities
get_activitySummary data for a specific activity
get_activity_detailsDetailed metrics: HR, pace, elevation time series
get_activity_splitsPer-km or per-mile split data
get_activity_weatherWeather conditions during activity
get_activity_hr_zonesTime in each heart rate zone
get_activity_exercise_setsStrength training sets (reps, weight)
get_activity_typesAll available activity types
get_progress_summaryFitness stats over a date range by activity type

Daily Health (14 tools)

ToolDescription
get_daily_summaryFull daily summary (steps, calories, distance, etc.)
get_stepsStep count for a date
get_steps_chartIntraday step data throughout the day
get_heart_rateHeart rate data (resting, max, zones, time series)
get_resting_heart_rateResting heart rate for a date
get_stressStress levels and time series
get_body_batteryBody Battery energy levels (date range)
get_body_battery_eventsBattery charge/drain events for a day
get_respirationBreathing rate data
get_spo2Blood oxygen saturation
get_intensity_minutesModerate/vigorous intensity minutes
get_floorsFloors climbed chart data
get_hydrationDaily hydration/water intake
get_daily_eventsDaily wellness events

Trends (4 tools)

ToolDescription
get_daily_steps_rangeDaily step counts over a date range
get_weekly_stepsWeekly step aggregates
get_weekly_stressWeekly stress aggregates
get_weekly_intensity_minutesWeekly intensity minutes

Sleep (2 tools)

ToolDescription
get_sleep_dataSleep stages, score, bed/wake times
get_sleep_data_rawRaw sleep data with HR and SpO2

Body Composition (5 tools)

ToolDescription
get_body_compositionWeight, BMI, body fat %, muscle mass (date range)
get_latest_weightMost recent weight entry
get_daily_weigh_insAll weigh-ins for a date
get_weigh_insWeigh-in records over a date range
get_blood_pressureBlood pressure readings (date range)

Performance & Training (11 tools)

ToolDescription
get_vo2maxVO2 Max estimate (running/cycling)
get_training_readinessTraining Readiness score
get_training_statusTraining status and load
get_hrvHeart Rate Variability
get_endurance_scoreEndurance fitness score
get_hill_scoreClimbing performance score
get_race_predictions5K/10K/half/full marathon predictions
get_fitness_ageEstimated fitness age
get_personal_recordsAll personal records
get_lactate_thresholdLactate threshold HR and pace
get_cycling_ftpFunctional Threshold Power (cycling)

Profile & Devices (13 tools)

ToolDescription
get_user_profileUser social profile and preferences
get_user_settingsUser settings, measurement system, sleep schedule
get_devicesRegistered Garmin devices
get_device_settingsSettings for a specific device
get_device_last_usedLast used device info
get_primary_training_devicePrimary training device
get_device_solar_dataSolar charging data
get_gearAll tracked gear/equipment
get_gear_statsUsage stats for a gear item
get_goalsActive goals and progress
get_earned_badgesEarned badges and achievements
get_workoutsSaved workouts
get_workoutSpecific workout by ID

Authentication

Uses Garmin Connect credentials (email/password) via environment variables. OAuth tokens are cached in ~/.garmin-mcp/ to avoid re-authentication on each request.

MFA (Multi-Factor Authentication)

If your Garmin account has MFA enabled (required for devices with ECG capabilities), you need to run the interactive setup once before using the MCP server:

GARMIN_EMAIL='you@email.com' GARMIN_PASSWORD='yourpass' npx -y @nicolasvegam/garmin-connect-mcp setup

This will:

  1. Log in to Garmin Connect
  2. Prompt you for the MFA code sent to your email or authenticator app
  3. Save OAuth tokens to ~/.garmin-mcp/

After setup, the MCP server will use the saved tokens automatically — no MFA prompt needed until the tokens expire. When they do, simply run the setup command again.

Development

git clone https://github.com/Nicolasvegam/garmin-connect-mcp.git
cd garmin-connect-mcp
npm install
npm run build

To test locally:

GARMIN_EMAIL=you@email.com GARMIN_PASSWORD=yourpass npm start

Credits

License

MIT

Reviews

No reviews yet

Sign in to write a review