garmin-connect-mcp

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.

Category
Visit Server

README

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured