← Back to directory
G

Garmin MCP Server

Community
MCP server for accessing Garmin data, with 110+ tools covering fitness, health, and training analytics.
Category
Other #6 of 230
Stars
★ 1.3k Very popular
Transport
stdio (local process) · Streamable HTTP · SSE
Runtime
Python 3.12+
Credentials
API key / credential required
License
MIT
Last commit
72FMRS · B

The Garmin MCP server offers extensive coverage of Garmin Connect data, ideal for users wanting to integrate fitness and health data into AI workflows. Installation is straightforward, supports multiple clients, but requires attention to authentication and HTTP security.

Strongest · Documentation 17/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
14/20
Maintenance
16/20
Documentation
17/20
Setup experience
14/20
Why each score
Reliability 11/20
Evidence shows a comprehensive test suite (200+ integration tests, 4 e2e tests) and CI workflows, suggesting core paths are likely reproducible. However, the review is static, server not executed, and no manifest file is available, so tool declarations vs real behavior cannot be fully verified. Score capped at 12 per static calibration, resulting in 11. Deductions for lack of execution, untracked dependencies (e.g., fitparse), and some endpoints intentionally skipped which may affect reliability.
Security and permissions 14/20
The server handles sensitive Garmin credentials, supports file-based secrets and environment variables, and encourages pre-authentication to store tokens in ~/.garminconnect, limiting exposure. It does not log credentials, and offers options to disable destructive tools (e.g., delete_activity). HTTP transport has no authentication, but documentation clearly instructs to put it behind a reverse proxy. No evidence of malware, credential theft, or critical vulnerabilities, so a score of 14 is given. Deductions for lack of explicit token permission hardening, no explicit confirmation for destructive operations, and example configurations with passwords.
Maintenance 16/20
Repository is active with many commits and releases, maintainer appears responsive to issues (24 open issues relatively low). Has MIT license. No deductions evident from the evidence, but maintenance score is capped by lack of validated release history and dependency update records. Score 16 reflects active maintenance but not fully validated governance.
Documentation 17/20
README is extremely thorough, covering installation, configuration, troubleshooting, examples, and limitation disclosures. Includes config examples for multiple clients. Documentation appears consistent and discloses skipped endpoints. Score 17 because while extensive, some aspects like exact tool parameters and token permissions are not fully detailed.
Setup experience 14/20
Setup steps are clear, with multiple methods: uvx, Docker, Claude Desktop config, and instructions for Codex and opencode. Pre-authentication tool garmin-mcp-auth is provided to simplify authentication. However, static review prevents verification of installation reliability and compatibility across platforms, so score capped at 15. Given the documentation's apparent ease, score 14.

Static review · not runListed 2026-08-07

Read the FMRS scoring method →

Fit and risk

What it can accessWrites / deletes local filesUses the networkChanges third-party account data

Best for

  • Garmin users wanting to centralize fitness data in AI assistants
  • Runners or cyclists needing automated workout generation and scheduling
  • Analytical users who prefer natural language queries for health trends
  • Developers and hobbyists integrating Garmin data into custom toolchains

Not for

  • Non-Garmin users or those without a Garmin account
  • Applications requiring real-time GPS tracking or instant data push
  • Users who want to bypass authentication (requires Garmin account and OAuth tokens)
  • Destructive operations like deleting activities (not implemented for safety)

Required permissions

  • Read and edit Garmin Connect data (activities, health metrics, workouts, etc.)
  • Download activity files to local directory
  • Create and schedule workout plans
  • Access user's health metrics and body composition data

Risks and side effects

  • Stores OAuth tokens which expire after ~6 months, requiring re-authentication
  • HTTP transport has no authentication; if exposed on public network, place behind a reverse proxy
  • Some destructive operations (e.g., delete activity) are intentionally not implemented to avoid accidents
  • Many tools may increase LLM context overhead, but can be filtered via environment variables

Setup

Before you start

Runtime:Python 3.12+

GARMIN_EMAIL optionalsecret Garmin Connect login email; use GARMIN_EMAIL_FILE instead in Docker-style setups, the two are mutually exclusive.
GARMIN_EMAIL_FILE optionalsecret Path to a file containing the Garmin Connect email.
GARMIN_PASSWORD optionalsecret Garmin Connect password; use GARMIN_PASSWORD_FILE instead in file-based secret setups, the two are mutually exclusive.
GARMIN_PASSWORD_FILE optionalsecret Path to a file containing the Garmin Connect password.
Other optional settings (8)
GARMIN_IS_CN optional Set to true to use Garmin Connect China (garmin.cn); defaults to false.
GARMIN_FIT_DOWNLOAD_DIR optional Default directory for downloaded activity files; skips the first-run setup prompt in download_activity_file.
GARMIN_FIT_CONFIG optional Path to the persisted download-directory config file (default ~/.garminconnect_fit_config.).
GARMIN_ENABLED_TOOLS optional Comma-separated tool allowlist — only these tools register.
GARMIN_DISABLED_TOOLS optional Comma-separated tool denylist — these tools are skipped; ignored when an allowlist is set.
GARMIN_MCP_TRANSPORT optional Transport mode: stdio (default), streamable-http, or sse.
GARMIN_MCP_HOST optional Bind address for HTTP transports, default 127.0.0.1.
GARMIN_MCP_PORT optional Bind port for HTTP transports, default 8000.
  1. Authenticate once using garmin-mcp-auth to save OAuth tokens to ~/.garminconnect.
  2. Add the server configuration in Claude Desktop or any MCP client using the uvx command.
  3. Restart your client to access your Garmin data.
claude_desktop_config.json
{
  "mcpServers": {
    "garmin": {
      "command": "uvx",
      "args": [
        "--python",
        "3.12",
        "--from",
        "git+https://github.com/Taxuspt/garmin_mcp",
        "garmin-mcp"
      ]
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "garmin": {
      "command": "uvx",
      "args": [
        "--python",
        "3.12",
        "--from",
        "git+https://github.com/Taxuspt/garmin_mcp",
        "garmin-mcp"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add garmin -- uvx --python 3.12 --from git+https://github.com/Taxuspt/garmin_mcp garmin-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

Run garmin-mcp-auth once to save OAuth tokens, restart the client, and confirm the garmin server's tools appear in the tool list; then ask 'How many steps did I take yesterday?' — a data-backed answer confirms the connection.

Troubleshooting

  1. Ensure `uvx` is in PATH, or use the full path
  2. Check Garmin credentials correctness and MFA status
  3. Check logs: macOS: `~/Library/Logs/Claude/mcp-server-garmin.log`, Windows: `%APPDATA%\Claude\logs\mcp-server-garmin.log`
  4. If tokens expired, run `garmin-mcp-auth --force-reauth`
  5. Verify network connectivity and Garmin service availability

Things to try

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

  • Show me my recent activities
  • What was my sleep like last night?
  • Show me my CTL, ATL, and TSB trend for the last 6 weeks
  • Create a walk/run interval workout called W3 Mié 2:2 with 2-minute run and walk intervals repeated 9 times

Use cases

View recent activities and detailed activity information
Analyze health metrics like sleep, stress, heart rate
Track training status, CTL/ATL/TSB, HRV, VO2 max trends
Create and schedule running, walking, strength workouts
Download activity files in FIT, GPX, TCX, or CSV format
Analyze cycling power, FIT files, and DI2 shifting data

Supported clients

Claude Desktop
Codex
OpenCode

Listed from the project's documentation, not tested by this site.

Overview

The Garmin MCP server connects to Garmin Connect and exposes your fitness and health data to Claude and other MCP-compatible clients. It leverages the python-garminconnect library and offers 110+ tools covering activity management, health metrics, training load trends, power analysis, and more, including advanced features like power duration curve, FIT file parsing, and DI2 electronic shift intelligence. It supports tool filtering via environment variables and provides high-level workout builder tools.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 654 · Tools 11 Compare with this →

Source revision cfc5d799ab0f Data synced 2026-10-12 Read the FMRS scoring method