garmin-mcp
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.mdabgeschlossen 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-garminconnectgespeichert, 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=mcpauf Loopback-Port 3000. Nur der OpenAI Secure MCP Tunnel darf diesen Port erreichen.SERVER_ROLE=link-webauf 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-mcpOder 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_statusconnect_garmin– gibt eine zehnminütige, einmalig verwendbare Browser-URL zurückget_profiledisconnect_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-auditVerwenden Sie keine echten Garmin-Anmeldedaten in der CI. Jeder künfige Live-Test muss ein dediziertes Konto und einen expliziten Integration-Test-Marker verwenden.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Read-only access to InfluSense influencer discovery, ratings, watchlists, and reports via MCP.
Unofficial Garmin Connect access: sleep, HRV, training, activities, workouts and weight.
11Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.1MIT
- FlicenseNot gradedqualityDmaintenanceExposes Garmin Connect health and activity data (steps, sleep, heart rate, etc.) via MCP tools, with built-in login and MFA support.-
- AlicenseBqualityBmaintenanceEnables retrieval of Garmin Connect data such as activities, sleep, heart rate, and body battery levels using unofficial API through MCP tools.4MIT
- FlicenseAqualityCmaintenanceProvides read-only access to your Garmin Connect health data, including sleep, HRV, body battery, stress, training readiness, and activities, through an MCP server.14-