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 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 gradedqualityCmaintenanceConnects Garmin Connect data to MCP-compatible clients, providing access to fitness activities, health metrics, and training plans. It supports advanced features like headless 2FA and automated MFA retrieval to enable seamless health data interaction through natural language.1MIT
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.MIT
- FlicenseNot gradedqualityBmaintenanceExposes 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
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Mastodon MCP — public Mastodon data via mastodon.social (no auth required)
Wise (https://wise.com) MCP, multi-currency account access via Personal Token + SCA key. Reads profi
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/balabeir/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server