Skip to main content
Glama

Garmin MCP

Projektstatus (2026-08-23): Implementierung des persönlichen Tunnels; lokale Smoke-Tests bestanden. Aktivieren Sie keinen Freundeszugriff oder öffentlichen MCP-Eingang. Echte Garmin-Anmeldedaten bleiben blockiert, bis der Betreiber den separaten öffentlichen HTTPS-Link-Web-Tunnel ausdrücklich freigibt und die Live-Test-Checkliste in PERSONAL_TUNNEL_RUNBOOK.md abgeschlossen hat.

Ein mehrbenutzerfähiger, schreibgeschützter MCP-Ressourcenserver, der cyberjunky/python-garminconnect kapselt. Er stellt authentifizierte Garmin-Daten bereit, ohne eine Benutzer-ID als Tool-Argument zu akzeptieren.

Sicherheitsmodell

Die folgenden Aufzählungen beschreiben die ursprüngliche Entwurfsabsicht. Sie sind durch die aktuelle Implementierung noch nicht vollständig belegt; die bekannten Lücken und erforderlichen Abnahmetests werden in DESIGN_DRAFT.md erfasst.

  • MCP-Bearer-Tokens werden getrennt von der Garmin-Authentifizierung geprüft. Produktions-OIDC validiert Signatur, Aussteller, Zielgruppe, Ablaufzeit, erforderliche Scopes und verwendet den verifizierten sub-Anspruch.

  • Garmin-E-Mail-Adresse, -Passwort und -MFA-Codes existieren nur während ihrer Anfrage. Sie werden weder gespeichert noch protokolliert. Die Uvicorn-Zugriffsprotokollierung ist deaktiviert.

  • Es wird nur das serialisierte Sitzungs-JSON von python-garminconnect gespeichert, das mit AES-256-GCM verschlüsselt und gegen den Besitzer-Repincipal authentifiziert wird, damit Chiffrattext nicht zwischen Benutzern verschoben werden kann.

  • MFA-Clients sind prozesslokal, einmalig, besitzergebunden und laufen nach fünf Minuten ab.

  • Verbindungs-URLs platzieren ihren signierten Einmal-Status im Fragment. Externes JavaScript leert das Fragment und übernimmt den Status in den POST-Body, damit er nicht in HTTP- und Proxy-Zugriffsprotokollen auftaucht.

  • Disconnect löscht die lokal verschlüsselten Tokens. Dadurch wird ein bereits von Garmin ausgestelltes Token nicht widerrufen; widerrufen Sie den Zugriff bei vermutetem Erfolg in den Garmin-Sicherheitseinstellungen.

Related MCP server: garmin-mcp

Persönlicher ChatGPT-Tunnelmodus

Die persönliche Einrichtung verwendet absichtlich zwei Listener:

  • SERVER_ROLE=mcp auf Loopback-Port 3000. Nur der OpenAI Secure MCP Tunnel darf diesen Port erreichen.

  • SERVER_ROLE=link-web auf Loopback-Port 3001. Ein separater HTTPS-Tunnel darf nur dieser Listener freigeben, damit ein Telefon Garmin-Anmeldedaten eingeben kann, ohne den MCP-Endpunkt zu veröffentlichen.

Im Modus AUTH_MODE=tunnel wird genau eine TUNNEL_PRINCIPAL_ID konfiguriert; es handelt sich nicht um einen Mehrbenutzermodus. Der OpenAI-Tunnel ist die Authentifizierungsgrenze, und der Server verweigert den kombinierten Modus oder eine Nicht-Loopback-Bindung, wenn die Container-Isolation nicht ausdrücklich aktiviert ist. Die vollständige Einrichtung finden Sie in PERSONAL_TUNNEL_RUNBOOK.md.

Local Akführung

Erfordert Python 3.12+, PostgreSQL 17 und uv.

cp .env.example .env
# Fill secrets, then for local-only bearer authentication set AUTH_MODE=development.
uv sync --all-extras
psql "$DATABASE_URL" -f migrations/001_initial.sql
uv run garmin-mcp

Oder führen Sie docker compose up --build aus, nachdem Sie .env erstellt haben. Compose veröffentlicht beide Anwendungsports nur auf 127.0.0.1 und keinen PostgreSQL. Der MCP-Endpunkt ist /mcp; der Health-Endpunkt ist /healthz. Im Entwicklungsmodus ist der Bearer-Wert selbst die lokale Benutzer-ID. Setzen Sie den Entwicklungsmodus niemals über das Loopback hinaus aus.

MCP Tools

  • get_connection_status

  • connect_garmin – gibt eine zehnminütige, einmalig verwendbare Browser-URL zurück

  • get_profile

  • disconnect_garmin

Das derzeitige Garmin-Datentool ist schreibgeschützt. disconnect_garmin ändert nur den lokalen Verbindungszustand, indem es die gespeicherte Sitzung löscht. Kontoanmeldedaten werden nur in der Browser-Verknüpfungsseite eingegeben, nie als MCP Tool-Argument übergeben. Health-/Aktivitäts-Tools wurden noch nicht implementiert.

Validierung

uv run ruff check .
uv run mypy src
uv run pytest
uv build
uv run pip-audit

Verwenden Sie keine echten Garmin-Anmeldedaten in der CI. Jeder künfige Live-Test muss ein dediziertes Konto und einen expliziten Integration-Test-Marker verwenden.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Garmin Connect health and activity data (steps, sleep, heart rate, etc.) via MCP tools, with built-in login and MFA support.
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables retrieval of Garmin Connect data such as activities, sleep, heart rate, and body battery levels using unofficial API through MCP tools.
    4
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Provides read-only access to your Garmin Connect health data, including sleep, HRV, body battery, stress, training readiness, and activities, through an MCP server.
    14
    -