garmin-mcp
garmin-mcp
Remote-MCP-Server für Garmin Connect auf Cloudflare Workers (kostenloser Tarif). Vollständiger TypeScript-Port von
taxuspt/garmin_mcp: alle 138 Tools plus ein garmin_get
Passthrough (insgesamt 139) und die 5 MCP-Ressourcen für Workout-Vorlagen/Referenzen.
Module: Aktivitätsverwaltung (21), Gesundheit & Wohlbefinden (29), Training & Leistung (15), Workouts + Builder (19), Ernährung (14), Challenges/Geräte/Ausrüstung (18), Gewicht/Körper/Frauengesundheit/Kurse (14), FIT-Datei-Analyse (4), Benutzerprofil (4), Passthrough (1).
Authentifizierung: Der Server ist ein OAuth-2.1-Autorisierungsserver (über @cloudflare/workers-oauth-provider).
Das Hinzufügen zu einem MCP-Client öffnet eine Browserseite, auf der du deine Garmin-E-Mail-Adresse und dein Passwort eingibst
(und einen MFA-Code, falls dein Konto 2FA verwendet). Der Worker führt Garmins SSO-Web-Widget-Login-Flow serverseitig aus —
den einzigen Login-Pfad, der von Rechenzentrums-IPs aus nicht bot-blockiert wird — erhält ein langlebiges (~1 Jahr) OAuth1-Token,
verwirft deine Anmeldedaten und speichert nur dieses Token verschlüsselt im Grant. Er stellt dann bei Bedarf kurzlebige OAuth2-Bearer-Tokens
für connectapi.garmin.com aus. Ein „Token einfügen“-Fallback (über das lokale Skript unten) ist hinter einem Details-Toggle versteckt,
falls Garmin jemals beginnt, die serverseitige Anmeldung zu blockieren.
Bereitstellung
npm installnpx wrangler kv namespace create OAUTH_KV— füge die ID inwrangler.jsonceinnpx wrangler deploy
Related MCP server: Garmin Open MCP
Client verbinden
claude mcp add garmin --transport http https://garmin-mcp.<your-subdomain>.workers.dev/mcpClaude Code öffnet die Autorisierungsseite in deinem Browser; folge den zwei Schritten. claude.ai web: Einstellungen → Konnektoren → Benutzerdefinierten Konnektor mit derselben URL hinzufügen. Claude Desktop und andere Nur-stdio-Clients: mcp-remote übernimmt den OAuth-Flow ebenfalls.
Der Zugriff ist ausschließlich über OAuth möglich — es gibt keinen Pfad über rohe Header. Jede /mcp-Anfrage wird durch ein vom Anbieter ausgestelltes Zugriffstoken abgesichert, und ein Zugriffstoken wird nur durch den Abschluss des Login-Flows erstellt.
Auf dein eigenes Konto beschränken
Setze OWNER_GARMIN_IDS in wrangler.jsonc auf deinen Garmin-displayName (den Wert, den get_user_profile zurückgibt) — eine durch Kommas getrennte Zulassungsliste. Jede Anmeldung für ein Garmin-Konto, das nicht auf der Liste steht, wird im Autorisierungsschritt abgelehnt, sodass Fremde deine Bereitstellung nicht nutzen können, selbst mit ihren eigenen gültigen Garmin-Anmeldedaten. Lass es leer, um jedes Garmin-Konto zuzulassen.
Abweichungen vom Original (Remote-/Serverless-Anpassungen)
download_activity_filegibt den Dateiinhalt inline zurück (fit als base64, gpx/tcx/csv als Text, größenbegrenzt), anstatt auf die lokale Festplatte zu schreiben;set_fit_download_dirist ein dokumentierter No-op.upload_coursenimmtgpx_content(GPX-XML-Text) anstelle eines lokalen Dateipfads.get_activity_fit_datadeckt Sitzung/Runden/Aufzeichnungen + Leistungsanalyse ab (NP, VI, Leistungskurve, W/kg); die Di2-Schaltvorgänge, die Anstiegserkennung und die HRV-Analysen des Originals wurden nicht portiert.Subrequest-Budget des kostenlosen Tarifs (~50/Aufruf):
get_training_load_trendauf 45 Tage begrenzt (vorher 90),get_power_duration_curveauf 15 Aktivitäten (vorher 20),get_hrv_trendnutzt in einem Aufruf den Range-Endpunkt, Ziel-/Schritt-/Menstruations-Paginierungsschleifen begrenzt.Tools geben JSON-Objekte zurück anstatt vorab serialisierter Zeichenketten; Fehler erscheinen als MCP-Tool-Fehler.
Hinweise
Das Garmin-Token wird verschlüsselt im Grant in Workers KV gespeichert; wenn es abläuft (~1 Jahr), schlagen Tool-Aufrufe fehl — authentifiziere den Server in deinem Client erneut, um den Flow erneut durchzuführen.
Zugriffstokens sind Bearer-Credentials: Wer ein gültiges besitzt, hat bis zu dessen Ablauf Zugriff auf deine Daten. Die Sicherheit hängt also davon ab, dass dein MCP-Client das gespeicherte Token geheim hält.
Lokale Entwicklung:
npm run dev, richte dann einen Client aufhttp://localhost:8787/mcpaus.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenancePersonal MCP server for interacting with your Garmin Connect data. Exposes 62 tools across 11 domains including activities, health, training, and workouts.1MIT
- AlicenseAqualityBmaintenanceUnofficial MCP server bridging Garmin Connect to MCP clients and ChatGPT, providing tools to access health data, activities, and trends via a self-hosted API.11MIT
- AlicenseAqualityBmaintenanceMCP server for reading and querying Garmin Connect data, including activities, strength history, recovery, trends, and optionally creating workouts.12MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Garmin Connect that enables users to access and manage their personal health and fitness data, including daily summaries, heart rate, sleep, HRV, stress, body composition, activities, and training readiness, with secure per-user authentication.Apache 2.0
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rohankmr414/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server