garmin-mcp
Privacy-focused Garmin Connect MCP server for triathlon training, enabling analysis of health metrics, activities, training load, and structured workout creation.
README
garmin-mcp
A privacy-focused Garmin Connect MCP server for triathlon training. ~47 tools covering daily health metrics, activity analysis, training load, running, cycling, swimming, strength training, and workout creation — plus triathlon-specific analysis (brick workouts, sport volume balance, cross-sport fitness snapshots).
Deployed as a remote MCP server over HTTPS. Connects to Claude Desktop or Claude Code via the streamable-HTTP transport.
One-Time Auth Setup
Run this locally once to generate tokens:
-
Install locally:
pip install -e . -
Authenticate with Garmin:
garmin-mcp-authSaves tokens to
~/.garminconnect/garmin_tokens.jsonand prints the base64 export command. -
Copy the printed
GARMIN_TOKENS_JSON=...value — you'll need it for the secrets step below.
Deploy to Fly.io
Prerequisites: flyctl installed and authenticated (flyctl auth login).
-
Register the app name (first time only):
flyctl apps create garmin-mcpIf
garmin-mcpis taken on Fly.io (global namespace), use a unique name likegarmin-mcp-yournameand update theappfield infly.tomlto match. -
Set secrets:
flyctl secrets set \ GARMIN_EMAIL=you@example.com \ GARMIN_TOKENS_JSON=<base64-from-auth-step> \ MCP_AUTH_TOKEN=$(openssl rand -hex 32)Save the generated
MCP_AUTH_TOKENvalue — you'll need it for the Claude Desktop config. -
Deploy:
flyctl deploy -
Verify:
curl https://garmlink.fly.dev/healthExpected:
{"status":"ok"}
Auto-Deploy via GitHub Actions
After the first manual deploy, subsequent pushes to main auto-deploy via GitHub Actions.
Add FLY_API_TOKEN to your GitHub repo secrets:
flyctl tokens create deploy
Copy the output, then go to: GitHub repo → Settings → Secrets and variables → Actions → New repository secret → name it FLY_API_TOKEN.
Claude Desktop Config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"garmin": {
"url": "https://garmlink.fly.dev/mcp",
"headers": { "Authorization": "Bearer <MCP_AUTH_TOKEN>" }
}
}
}
Replace <MCP_AUTH_TOKEN> with the value you set in the secrets step.
Coaching Skills
Run these slash commands from this project directory in Claude Code:
| Command | Purpose |
|---|---|
/morning-check |
Daily readiness briefing (HRV, sleep, body battery) |
/analyze-week |
Weekly training load and sport balance review |
/race-readiness |
Pre-race fitness assessment across all disciplines |
/create-workout |
Guided structured workout builder → pushes to Garmin |
Environment Variables
| Variable | Description |
|---|---|
GARMIN_EMAIL |
Your Garmin Connect email |
GARMIN_TOKENS_JSON |
Base64-encoded token file (from garmin-mcp-auth) |
MCP_AUTH_TOKEN |
Required. Bearer token protecting the MCP endpoint; must be at least 32 characters. The server refuses to start without it. |
GARMIN_PASSWORD |
Optional. Only used to re-authenticate if the stored tokens expire. |
ALLOW_UNAUTHENTICATED |
Set to 1 to run with no authentication. Localhost development only — never on a public address. |
PORT |
Server port (default: 8000, set automatically by Fly.io) |
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.