Garmin Nutrition Coach
Enables Claude to act as a personal health coach by connecting to Garmin wearable data and Notion workspace for automated calorie tracking, photo food logging, and coaching insights.
README
<p align="center"> <img src="assets/leanloop-cover.jpg" alt="LeanLoop for Garmin — private AI nutrition & fitness coach (Garmin + Claude + Notion + Google Cloud)" width="100%"> </p>
Turn Claude into your personal, data-driven health coach — self-hosted, private, ~$0/month.
Your own MCP server connects Claude to your Garmin wearable data (14 lean tools) and your Notion workspace. A nightly job writes your real measured calorie burn into your food log — so your deficit numbers come from your body, not from generic formulas — and a built-in calibration loop checks them against your actual scale weight every two weeks.
Chat with Claude like a coach who has actually seen your data: "How did I sleep?" · "Coach me today" · "Why did my run feel bad?" · 📸 [photo of lunch]
✨ Features
| Feature | What it does | |
|---|---|---|
| 📸 | Photo food logging | Send a meal photo → macros estimated with a documented protocol (reference-object scaling, hidden oil/sauce accounting) → auto-saved to Notion |
| 🌙 | Automatic day close | Every night your server pulls the finished day's true TDEE from Garmin and writes TDEE + workouts into your log (your deficit column recalculates itself instantly — it's a Notion formula) — self-heals 3 days back, colored sync tags show status at a glance |
| 🔥 | Progress you can see | Cumulative deficit (≈ kg of fat) updated nightly right on your Notion food log |
| 🏃 | Coaching on real data | One-call readiness verdicts, post-workout analysis (splits, HR zones, sleep context), weekly reviews, injury pattern tracking |
| 📈 | Second-by-second analysis | FIT-file parsing: HR/pace/cadence streams + aerobic decoupling — the endurance metric real coaches use |
| ⚖️ | Calibration loop | Every 2 weeks: logged deficit vs. actual weight change reveals your personal estimation bias, which corrects all future estimates |
| 🔄 | Live-updating brain | Coaching rules live in playbook.md, fetched by your server at runtime — improvements reach every user instantly, no reinstall |
🚀 Install (no coding needed)
Open Claude and paste:
Read https://github.com/bank3005-jpg/LeanLoop-for-Garmin/blob/stable/SETUP.md and set this up for me
Claude interviews you (goals, body stats), creates your Notion databases, walks you through the cloud steps, and wires everything into a Claude Project — a dedicated space where your coach lives, with your server and Notion connected and your coaching rules loaded automatically in every chat. 45–60 minutes, one time.
Prerequisites: a Garmin watch · Notion account (free) · Google account with billing enabled (stays within free tier) · Claude plan with custom connectors · Windows or macOS computer for one step.
🏗️ Architecture
Claude (any device, incl. phone)
└── your Cloud Run server ← this repo, deployed to YOUR Google account
├── Garmin Connect ← your token, created on your own computer
├── your Notion ← food / training / body logs
└── playbook.md ← coaching rules, served live from GitHub
Cloud Scheduler → nightly close-day job + keep-warm pings
Privacy by design: everything runs in your accounts. No third party — including this repo's author — ever sees your data. The server is protected by a long random secret; Garmin credentials never pass through chat.
🧰 What's inside (14 lean MCP tools)
Health get_wellness(metric) — sleep, HRV, stress, body battery, heart rate, SpO2, respiration, intensity minutes, hydration, blood pressure, body composition, training readiness/status · get_daily_summary
Training get_activities (recent or date range) · get_activity(id, view) — summary, splits, HR zones, FIT streams, aerobic decoupling · get_fitness(metric) — VO2max, race predictions, endurance/hill scores, lactate threshold, PRs, fitness age · get_coach_snapshot (one-call verdict data) · analyze_activity (one-call post-workout bundle) · weekly_report / calibrate_report (pre-computed reviews)
Body get_weight_history · add_body_composition (write InBody/DEXA scans into Garmin)
System foodlog_read / foodlog_upsert (direct Notion food log) · get_playbook (live coaching rules)
Few tools by design: a lean tool list keeps every chat's context small — grouped tools with a metric/view parameter carry the same 35 capabilities at ~half the token overhead.
🔄 Updating
- Coaching rules — update automatically (served live from this repo)
- Server code —
git pull+ one deploy command, or enable a Cloud Build trigger onstablefor fully automatic deploys - Want to customize the code? Fork the repo and point your deployment at your fork
❓ FAQ
Is it really free? Yes — Cloud Run free tier covers personal use many times over. The setup guide includes guardrails so you stay in it.
Does my data go anywhere? No. Your server, your Garmin token, your Notion. Self-hosted means self-owned.
What if Garmin changes their API? The community library this builds on (python-garminconnect) gets patched quickly; update with one git pull + deploy.
Garmin China accounts? Not supported (separate system).
No watch some days? The nightly job falls back to your formula baseline and tags the day estimated.
💬 Why this exists
I'm not a programmer. I built LeanLoop together with Claude because I wanted to lose weight, get my confidence back, and just feel better — and I couldn't find a tracker that coached me on my real data instead of generic formulas. It worked for me, so I'm sharing it.
I use LeanLoop every single day and keep refining it as I go. If you hit a problem or want a feature, open a thread in Discussions — I read everything.
🙏 Credits
Built on python-garminconnect by cyberjunky · fitdecode · MCP by Anthropic.
⚠️ Disclaimer
This is a personal tracking and coaching tool, not medical advice or a medical device. Calorie and macro estimates are approximations. Consult a healthcare professional for medical decisions, and stop training and seek care for any concerning symptoms.
📄 License
MIT — use it, fork it, share it.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。