Skip to main content
Glama

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

  1. npm install

  2. npx wrangler kv namespace create OAUTH_KV — füge die ID in wrangler.jsonc ein

  3. npx wrangler deploy

Related MCP server: Garmin Open MCP

Client verbinden

claude mcp add garmin --transport http https://garmin-mcp.<your-subdomain>.workers.dev/mcp

Claude 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_file gibt 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_dir ist ein dokumentierter No-op.

  • upload_course nimmt gpx_content (GPX-XML-Text) anstelle eines lokalen Dateipfads.

  • get_activity_fit_data deckt 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_trend auf 45 Tage begrenzt (vorher 90), get_power_duration_curve auf 15 Aktivitäten (vorher 20), get_hrv_trend nutzt 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 auf http://localhost:8787/mcp aus.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Personal MCP server for interacting with your Garmin Connect data. Exposes 62 tools across 11 domains including activities, health, training, and workouts.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Unofficial MCP server bridging Garmin Connect to MCP clients and ChatGPT, providing tools to access health data, activities, and trends via a self-hosted API.
    11
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP 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