Garmin Read-Only MCP
Garmin Read-Only MCP
Eine bewusst eng begrenzte Garmin-Connect-Integration für die lokale Nutzung mit Hermes Agent. Sie synchronisiert ausgewählte Garmin-Zusammenfassungen in einen nur für den Eigentümer zugänglichen SQLite-Cache und stellt anschließend ausschließlich diesen normalisierten Cache über drei schreibgeschützte MCP-Tools bereit.
Dieses Projekt verwendet den von der Community gepflegten
python-garminconnect-Client und nicht dokumentierte Garmin-Connect-Endpunkte. Es ist weder mit Garmin verbunden noch von Garmin unterstützt. Endpunkte können sich ändern, und automatisierter Zugriff kann Risiken für das Konto oder die Nutzungsbedingungen mit sich bringen. Das offizielle Garmin-Connect-Entwicklerprogramm bleibt der bevorzugte Weg für genehmigte Geschäftsintegrationen.
Sicherheitsmodell
Das Design trennt den Netzwerkzugriff vom MCP-Prozess:
garmin-readonly-authführt einmalig einen interaktiven Login in einem lokalen Terminal durch. Passwort- und MFA-Eingaben werden verborgen und niemals als Befehlsargumente akzeptiert.garmin-readonly-synclädt wiederverwendbares lokales Sitzungsmaterial, ruft ein begrenztes Datumsfenster ab, entfernt Upstream-Felder und schreibt normalisierte Zusammenfassungen in SQLite.garmin-readonly-mcpimportiert weder den Garmin-Client noch Sitzungsmaterial. Es liest ausschließlich den normalisierten SQLite-Cache und lehnt Caches ab, die Symlinks sind, keine regulären Dateien sind, nicht dem aktuellen Benutzer gehören oder für Gruppen- oder andere Benutzer zugänglich sind.
Das Standard-Zustandsverzeichnis ist:
~/.local/share/garmin-readonly-mcp/
├── tokens/ # Garmin session material, mode 0700/0600
└── cache.sqlite3 # normalized cache, mode 0600Setzen Sie die nicht geheime Umgebungsvariable GARMIN_READONLY_HOME, um ein anderes Wurzelverzeichnis zu verwenden.
Platzieren Sie das Zustandsverzeichnis niemals innerhalb des Repositorys.
Related MCP server: garmin-mcp-local
Datenumfang
Der Cache und das MCP stellen ausschließlich Folgendes bereit:
Tägliche Gesamtkalorien, aktive Kalorien und BMR-/Ruhekalorien
Schritte und Ruhepuls, sofern verfügbar
Aktivitätstyp, Startzeit, Dauer, Distanz und Kalorien
Schlafdauer/-wert, Body Battery, nächtliche HRV/Status und Trainingsbereitschaft, sofern verfügbar
Sie schließen bewusst aus:
Garmin-Profil- und Sozialdaten
Kontokennungen und Aktivitäts-IDs
Gerätedetails
GPS-Koordinaten, Routen und FIT/GPX/TCX-Dateien
Gewicht und Körperzusammensetzung
Rohe Garmin-Antworten
Hochlade-, Aktualisierungs-, Planungs- oder Löschvorgänge
Allgemeiner oder beliebiger Garmin-API-Zugriff
Garmin-Kalorienwerte sind Aktivitätskontext und keine Anweisung, die Nahrungsaufnahme zu erhöhen.
Voraussetzungen
Linux oder eine andere Unix-ähnliche Umgebung mit privaten Dateiberechtigungen
Python 3.12+
Ein Garmin-Connect-Konto
Installation
git clone https://github.com/alexpomsft/garmin-readonly-mcp.git
cd garmin-readonly-mcp
uv sync --frozenLokal authentifizieren
Führen Sie dies in einem privaten lokalen Terminal aus – nicht in Telegram, Chat, Shell-Verlauf oder auf einem geteilten Bildschirm:
uv run garmin-readonly-authDer Befehl fragt lokal nach E-Mail, verborgenem Passwort und verborgener MFA, falls Garmin dies verlangt. Er speichert wiederverwendbares Sitzungsmaterial, aber nicht das Passwort.
Synchronisieren
Standardmäßig werden heute und gestern synchronisiert:
uv run garmin-readonly-syncEin begrenztes historisches Zeitfenster kann angefordert werden:
uv run garmin-readonly-sync --end-date 2026-08-18 --days 14--days muss zwischen 1 und 31 liegen. Anbieterfehler werden durch eine feste öffentliche
Meldung ersetzt, damit rohe Garmin-Antworten und Authentifizierungsdetails nicht ausgegeben werden.
Den MCP-Server ausführen
Nach mindestens einer erfolgreichen Synchronisierung:
uv run garmin-readonly-mcpDer stdio-Server stellt genau Folgendes bereit:
get_daily_activity(date: YYYY-MM-DD)get_recent_activities(days: 1..31 = 7)get_recovery_summary(date: YYYY-MM-DD)
Tool-Schemas lehnen nicht deklarierte Argumente ab.
Mit Hermes Agent verbinden
Verwenden Sie den MCP-Befehl von Hermes, anstatt config.yaml manuell zu bearbeiten:
hermes mcp add garmin-readonly \
--command /absolute/path/to/garmin-readonly-mcp/.venv/bin/garmin-readonly-mcp
hermes mcp test garmin-readonlyStarten Sie Hermes nach dem Hinzufügen des Servers neu, damit seine Tools erkannt werden. An die MCP-Konfiguration werden
keine Anmeldedaten oder Session-Token-Pfade übergeben; sie verwendet das private Standard-Zustandsverzeichnis.
Falls GARMIN_READONLY_HOME angepasst wurde, übergeben Sie ausschließlich diese nicht geheime Einstellung
mit hermes mcp add ... --env GARMIN_READONLY_HOME=/private/path.
Entwicklung und Verifizierung
uv sync --frozen
uv run pytest --cov=garmin_readonly_mcp --cov-report=term-missing
uv run ruff check .
uv run mypy src tests
uv run pip-auditDie Implementierung wurde mit zunächst fehlschlagenden Tests entwickelt. CI führt dieselben Test-, Lint-, Typüberprüfungs- und Abhängigkeits-Audit-Gates aus.
Einschränkungen
Garmin-Connect-Endpunkte wurden per Reverse Engineering ermitt
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Unofficial Garmin Connect access: sleep, HRV, training, activities, workouts and weight.
Adaptive running coach MCP server — training data, plans, and recovery for AI assistants.
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Garmin Connect that provides read-only access to daily health metrics, activities, workouts, and body composition data.3232 PyPIMIT
- AlicenseAqualityBmaintenanceA local MCP server that caches Garmin Connect data in SQLite for fast, read-only queries, with tools for bulk import, rate-limited sync, and failure alerts.92MIT
- AlicenseAqualityDmaintenanceMCP server for reading and querying Garmin Connect data, including activities, strength history, recovery, trends, and optionally creating workouts.12MIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server that exposes Garmin Connect health data from a local SQLite database to AI assistants, enabling queries for recent days, sleep, weekly trends, and a guarded SQL query surface.MIT