KG

k8sautom8/garmin_mcp

开发工具

本页由 AI 翻译,技术细节请以原文为准。 查看原文

7 stars 7 forks 质量 69 趋势 15MIT

garmin_mcp for Garmin Connect with MFA

概览

This Model Context Protocol (MCP) server connects to Garmin Connect and exposes your fitness and health data to OpenWebUI, Claude or any other MCP-compatible clients via Streamable HTTP transport. Credits: https://github.com/Taxuspt/garmin_mcp - covering: - Activity management (list, get details, splits, weather, gear) - Health & wellness metrics (steps, heart rate, sleep, stress, body battery) - Training & performance data (VO2 Max, HRV, training effect, fitness age) - Device management - Gear tracking - Weight management - Challenges & badges - Workouts - Women's health data - Data management (add body composition, blood pressure, hydration) - Personalised training and diet recommedations - - Network-accessible MCP server for Kubernetes/container deployments - - OAuth tokens cached to avoid repeated MFA prompts - - Supports containerised deployments with environment-based MFA codes - Python 3.10+ (3.

README

以下为原文 README 节选,完整内容请查看原文。

Garmin MCP Server

This Model Context Protocol (MCP) server connects to Garmin Connect and exposes your fitness and health data to OpenWebUI, Claude or any other MCP-compatible clients via Streamable HTTP transport.

Credits: https://github.com/Taxuspt/garmin_mcp

Features

  • 78+ MCP Tools covering:

    • Activity management (list, get details, splits, weather, gear)
    • Health & wellness metrics (steps, heart rate, sleep, stress, body battery)
    • Training & performance data (VO2 Max, HRV, training effect, fitness age)
    • Device management
    • Gear tracking
    • Weight management
    • Challenges & badges
    • Workouts
    • Women’s health data
    • Data management (add body composition, blood pressure, hydration)
    • Personalised training and diet recommedations
  • Streamable HTTP Transport - Network-accessible MCP server for Kubernetes/container deployments

  • Token Persistence - OAuth tokens cached to avoid repeated MFA prompts

  • Non-interactive MFA - Supports containerised deployments with environment-based MFA codes

Prerequisites

  • Python 3.10+ (3.12 recommended)
  • Garmin Connect account credentials
  • For Kubernetes: kubectl access to your cluster

Deployment Options

1. Standalone (Local Development)

Installation

# Clone the repository
git clone 
cd garmin_mcp

# Install dependencies
uv sync

Running

With stdio transport (for MCP clients like Claude Desktop):

export GARMIN_EMAIL="[email protected]"
export GARMIN_PASSWORD="your-password"
export GARMIN_MCP_TRANSPORT="stdio"

uv run garmin-mcp

With Streamable HTTP transport (for network access):

export GARMIN_EMAIL="[email protected]"
export GARMIN_PASSWORD="your-password"
export GARMIN_MCP_TRANSPORT="streamable-http"
export GARMIN_MCP_HOST="0.0.0.0"
export GARMIN_MCP_PORT="8000"

uv run garmin-mcp

The server will be accessible at http://localhost:8000/mcp

First-Time Setup (MFA - Only if enabled on Garmin Connect)

If you have MFA enabled on your Garmin Connect account, you’ll need to provide the 2FA code on first run. You have two options:

Option A: Interactive (for local development)

  • The server will prompt for the MFA code in the terminal

Option B: Non-interactive (for automation)

export GARMIN_MFA_CODE="123456"  # Code from email/SMS
export GARMIN_MFA_WAIT_SECONDS="180"  # Optional: wait up to 180s for code to appear

Note: If MFA is not enabled on your Garmin Connect account, you can skip these environment variables.

After successful login, OAuth tokens are saved to ~/.garminconnect and future runs won’t require MFA until tokens expire.

Configuration with Claude Desktop

Edit your Claude Desktop configuration:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "garmin": {
      "command": "uv",
在 GitHub 查看完整 README

安装

docker run --rm -it \
新手?先看 mcpskill.org 教程 →

配置

{ "mcpServers": { "garmin": { "command": "uv", "args": ["run", "garmin-mcp"], "env": { "GARMIN_EMAIL": "[email protected]", "GARMIN_PASSWORD": "your-password", "GARMIN_MCP_TRANSPORT": "stdio" } } } }