A local-first Garmin data warehouse with an analysis-grade MCP server. Sync once, analyze forever, even when the API is down. Now it also tells you when your body clock wants you to wake up, and checks that answer against your own history.
I wanted to reason over my own health data, not glance at a dashboard. That means questions that span months, like "how does my sleep correlate with training load?", and it means the data has to survive Garmin breaking its own login, which it did in March 2026 and took most of the Garmin tooling down for weeks.
So garmin-local-mcp keeps your history in a local warehouse you own, does the analysis there, and hands your AI assistant small answers instead of raw data.
It started with a plain question to Claude: based on my Garmin, what's my circadian rhythm, and what's the best time for me to wake up? The first answer was a reasonable formula. The second question was the better one: is that formula actually right for me?
The new circadian tool answers both, as three separate estimates:
Then it checks its own work, which is the part I care about most:
Chronotype on its own isn't new; other tools report it. What I haven't found anywhere else is advice that comes with its uncertainty and gets tested against your own data before you're asked to trust it. It's also careful about what it can't say: Garmin's scores are Garmin's own formulas, not a lab measurement, so the strongest honest claim is "associated with higher Garmin scores," never "better for your body."
The design went through four rounds of outside review before I wrote a line of code. The best change from those reviews was the regularity check: a wake time can look good just because the nights near it were regular ones, so the tool tests for that separately.
Once your history is synced, Claude can answer questions like these in a call or two:
garmin-local-mcp demo builds a synthetic 180-day store with real structure planted in it: an illness week, a next-day training effect, and a body clock set to 03:45. The tools find all three. No account, no login, no network.
It's a Python package (pip install garmin-local-mcp). You log in once (MFA supported; tokens persist locally), backfill your history with a resumable, rate-limit-friendly sync, and register the server with any MCP client. With Claude Code:
claude mcp add --scope user garmin -- garmin-local-mcp serve
Claude Desktop users can install it in one click from the .mcpb file on the GitHub releases page. Everything lives in one directory you own (~/.garmin-mcp by default). Only two of the thirteen tools write anything, and only inside that directory. MIT licensed.