Local-first Garmin data warehouse: sync once to SQLite, analyze trends and correlations offline.
Most database access work still happens through a UI a human drives. Garmin MCP server moves it into the conversation instead. Local-first Garmin data warehouse: sync once to SQLite, analyze trends and correlations offline.
Every existing Garmin MCP server follows the same design: a thin live wrapper around Garmin's rate-limited, unofficial API. Each question your AI assistant asks becomes one or more live API calls that return huge raw JSON blobs (a single raw sleep response runs around 230 KB). Multi-month questions like "how does my sleep correlate with training load?" are impractical, and when Garmin changes its auth (as it did in March 2026, breaking the whole ecosystem), those servers go completely dark, even for data they already fetched yesterday.
The server publishes 12 tools. What each one is for:
auth_status — Check whether stored Garmin Connect tokens exist (use before sync, or after an auth error)sync — Fetch up to 60 days from Garmin Connect into the local store (default: last 30 days ending yesterday; big backfills belong in the CLI)sync_status — Local data coverage per table, last sync time, and pending sync errorsget_day — One merged view of a single day: wellness, sleep, HRV, training status, activities, and data-quality flagsquery_metrics — Columnar time series for one or more metrics between two dates, with daily/weekly/monthly aggregation and optional statscorrelate — Pearson/Spearman correlation between two metrics, with day-lag support and an optional scan over lags -7..+7baselines — Personal mean +/- sd band per metric over a trailing window (default 28 days), to judge what is normal for this useranomalies — Outlier days (z-score deviations) and sustained streaks (5+ consecutive days on one side of the mean)list_activities — Recent activities newest-first as a compact table, filterable by type, date range, and minimum distanceget_activity — Full stored summary row for one activity (summary fields only, no GPS or sample streams)gaps — Missing days per table plus unresolved sync errors, to find holes worth re-syncing before drawing conclusionsimport_fit — Zero-auth offline ingest of a manually exported Garmin wellness FIT bundleThe server ships on PyPI as garmin-local-mcp, so your MCP client can launch it on demand — there is no separate build step. Add the server block to your client's configuration, restart it, and the tools register themselves.
This sits in the database access group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Garmin's toolset — auth_status, sync, sync_status and 9 more — is a fair guide to whether it matches your workflow. It is maintained by anup-shesh; worth a glance at recent repository activity before you build anything load-bearing on it.
We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.
| Tool | What it does |
|---|---|
| auth_status | Check whether stored Garmin Connect tokens exist (use before sync, or after an auth error). |
| sync | Fetch up to 60 days from Garmin Connect into the local store (default: last 30 days ending yesterday; big backfills belong in the CLI). |
| sync_status | Local data coverage per table, last sync time, and pending sync errors. |
| get_day | One merged view of a single day: wellness, sleep, HRV, training status, activities, and data-quality flags. |
| query_metrics | Columnar time series for one or more metrics between two dates, with daily/weekly/monthly aggregation and optional stats. |
| correlate | Pearson/Spearman correlation between two metrics, with day-lag support and an optional scan over lags -7..+7. |
| baselines | Personal mean +/- sd band per metric over a trailing window (default 28 days), to judge what is normal for this user. |
| anomalies | Outlier days (z-score deviations) and sustained streaks (5+ consecutive days on one side of the mean). |
| list_activities | Recent activities newest-first as a compact table, filterable by type, date range, and minimum distance. |
| get_activity | Full stored summary row for one activity (summary fields only, no GPS or sample streams). |
| gaps | Missing days per table plus unresolved sync errors, to find holes worth re-syncing before drawing conclusions. |
| import_fit | Zero-auth offline ingest of a manually exported Garmin wellness FIT bundle. |
{
"mcpServers": {
"garmin-local": {
"command": "uvx",
"args": ["garmin-local-mcp"]
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
Read-only SQL access to Postgres — let your assistant inspect schemas and answer questions from real data.
Manage your whole Supabase project in conversation — database, auth, storage, Edge Functions and branches.
Query, modify and analyse local SQLite databases in conversation — the fastest way to chat with a data file.
Metabase ships its own MCP endpoint — search your BI content, build and run queries, and save questions and dashboards without leaving the chat.
Official MongoDB server covering data, schemas and Atlas management — from find queries to spinning up clusters.
Serverless Postgres with database branching — point your assistant at Neon and let it work on disposable copies.