io.github.anup-shesh/garmin-local-mcp
Local-first Garmin data warehouse: sync once to SQLite, analyze trends and correlations offline.
Versions
0.1.1latestTools 12
auth_status Check whether stored Garmin Connect tokens exist. Use before sync, or when a sync failed with an auth error.
sync Fetch up to 60 days from Garmin Connect into the local store. Default: last 30 days ending yesterday. Use for catch-ups; multi-month backfills belong in the CLI.
sync_status Show local data coverage per table, last sync time, and pending sync errors. Use to see what date ranges are queryable.
get_day One merged view of a single day (YYYY-MM-DD): wellness, sleep, HRV, training status, activities, and data-quality flags. Use for 'how was <date>' questions.
query_metrics Columnar time series for one or more metrics (e.g. resting_hr, sleep_score, steps) between two dates. Prefer weekly/monthly aggregate for ranges over ~60 days; stats=True adds mean/min/max/sd per metric.
correlate Pearson/Spearman correlation between two metrics (default: last 30 days). Positive lag_days pairs metric_a on day D with metric_b on D+lag; scan_lags=True searches lags -7..+7 for the strongest relationship.
baselines Personal mean +/- sd band per metric over a trailing window (default 28 days; default metrics: resting_hr, hrv, sleep_score, skin_temp_dev_c, stress_avg, steps). Use to judge whether today's value is normal *for this user*.
anomalies Outlier days (>= z standard deviations from the range mean) and sustained streaks (5+ consecutive days on one side of it). Default: last 30 days of the core wellness metrics.
list_activities List recent activities newest-first as a compact table, filterable by type (e.g. 'running'), date range, and minimum distance. truncated=true means more rows exist beyond the limit.
get_activity Full stored summary row for one activity by id (from list_activities). Summary fields only - no GPS or sample streams.
gaps Missing days per table plus unresolved sync errors (default: first synced date through yesterday). Use to find holes worth re-syncing before drawing conclusions.
import_fit Import one manually exported Garmin wellness FIT bundle (folder of .fit files) - zero-auth offline ingest. Existing API-sourced rows are never overwritten.
Permissions 3
filesystem low database medium env_vars low