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
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器