Garmin Coach MCP
Connects Claude to Garmin Connect data for personalized running coaching, including morning readiness checks, post-run analysis, weekly reviews, and goal tracking.
README
🏃 Garmin AI Coach — MCP Server
A fully cloud-hosted MCP server that gives Claude direct access to your Garmin Connect data. Runs free on Vercel + Upstash. Works on any device — laptop, phone, tablet.
What it does
- Morning check-in: Claude reads your HRV, sleep, body battery, and stress, then tells you whether to train hard, go easy, or rest — with actual reasoning.
- Post-run debrief: Analyzes running dynamics (cadence, ground contact time, vertical oscillation), pacing, and HR data.
- Weekly review: Training load trends, volume, intensity distribution, recovery quality.
- Goal tracking: Progress toward sub-38 10km via VO2max trend, race predictions, PRs.
- Coach profile: Claude interviews you over a few sessions to build deep knowledge of your training history, goals, injury history, and preferences — then uses it every session.
Stack (100% free)
| Service | What it does | Cost |
|---|---|---|
| Vercel hobby | Hosts the MCP server | Free |
| Upstash Redis | Stores Garmin tokens + cached data + coach profile | Free (10k req/day) |
| garminconnect 0.3.4 | Talks to Garmin Connect API | Free |
| claude.ai Pro | Your AI coach brain | Your existing plan |
Deploy in 5 steps
Step 1 — Fork and deploy to Vercel
- Fork this repo to your GitHub account
- Go to vercel.com → New Project → Import your fork
- Vercel auto-detects Python. Click Deploy.
- Note your deployment URL:
https://your-project.vercel.app
Step 2 — Set up Upstash Redis
- Go to upstash.com → Create account → Create Redis database
- In Vercel: your project → Storage tab → Connect Store → select Upstash Redis
- This automatically injects
UPSTASH_REDIS_REST_URLandUPSTASH_REDIS_REST_TOKENinto your env vars
Step 3 — Set environment variables in Vercel
In your Vercel project → Settings → Environment Variables, add:
ADMIN_SECRET = some-random-secret-only-you-know
Generate a strong random value, e.g. from 1password.com/password-generator. You'll need this once for setup, then you can forget it.
Click Redeploy after adding env vars.
Step 4 — Register yourself and connect Garmin
Install dependencies locally (one-time):
pip install httpx
Run the setup script:
MCP_URL=https://your-project.vercel.app/api/mcp python scripts/setup.py
Follow the prompts:
- Enter your
ADMIN_SECRET - Enter a label for yourself (e.g. "Alex")
- The script generates your API key — save it somewhere safe
- Enter your Garmin Connect email and password (used once, then discarded)
Repeat for your friend — they run the same script with the same MCP_URL.
Step 5 — Connect to Claude
- Open claude.ai on any device
- Go to Settings → Connectors → Add custom connector
- Name:
Garmin Coach - URL:
https://your-project.vercel.app/api/mcp - Click Add
Done. The connector is now available across claude.ai, Claude Desktop, and the mobile app.
First session
Start a conversation with Claude, enable the Garmin Coach connector, then paste your system prompt:
Open
COACH_SYSTEM_PROMPT.mdand paste its full contents into Claude → Settings → Custom Instructions.
Then say:
My API key is: [your-api-key]
Let's start my onboarding — interview me as my new coach.
Claude will ask you questions one at a time, building up your athlete profile across the session.
Daily use examples
Morning:
Morning check-in. API key: [key]
After a run:
Just got back from a tempo run. API key: [key] — debrief me.
Weekly:
Weekly review please. API key: [key]
Goal check:
How am I tracking for sub-38? API key: [key]
For your friend
They need:
- Claude account (free plan works)
- Run
python scripts/setup.pywith the sameMCP_URL - Ask you for the
ADMIN_SECRETto register their own API key - Add the connector URL to their Claude account
- Paste the system prompt into their custom instructions
Each person has completely separate data in Redis. No cross-contamination.
Security notes
- Your Garmin email/password is sent once during setup, used to get OAuth tokens, then never stored
- OAuth tokens are stored in Redis with a 1-year TTL and auto-refresh
- API keys are stored as SHA-256 hashes in Redis — never the raw key
- All traffic is HTTPS (Vercel enforces TLS)
- The
ADMIN_SECRETis only needed for initial setup — share it with your friend briefly, then change it in Vercel env vars if you want to lock it down
Troubleshooting
"No Garmin tokens found": Re-run scripts/setup.py — your Redis tokens may have expired.
"Invalid API key": Double-check you're using the exact key from setup. Generate a new one if needed.
Timeout errors: The Vercel free tier has a 10s limit. Historical data tools (get_running_history with many weeks) may time out — try smaller date ranges.
Garmin login fails: Garmin sometimes blocks programmatic login. Try again after a few minutes, or check if your Garmin account has 2FA enabled (disable it temporarily for setup).
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。