garmin-mcp-server

garmin-mcp-server

MCP server that connects AI assistants to Garmin Connect health and fitness data, enabling natural language queries about workouts, sleep, heart rate, and more.

Category
Visit Server

README

Garmin Connect MCP Server

A Model Context Protocol (MCP) server that connects AI assistants to your Garmin Connect health and fitness data. Ask Claude, ChatGPT, OpenCode, or any MCP-compatible client about your workouts, sleep, heart rate, and more -- using natural language.

Built on python-garminconnect and the MCP Python SDK.

Features

29 tools across 6 categories, giving your AI assistant access to:

Category Tools Examples
Health 5 Daily summary, heart rate, sleep stages, stress, body battery
Activities 4 Recent workouts, search by date/type, detailed splits
Body 3 Weight trends, body composition, hydration tracking
Fitness 6 Training readiness, VO2 Max, HRV, race predictions, endurance score
Devices 6 Device info, step trends, personal records, SpO2, respiration, goals
Export 5 Download FIT, GPX, TCX, KML, and CSV files

Quick Start

Prerequisites

  • Python 3.10+
  • uv package manager
  • A Garmin Connect account with a paired device

1. Clone and install

git clone https://github.com/JohanBellander/garmin-mcp-server.git
cd garmin-mcp-server
uv sync

2. Authenticate with Garmin

Run the one-time setup to save your OAuth tokens:

uv run garmin-mcp-setup

You'll be prompted for your email, password, and MFA code (if enabled). Tokens are saved to ~/.garminconnect/ and last approximately one year -- you won't need to re-authenticate until they expire.

3. Connect to your AI assistant

Claude Desktop

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

{
  "mcpServers": {
    "garmin": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/garmin-mcp-server",
        "run",
        "garmin-mcp-server"
      ]
    }
  }
}

OpenCode

Add to your .opencode.json MCP config:

{
  "mcp": {
    "garmin": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/garmin-mcp-server",
        "run",
        "garmin-mcp-server"
      ]
    }
  }
}

Any MCP Client

The server uses STDIO transport. Point your client at:

uv --directory /path/to/garmin-mcp-server run garmin-mcp-server

Example Conversations

Once connected, you can ask your AI assistant things like:

  • "How did I sleep last night?"
  • "Show me my runs from the past two weeks"
  • "What's my training readiness today?"
  • "Compare my resting heart rate over the last 7 days"
  • "Download the GPX file for my last bike ride"
  • "What are my race predictions for a half marathon?"
  • "How many steps have I averaged this month?"

Available Tools

Health Data

Tool Description
get_daily_summary Steps, distance, calories, floors climbed, active minutes for a date
get_heart_rate Resting HR, min/max, heart rate zone breakdown
get_sleep Sleep duration, stages (deep/light/REM/awake), sleep score
get_stress All-day stress levels, average, duration by category
get_body_battery Energy reserve levels throughout the day

Activities

Tool Description
get_recent_activities Most recent workouts with key metrics
get_activities_by_date Activities in a date range, filterable by type (running, cycling, etc.)
get_activity_details Full detail for a specific activity: pace, HR zones, elevation, training effect
get_activity_splits Per-split/lap breakdown: pace, distance, HR, elevation

Body Composition

Tool Description
get_weight Weight measurements, BMI, body fat %
get_body_composition Weight, body fat, muscle mass, bone mass, body water
get_hydration Daily water intake and progress toward goal

Fitness Metrics

Tool Description
get_training_readiness Readiness score, HRV status, sleep quality, recovery time
get_vo2max Estimated VO2 Max for running and cycling
get_training_status Training load and status classification
get_race_predictions Predicted times for 5K, 10K, half marathon, and marathon
get_hrv Heart Rate Variability: status, weekly average, baseline
get_endurance_score Aerobic fitness score over time

Export & Download

Tool Description
download_activity_fit Original FIT file (as ZIP) -- raw sensor data
download_activity_gpx GPX track -- GPS coordinates for mapping
download_activity_tcx TCX file -- GPS + HR + cadence
download_activity_kml KML file -- for Google Earth
download_activity_csv CSV file -- tabular data for spreadsheets

Additional Tools

Tool Description
get_devices Connected devices: model, firmware, battery, last sync
get_daily_steps Step counts per day over a date range
get_personal_records Personal bests across all activities
get_respiration Breathing rate: waking, sleeping, high, low
get_spo2 Blood oxygen saturation readings
get_goals Active fitness goals and current progress

Configuration

Environment Variable Default Description
GARMIN_TOKEN_STORE ~/.garminconnect Directory where OAuth tokens are stored
GARMIN_EXPORT_DIR ~/garmin-exports Directory for downloaded activity files

Development

Testing with MCP Inspector

uv run mcp dev src/garmin_mcp/server.py

This opens a web UI where you can invoke tools individually and inspect responses.

Project Structure

src/garmin_mcp/
├── server.py            # FastMCP server entry point
├── auth.py              # OAuth token management + garmin-mcp-setup CLI
└── tools/
    ├── health.py        # Daily health metrics
    ├── activities.py    # Workout listing and details
    ├── body.py          # Weight, body composition, hydration
    ├── fitness.py       # Training metrics, HRV, race predictions
    ├── devices.py       # Devices, steps, records, SpO2, goals
    └── export.py        # Activity file downloads

Important Notes

  • Unofficial API -- This uses undocumented Garmin Connect endpoints via python-garminconnect. Endpoints may change without warning.
  • Rate Limits -- Garmin enforces rate limits. Avoid rapid-fire requests; the AI assistant handles this gracefully with error messages.
  • Token Refresh -- The underlying garth library handles token refresh automatically. Tokens typically last ~1 year.
  • STDIO Safety -- The server never writes to stdout (which would corrupt the MCP transport). All logging goes to stderr.
  • No Interactive Auth -- The MCP server only uses pre-saved tokens. Run garmin-mcp-setup separately to authenticate.

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