# garmin-local-mcp

Downloads Garmin biometric records into a local SQLite store for fast offline queries. It lets coding assistants evaluate recovery trends without hammering remote endpoints.

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

## What it does

This server pulls personal health telemetry into a local repository composed of static JSON snapshots and a SQLite database. Rather than flooding the context window with raw API payloads that often reach several hundred kilobytes per sleep log, it calculates trends locally. Responses arrive as structured tabular summaries rarely exceeding 2 KB. Its 13 specialized tools handle anomaly detection, baseline tracking, and lag-adjusted correlations across a window of -7 to +7 days.

Running this setup requires Python 3.12 or newer. Users without hardware can seed a deterministic 180-day synthetic archive via the `demo` command to evaluate chronotype identification and correlation math before logging in. If remote Garmin services become unreachable, stored telemetry remains accessible for analysis, and new records can be ingested offline directly from exported wellness FIT bundles.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `GARMIN_MCP_DATA_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_MCP_DATA_DIR=<GARMIN_MCP_DATA_DIR> --transport stdio garmin-local-mcp -- uvx garmin-local-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from garmin-local-mcp <command>

### Codex

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

### Cursor

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

### GitHub Copilot

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

### Gemini CLI

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

## When to use it
- track lagged correlations between workout stress and next-day resting heart rate
- estimate individual chronotypes and target wake schedules from recorded sleep history
- detect health anomalies and missing logging days without feeding bloated payloads to LLMs
- import biometric wellness exports from FIT archives without sharing account credentials

## Example prompts
- Calculate the correlation between my training load and resting heart rate with a one-day lag.
- Scan the last six months of HRV records for unusual health patterns.
- Estimate my chronotype using sleep logs and display the confidence interval.

## Similar
- [Garmin Connect](https://affpapa.org/en/nevibecode/mcp/garmin-connect.md) — MCP server · ★ 37
- [Run Coach](https://affpapa.org/en/nevibecode/mcp/run-coach.md) — MCP server · ★ 16
- [kaiord](https://affpapa.org/en/nevibecode/mcp/kaiord.md) — MCP server · ★ 10
- [garminmcp](https://affpapa.org/en/nevibecode/mcp/garminmcp.md) — MCP server · ★ 13
- [Fitness AI Connector](https://affpapa.org/en/nevibecode/mcp/fitness-ai-connector.md) — MCP server · ★ 8
- [whoop](https://affpapa.org/en/nevibecode/mcp/whoop.md) — MCP server · ★ 175

---
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
