Skip to content

Repository files navigation

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)

Tool Description
get_activities List recent activities with pagination
get_activities_by_date Search activities within a date range
get_last_activity Get the most recent activity
count_activities Get total number of activities
get_activity Summary data for a specific activity
get_activity_details Detailed metrics: HR, pace, elevation time series
get_activity_splits Per-km or per-mile split data
get_activity_weather Weather conditions during activity
get_activity_hr_zones Time in each heart rate zone
get_activity_exercise_sets Strength training sets (reps, weight)
get_activity_types All available activity types
get_progress_summary Fitness stats over a date range by activity type

Daily Health (14 tools)

Tool Description
get_daily_summary Full daily summary (steps, calories, distance, etc.)
get_steps Step count for a date
get_steps_chart Intraday step data throughout the day
get_heart_rate Heart rate data (resting, max, zones, time series)
get_resting_heart_rate Resting heart rate for a date
get_stress Stress levels and time series
get_body_battery Body Battery energy levels (date range)
get_body_battery_events Battery charge/drain events for a day
get_respiration Breathing rate data
get_spo2 Blood oxygen saturation
get_intensity_minutes Moderate/vigorous intensity minutes
get_floors Floors climbed chart data
get_hydration Daily hydration/water intake
get_daily_events Daily wellness events

Trends (4 tools)

Tool Description
get_daily_steps_range Daily step counts over a date range
get_weekly_steps Weekly step aggregates
get_weekly_stress Weekly stress aggregates
get_weekly_intensity_minutes Weekly intensity minutes

Sleep (2 tools)

Tool Description
get_sleep_data Sleep stages, score, bed/wake times
get_sleep_data_raw Raw sleep data with HR and SpO2

Body Composition (5 tools)

Tool Description
get_body_composition Weight, BMI, body fat %, muscle mass (date range)
get_latest_weight Most recent weight entry
get_daily_weigh_ins All weigh-ins for a date
get_weigh_ins Weigh-in records over a date range
get_blood_pressure Blood pressure readings (date range)

Performance & Training (11 tools)

Tool Description
get_vo2max VO2 Max estimate (running/cycling)
get_training_readiness Training Readiness score
get_training_status Training status and load
get_hrv Heart Rate Variability
get_endurance_score Endurance fitness score
get_hill_score Climbing performance score
get_race_predictions 5K/10K/half/full marathon predictions
get_fitness_age Estimated fitness age
get_personal_records All personal records
get_lactate_threshold Lactate threshold HR and pace
get_cycling_ftp Functional Threshold Power (cycling)

Profile & Devices (13 tools)

Tool Description
get_user_profile User social profile and preferences
get_user_settings User settings, measurement system, sleep schedule
get_devices Registered Garmin devices
get_device_settings Settings for a specific device
get_device_last_used Last used device info
get_primary_training_device Primary training device
get_device_solar_data Solar charging data
get_gear All tracked gear/equipment
get_gear_stats Usage stats for a gear item
get_goals Active goals and progress
get_earned_badges Earned badges and achievements
get_workouts Saved workouts
get_workout Specific 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

About

MCP server for Garmin Connect — access 61 health, fitness and activity tools from any AI assistant

Resources

Stars

183 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages