# Garmin Connect

Brings Garmin Connect health metrics and workout stats into your AI assistant. Connects read-only through Garmin's official Personal API with a dedicated key.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 30
- Author: Mason-Levyy
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/Mason-Levyy/garmin-personal-mcp
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/garmin-connect

## What it does

This MCP server links models to your personal fitness records, covering sleep logs, Body Battery and workouts. Rather than scraping the web portal or storing account passwords, it talks to Garmin's official Personal API client. The integration is strictly read-only, preventing any accidental edits to your account history.

Long date queries are handled automatically. If a metric has window limits, such as 28 days for step totals or 31 days for sleep, the server segments the query into separate calls behind the scenes. It also strips out raw high-frequency day samples unless asked, keeping prompt context within reasonable limits.

Without `uv` and an active key generated in Garmin Connect settings, the server will not return any data. You can authenticate once in your terminal with `uvx garmin-personal-mcp auth` or supply `GARMIN_PERSONAL_API_KEY` directly.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `GARMIN_PERSONAL_API_KEY`, `GARMIN_MCP_DOWNLOAD_DIR` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env GARMIN_PERSONAL_API_KEY=<GARMIN_PERSONAL_API_KEY> --env GARMIN_MCP_DOWNLOAD_DIR=<GARMIN_MCP_DOWNLOAD_DIR> --transport stdio garmin-connect -- uvx garmin-personal-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from garmin-personal-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add garmin-connect --env GARMIN_PERSONAL_API_KEY=<GARMIN_PERSONAL_API_KEY> --env GARMIN_MCP_DOWNLOAD_DIR=<GARMIN_MCP_DOWNLOAD_DIR> -- uvx garmin-personal-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from garmin-personal-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "garmin-connect": {
            "command": "uvx",
            "args": [
                "garmin-personal-mcp"
            ],
            "env": {
                "GARMIN_PERSONAL_API_KEY": "<GARMIN_PERSONAL_API_KEY>",
                "GARMIN_MCP_DOWNLOAD_DIR": "<GARMIN_MCP_DOWNLOAD_DIR>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from garmin-personal-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "garmin-connect": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "garmin-personal-mcp"
            ],
            "env": {
                "GARMIN_PERSONAL_API_KEY": "<GARMIN_PERSONAL_API_KEY>",
                "GARMIN_MCP_DOWNLOAD_DIR": "<GARMIN_MCP_DOWNLOAD_DIR>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from garmin-personal-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e GARMIN_PERSONAL_API_KEY=<GARMIN_PERSONAL_API_KEY> -e GARMIN_MCP_DOWNLOAD_DIR=<GARMIN_MCP_DOWNLOAD_DIR> garmin-connect uvx garmin-personal-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from garmin-personal-mcp <command>

## When to use it
- inspect overnight sleep quality and HRV trends
- compare pace and heart rate across recent runs
- check recovery markers like Body Battery and stress
- pull step logs across multiple months without manual chunking

## Example prompts
- How did I sleep last night and what is my current Body Battery?
- Compare the average pace and heart rate from my last three runs.
- Show my monthly HRV trend to check if recovery is dipping.

## Similar
- [Reactive Resume](https://affpapa.org/en/nevibecode/mcp/reactive-resume.md) — MCP server · ★ 44874
- [screenpipe](https://affpapa.org/en/nevibecode/mcp/screenpipe.md) — MCP server · ★ 22053
- [Inbox Zero](https://affpapa.org/en/nevibecode/mcp/inbox-zero.md) — MCP server · ★ 12791
- [kaneo](https://affpapa.org/en/nevibecode/mcp/kaneo.md) — MCP server · ★ 9602
- [Mindwtr](https://affpapa.org/en/nevibecode/mcp/mindwtr.md) — MCP server · ★ 2318
- [Azure DevOps (ADO)](https://affpapa.org/en/nevibecode/mcp/azure-devops-ado.md) — MCP server · ★ 2067

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
