
Remote MCP server for Garmin Connect — GitHub OAuth, no local setup required
概览
Remote MCP server for Garmin Connect. Gives AI assistants access to your Garmin health and activity data over the internet — no local server or app required. Built on top of Taxuspt/garmin_mcp and cyberjunky/python-garminconnect. Taxuspt's original server runs locally on your machine and requires a locally installed AI desktop client. This version runs as a cloud service, protected by GitHub OAuth, so it works from any MCP-compatible AI assistant on any device — without running anything locally. Exposes ~150 Garmin Connect tools so AI assistants can query your health data directly: - Health & Wellness: sleep, HRV, stress, body battery, heart rate, SpO2, respiration, recovery time - Activities: runs, rides, swims — with splits, weather, HR zones, FIT file analysis - Training: readiness, status, VO2max, load, running tolerance, acclimation, trends - Body composition, weight, hydration, energy balance - Workouts (incl.
README
以下为原文 README 节选,完整内容请查看原文。
Garmin Connect MCP
Remote MCP server for Garmin Connect. Gives AI assistants access to your Garmin health and activity data over the internet — no local server or app required.
Built on top of Taxuspt/garmin_mcp and cyberjunky/python-garminconnect.
What makes this different from Taxuspt/garmin_mcp
Taxuspt’s original server runs locally on your machine and requires a locally installed AI desktop client. This version runs as a cloud service, protected by GitHub OAuth, so it works from any MCP-compatible AI assistant on any device — without running anything locally.
What it does
Exposes ~150 Garmin Connect tools so AI assistants can query your health data directly:
- Health & Wellness: sleep, HRV, stress, body battery, heart rate, SpO2, respiration, recovery time
- Activities: runs, rides, swims — with splits, weather, HR zones, FIT file analysis
- Training: readiness, status, VO2max, load, running tolerance, acclimation, trends
- Body composition, weight, hydration, energy balance
- Workouts (incl. builders and Garmin Coach), gear, nutrition, courses, calendar events, challenges
The tool modules are kept in sync with Taxuspt/garmin_mcp; this repo adds the remote server layer (GitHub OAuth, persistent token stores, filesystem-tool block).
Choosing which tools are exposed
Every tool definition is sent to the AI assistant with each conversation, so ~150 tools
cost noticeably more context than a focused set. Use GARMIN_ENABLED_TOOLS (allowlist)
or GARMIN_DISABLED_TOOLS (denylist) — comma-separated tool names — to expose only what
you need. Unknown names are logged at startup.
Blocked filesystem tools
download_activity_file, download_course_gpx, set_fit_download_dir and
upload_course read or write arbitrary paths on the server. That is fine for a local
single-user install, but on a remote server one (possibly prompt-injected) call could
overwrite the OAuth token store, the Garmin token or the application code. They are
never registered here, whatever the tool filter says.
How it works
AI assistant → /authorize → GitHub login (+ 2FA) → /auth/callback
→ username verified → MCP access token issued → MCP connection
Access is protected by GitHub OAuth — only the GitHub account set in
GITHUB_ALLOWED_USER_ID can authenticate. GitHub login with 2FA is required
once every 30 days; tokens are persisted to a token store (file or Redis). No credentials are stored
in the AI assistant’s configuration.
- The AI assistant detects the MCP server requires OAuth
- A browser window opens — you log in to GitHub with 2FA
- The server verifies your GitHub account matches
GITHUB_ALLOWED_USER_ID - The AI assistant receives a 30-day access token and a 30-day refresh token
Restart note: OAuth tokens are persisted to the token store, so
安装
docker run -d --env-file .env -p 8000:8000 \