connecteur MCP · auto-hébergé · aucun serveur tiers

Tes données Garmin,
dans Claude.

Une commande installe un petit connecteur sur ta propre machine. Ton e-mail et ton mot de passe Garmin vont de ton navigateur à cette machine puis à Garmin — et nulle part ailleurs. Aucun hébergeur, ni ce projet, ne peut jamais les voir.

$ curl -fsSL https://raw.githubusercontent.com/devfrp/mcp-garmin-for-ia/main/get.sh | sh
00

Rien au milieu

La plupart des connecteurs te demandent de confier tes identifiants Garmin au serveur de quelqu'un d'autre. Celui-ci tourne sur une machine que tu contrôles — un portable, un serveur maison, un conteneur Proxmox, un VPS. L'installeur met tout en place sous ton propre utilisateur, enregistre le connecteur comme service qui démarre avec la machine (systemd ou launchd) et affiche les liens de connexion. Les jetons OAuth vivent dans ~/.config/garmin-mcp/ ; le mot de passe n'est jamais stocké. Compatible Claude Code, Claude Desktop, claude.ai dans le navigateur, et tout autre client MCP.

01

Ce que Claude peut lire

Neuf outils, directement depuis l'API Garmin Connect — en lecture seule.

Entraînement

Activités

La liste des activités, et le détail complet de n'importe laquelle — splits, tours, tout l'enregistrement.

Journée

Résumé quotidien

Pas, calories, minutes d'intensité, étages — la journée d'un coup d'œil.

Récupération

Sommeil

Phases, durée et score de sommeil, nuit après nuit.

Cardio

Fréquence cardiaque

FC de repos et série intra-journalière.

Énergie

Body Battery

La courbe de charge et de décharge sur la journée.

Charge

Stress & VFC

Niveaux de stress et variabilité cardiaque — les deux qui disent s'il faut pousser ou se reposer.

Compte

Profil utilisateur

Le profil derrière les chiffres, pour que les valeurs soient lues en contexte.

Tout client

MCP standard

Aucune astuce propre à Claude : n'importe quel client MCP peut viser le même endpoint.

02

Installer

Linux et macOS. Le script installe Tailscale quand c'est nécessaire (--tailscale / --funnel) et --no-sudo interdit toute élévation de privilèges — implicite en root.

Machine personnelle

curl -fsSL https://raw.githubusercontent.com/devfrp/mcp-garmin-for-ia/main/get.sh | sh

Serveur maison / LXC / VPS

# LAN + Tailscale (serveur maison)
… | sh -s -- --server

# écoute uniquement sur l'IP Tailscale (VPS à IP publique)
… | sh -s -- --server --tailscale

# + une URL HTTPS publique permanente pour claude.ai
… | sh -s -- --funnel

Se connecter à Garmin

# ouvrir la page affichée par l'installeur
http://127.0.0.1:8765/setup        # en local
http://<ip-serveur>:8765/setup     # LAN / tailnet

L'authentification à deux facteurs est gérée. Les endpoints de connexion ne répondent que sur des adresses privées — jamais sur les points d'entrée HTTPS publics.

CLI

garmin-mcp               # démarrer le connecteur
garmin-mcp login         # se connecter depuis le terminal
garmin-mcp url           # afficher ton URL MCP
garmin-mcp tunnel        # tunnel Cloudflare rapide
garmin-mcp logout        # déconnecter Garmin
garmin-mcp rotate-token  # nouveau jeton, anciennes URL mortes
03

Connecter un client

Les clients locaux utilisent l'URL à jeton. claude.ai exige HTTPS et OAuth — le connecteur implémente les deux.

ClientCe qu'il faut utiliserTransport
Claude Codeclaude mcp add -s user --transport http garmin "<URL MCP>"JETON
Claude Desktop
et autres clients MCP locaux
http://…:8765/garmin/?token=…JETON
claude.ai (navigateur)
Réglages → Connecteurs → Ajouter un connecteur
https://<machine>.<tailnet>.ts.net/garmin/OAUTH
  • 1 · HTTPS
    Obtenir une adresse publique · --funnel à l'installation donne une adresse permanente https://<machine>.<tailnet>.ts.net qui survit aux redémarrages — ou utilise le bouton Create HTTPS link de la page de configuration pour un tunnel Cloudflare rapide, dont l'URL change à chaque redémarrage.
  • 2 · COLLER
    Ajouter le connecteur · colle l'URL HTTPS de base suivie de /garmin/, sans jeton.
  • 3 · AUTORISER
    Valider · claude.ai ouvre la page d'autorisation du connecteur : colle le jeton d'accès donné par garmin-mcp url ou par la page de configuration, puis approuve. L'autorisation persiste.
  • SI ÇA ÉCHOUE
    DNS en cours de propagation · si claude.ai n'atteint pas le serveur juste après l'activation de Funnel, attends quelques minutes. Si ça persiste, renomme la machine dans la console Tailscale — un nom DNS neuf résout immédiatement — et relance l'installeur.
04

Comment ça marche

Un seul processus sur ta machine, deux entrées — et une seule est joignable depuis Internet.

navigateurSe connecte sur la page de configuration — le mot de passe part directement vers Garmin SSO et n'est jamais stocké
garmin-mcpLe connecteur, sur ta machine · jetons OAuth dans ~/.config/garmin-mcp/ · dialogue avec Garmin SSO et l'API Connect
/garmin/Endpoint MCP — le jeton de l'installation en ?token=, en préfixe de chemin /t/<token>/garmin/, ou en en-tête Bearer ← Claude Code / Desktop
HTTPS publicFunnel ou tunnel rapide — seuls l'endpoint MCP et la surface OAuth répondent ; connexion, santé et déconnexion restent privées, tout le reste renvoie 404 ← claude.ai (OAuth 2.1 + PKCE)

Les scanners qui sondent une adresse publique, c'est normal — tout ce qu'ils touchent renvoie 404.

Proxmox LXCCe qu'il faut faire
Tourne en root
sans jamais appeler sudo
Installe une unité systemd système qui démarre avec le CT.
Tailscale a besoin de /dev/net/tunSi le conteneur ne l'a pas, le script s'arrête et affiche les deux lignes exactes à ajouter à /etc/pve/lxc/<CTID>.conf sur l'hôte Proxmox.
Conteneurs DebianNécessitent apt install python3-venv au préalable.