Mettre en place un serveur MCP vers une plateforme sportive
Les agents conversationnels IA, dont les plus connus ont inondé l’actualité ces dernières années, sont devenus quasiment incontournables. ChatGPT était le premier et reste probablement encore le plus connu même si il est maintenant concurrencé par d’autres tels que le modèle Claude de Antropic, Gemini de Google ou encore le Chat de Mistral AI. Ces modèles sont aujourd’hui largement utilisés par beaucoup, pour effectuer des recherches, générer du code informatique ou… des plans d’entrainement sportif. Car c’est un fait, l’IA a également fait largement irruption dans notre quotidien de sportifs. Que ce soit au travers d’apps de coaching dédiées, d’intégrations dans nos applications telles que Strava ou Garmin Connect, ou encore directement dans nos montres comme c’est le cas de Workout Buddy de Apple… Mais il restait un chaînon manquant, une étape, un connecteur qui manquait jusque là: comment faire pour que les IA de type GPT puissent accéder sans limite à nos données sportives pour nous proposer un coaching vraiment personnalisé sans tracasseries? C’est là qu’entrent en jeu les serveurs MCP: Model Context Protocol.

Soutenir le site
Vous appréciez les contenus de nakan.ch? Vous souhaitez soutenir le site, tout en vous équipant avec les dernières nouveautés en matière de technologie sportive? En utilisant le lien sur l'un des logos ci-dessous, vous soutenez la réalisation de futurs tests de matériel sur le site! Et cela ne vous coûte rien de plus!


A propos de cet article, et mise en contexte
Connaissances techniques et informatiques requises
Cet article a pour but de décrire la mise en place technique d’un ou plusieurs serveurs MCP vers des plateformes sportives pour un usage individuel. Ces procédures sont techniques et nécessitent des compétences en informatique, notamment des connaissances sur la conteneurisation d’application dans des environnements comme Docker ou Podman, ou mieux Kubernetes. De plus, un environnement minimal informatique est nécessaire pour héberger ces serveurs MCP, et une configuration pour les rendre accessible sur Internet est requise. Enfin, il faut pouvoir configurer une entrée DNS vers ces serveurs, et leur attribuer un certificat TLS valide pour les rendre utilisables depuis Internet…
Dans l’article qui suit je tente de décrire au mieux la procédure et la mise en place de ces outils, mais je ne peux pas décrire l’entier des opérations et des configurations requises, cela sort très largement du cadre de cet article.
Limitations actuelles des différentes IA
Aujourd’hui, ChatGPT supporte de manière très limitée la connexion aux serveurs MCP. Si il est possible de connecter un MCP à ChatGPT, il est nécessaire d’activer le mode développeur, ce qui limite drastiquement ensuite les fonctionnalités disponibles.
L’IA Claude permet un usage d’un MCP local sans avoir à le configurer à travers Internet en passant par Claude Desktop. Cela simplifie la mise en place mais rend l’usage de l’ordinateur indispensable. Gemini de Google ne supporte pas encore la connexion de MCP.
Au quotidien j’utilise Le Chat de Mistral AI, qui est à ma connaissance l’IA la plus avancée dans l’intégration des connecteurs MCP. J’utilise au quotidien Le Chat avec les MCP de Garmin Connect et Polar Flow (en cours de développement) sans problème particulier. C’est ce modèle d’IA que j’analyse dans cet article, et sur lequel je me concentre également dans la vidéo associée!
La vidéo complète sur l’utilisation de l’IA dans le cadre sportif
En même temps que cet article j’ai mis en ligne une vidéo dans laquelle je décris de manière complète la manière dont j’utilise au quotidien ou presque les IA pour générer des séances ou des plans d’entrainement. J’explique aussi comment j’ai intégré les serveurs MCP vers Garmin Connect ou Polar Flow pour que ces agents IA puissent quasiment sans limitation accéder à mes données sportives:
- Introduction
- L’IA existe déjà dans le sport
- Accepter de partager ses données
- Fournir les bonnes données
- Les 3 piliers pour obtenir de bons résultats
- Prompts ou contextes
- MCP: des donnée automatiques
- Le MCP: un truc de geek
- Et si on a pas de MCP
- Parler à l’IA comme à son coach
- Rester prudent avec l’IA
- Conclusion
Qu’est-ce qu’un serveur MCP
Un serveur MCP (abréviation de Model Context Protocol) est un connecteur qui permet d’apporter à un agent IA des données spécifiques. Sur la page Wikipedia dédiée au protocole MCP, il est décrit comme le connecteur USB-C de l’IA: il permet en théorie de connecter n’importe quelle source de donnée à n’importe quel agent IA conversationnel. Et c’est aujourd’hui à peu près le cas, en prenant en compte les limitations que j’ai listées plus haut.
Le monde de l’IA évolue très rapidement et il est probable que les choses changent vite. Ainsi, il est possible que ce qui était vrai au moment de mettre en ligne cet article soit dépassé quelques mois seulement plus tard.
Les serveurs MCP ne devraient-ils pas être fournis par les plateformes?
Ca serait l’idéal, et quelque chose de souhaitable. Je génère des données avec ma montre Suunto/Polar/COROS/Garmin/Apple (choisissez ce qui convient), et je veux utiliser ces données comme bon me semble. Aujourd’hui, ces marques proposent des exports de données vers Strava, TrainingPeaks et souvent d’autres plateformes. Mais en terme d’échange de données avec les IA, les marques sont nettement plus restrictives. Plus généralement d’ailleurs, les marques n’ouvrent pas vraiment leur écosystème, à l’exception notable de Polar, chez qui il est très facile pour n’importe qui d’aller chercher quasiment toutes les données que l’on souhaite.

Le cas de Garmin Connect: privilégier l’IA de Garmin Connect +
Garmin Connect ne propose pas d’API publique, mais la plateforme est tellement utilisée de que des outils non-officiels existent malgré tout. Ils sont au mieux tolérés par Garmin, mais pas officiellement supportés. Ils peuvent donc cesser de fonctionner du jour au lendemain. Ce sont ces outils sur lesquels sont basés les MCP pour Garmin Connect dans cet article. A utiliser donc en connaissance de cause.
Il faut savoir que les conditions d’utilisation de Garmin Connect ne considèrent pas l’usage d’outils non-officiels comme une utilisation normale et prévue dans le contrat présenté à l’utilisateur final. En utilisant un MCP sur Garmin Connect, qui utilise forcément des méthodes d’accès non officielles, on s’expose donc à une fermeture et suppression de son compte Garmin. Est-ce que la marque américaine prendrait le risque de suspendre les comptes de tous ses clients qui utilisent de tels outils, perdant autant de clients au passage? Probablement pas. Mais la possibilité demeure.
Car n’oublions pas que Garmin tente avant tout de mettre en avant ses propres technologies, et que Garmin Connect intègre dans son abonnement payant de l’IA, que Garmin va probablement vouloir développer et promouvoir… Quasiment aucune chance donc de voir un MCP Garmin officiel de si tôt.
La situation de Strava: l’IA non merci
Strava propose une API publique disponible pour les développeurs. Mais à l’article 14.4 des conditions d’utilisation des API, Strava stipule clairement:
Vous ne devez pas utiliser les Ressources de l’API Strava (y compris les Données de Strava), de façon directe ou indirecte, dans le cadre d’entraînement de modèles relatif à l’intelligence artificielle, au machine learning ou à d’autres utilisations semblables.
Il n’est quasiment pas possible de savoir avec certitude si une IA conversationnelle à laquelle on connecte un serveur MCP va utiliser ces données, immédiatement ou à terme, pour son propre entrainement. C’est la raison pour laquelle il est au sens strict interdit d’utiliser l’API de Strava, et pour laquelle j’ai immédiatement abandonné l’idée d’utiliser ou de tester un MCP avec Strava. Car la marque est connue pour ne pas trop hésiter à clore les comptes des utilisateurs qui dépassent un peu trop les limites…
Le cas de Suunto: l’ouverture, non merci
Suunto a un double langage depuis quelques temps qui est compliqué à lire. D’un côté, la marque met en avant des apps de développeurs tiers sur sa plateforme Suunto Plus, mais d’un autre côté ne communique officiellement aucun moyen pour faire partie de ces développeurs tiers. Comme si c’était juste réservé aux bons copains. Pour accéder aux API qui donnent l’accès aux données de la Suunto App, il faut postuler auprès de la marque avec un dossier. Voici ce que Suunto dicte comme conditions. C’est à la fois flou mais assez clair: les développements de particuliers, non merci…
The API will be provided to companies, organizations who are providing tools / apps / services for public audience. We currently don’t offer the API access for personal use. We are reviewing the applicants based on for example the fit to our brand, interest from our customers and illustration of the innovation mindset We do not charge from the use of the API.
Les chances de voir un connecteur MCP officiel et fourni par Suunto sont quasiment inexistantes.
Le cas de COROS: pas beaucoup plus d’ouverture que les autres
COROS n’offre pas non plus d’API publique, et seul un formulaire discret est disponible au fond de la base de connaissance de COROS pour demander l’accès. Les retours d’expérience de beaucoup de développeurs notamment sur Reddit sont assez unanimes: si on est pas une société avec un produit déjà développé qui possède déjà une clientèle de base, COROS n’entrera pas en discussion.
Dans ces conditions, difficile d’imaginer pouvoir demander l’accès pour la mise en place d’un MCP. Quant à l’idée que COROS en fournisse un officiel, bien que n’étant pas irréaliste, elle semble pour le moins peu probable…
Polar: l’exception qui confirme la règle
Polar est la seule des marques présentées ici à proposer une API publique et ouverte pour l’accès aux données de Polar Flow. Les seules restrictions sont une limite dans la non concurrence aux produits de Polar et une utilisation « raisonnable » des accès aux API. Rien qui ne semble interdire leur usage dans un cas de type serveur MCP. C’est ce qui m’a poussé à investiguer du côté de Polar Flow, pour mon intégration avec les IA pour la suite de mes investigations.
Toutefois, il restait un problème majeur: certes Polar est la seule marque à permettre tant techniquement que par ses conditions d’utilisation la création d’un MCP. Mais il n’existe concrètement pas de MCP pour Polar Flow. Je me suis donc lancé dans la création de ce MCP. Il est, au moment de la mise en ligne de cet article, en phase de finalisation.
Avec tout ça, est-ce que je peux mettre en place un MCP indépendant?
On trouve aujourd’hui des projets dits « Open Source » pour des MCP chez Garmin ou Strava. Rien n’empêche de les mettre en place à titre personnel, même si cela reste pour l’instant plutôt réservé à des personnes plutôt expérimentées en informatique.
D’un point de vue conditions d’utilisation, encore une fois, je ne me risquerai pas à implémenter un MCP Strava, le risque existe de se voir fermer son compte si la plateforme se rend compte de l’usage effectif qui est fait des données issues de son API.
Depuis plusieurs mois, j’ai mis en place un serveur MCP Garmin Connect, et je suis en train de terminer le développement de celui pour Polar Flow. Ce sont les deux seuls que j’ai utilisés dans le domaine sportif.
Les commandes de la suite de cet article
Pour poursuivre avec la mise en place, il faut savoir utiliser git et un outil pour les containers logiciels comme Docker ou Podman. Les commandes sont pour la plupart identiques que l’on utilise l’un ou l’autre de ces outils.
L’infrastructure que j’utilise chez moi

Chez moi, j’ai monté un système d’hébergement de containers basé sur Podman sous Linux sur un Raspberry Pi 5 doté de 8 Go de RAM. Le tout me permet d’héberger plusieurs containers, dont facilement trois ou quatre serveurs MCP simultanément. J’y ai simplement installé Raspberry OS en dernière version et installé Podman pour une exécution en userspace. Voici la liste de courses pour mon setup (les liens sont des liens affiliés de amazon.fr):
- Le Raspberry Pi 5 avec 8 Go de RAM
- Le boitier officiel de Raspberry pour le Pi 5 et un dissipateur minimaliste à coller sur le SoC
- Une alimentation USB-C spécifiquement pour le Raspberry Pi 5
- Une carte SD de 64 Go de base pour installer le système et héberger les containers
Cette configuration m’a coûté l’équivalent de 100€ au moment ou je l’ai achetée pour remplacer mon ancien Raspberry Pi 4 qui a rendu l’âme au début de l’hiver. Mais le prix des composants informatiques qui explose en ce moment fait augmenter régulièrement les prix.
Il est également possible d’héberger un MCP dans le cloud, via un Kubernetes as a service par exemple, mais si on en a pas besoin pour autre chose, cette solution est probablement trop chère et complexe.
Mettre en place un serveur MCP vers Garmin Connect
Il existe beaucoup de projets de serveurs MCP pour Garmin Connect. La plupart sont plus ou moins dérivés du projet disponible ici. Ce projet est le plus avancé et le plus abouti, mais il est conçu principalement pour une exécution locale, ce qui restreint son usage potentiel. J’ai bien trouvé des projets qui se sont appuyés sur le premier pour le rendre disponible en réseau (et notamment celui-ci pour un déploiement Kubernetes), mais ils m’ont tous donnée du fil à retordre (pour ne pas dire plus).
Comme j’avais déjà commencé à écrire un MCP serveur pour Polar Flow, je me suis basé sur FastMCP pour « wrapper » le premier projet, et simplifier sa mise à disposition en réseau. Le projet est disponible sur mon GitHub, et la première étape pour le mettre en place est d’installer git et de lancer la commande suivante. La suite de cet article s’appuie sur le contenu de ce projet:
git clone https://github.com/chanezgr/garmin_mcp_nakan.git
Une fois le projet cloné, on va l’utiliser pour générer des tokens d’authentification et lancer son propre serveur MCP.
L’authentification Garmin Connect (avec MFA)
Mon compte Garmin Connect utilise de l’authentification à 2 facteurs, avec un code envoyé par email. Afin de permettre à mon serveur MCP d’être authentifié, je dois donc générer un token d’accès qui sera ensuite utilisé pour effectuer des requêtes chez Garmin. Voici comment procéder.
Avant d’aller plus loin, suivez ces étapes scrupuleusement. Si par hasard des erreurs devaient survenir, patientez plusieurs minutes avant de tenter à nouveau. Garmin est assez restrictif sur le nombre de requêtes d’authentification que l’on peut faire durant une période de temps donnée… Et en cas de trop nombreuses requêtes, vous risquez de temporairement vous faire bloquer. Vérifier toujours que vous pouvez joindre Garmin Connect web si vous avez des messages d’erreurs étranges…
Pour commencer, il faut créer des fichiers de configuration qui vont contenir mes données d’authentification, et créer un dossier (dans mon cas ici .gc_auth) qui va accueillir les données d’authentification:
echo "mon_mail@example.com" > ~/.garmin_email
echo "mon_mot_de_passe_garmin" > ~/.garmin_password
chmod 600 ~/.garmin_email ~/.garmin_password
mkdir -p ~/.gc_auth
touch ~/.gc_auth/garminconnect_base64
chmod 600 ~/.gc_auth/garminconnect_base64
Une fois que c’est en place, on va construire un container sur la base du projet garmin_mcp original avec une requête spécifique prévue pour gérer l’authentification. Pour ceci, j’utilise le Dockerfile.auth inclu dans mon projet GitHub. Je construit ce container avec la commande suivante:
podman/docker build --no-cache -t garmin_mcp_auth -f Dockerfile.auth .
Puis je lance une fois en mode interactif ce container pour générer mes token d’accès:
podman/docker run -it --rm \
-v ~/.garmin_email:/root/.garmin_email:ro \
-v ~/.garmin_password:/root/.garmin_password:ro \
-v ~/.gc_auth:/root/.garminconnect \
-v ~/.gc_auth/garminconnect_base64:/root/.garminconnect_base64 \
-e GARMIN_EMAIL_FILE=/root/.garmin_email \
-e GARMIN_PASSWORD_FILE=/root/.garmin_password \
garmin_mcp_auth
Après avoir lancé cette commande, mon container d’authentification va générer en environnement d’accès à Garmin Connect:
Trying to login to Garmin Connect using token data from directory '~/.garminconnect'…
Login tokens not present, login with your Garmin Connect credentials to generate them.
They will be stored in '~/.garminconnect' for future use.
Garmin Connect MFA required. Please check your email/phone for the code.
Enter MFA code:
J’entre ici le code reçu par email pour authentification sur Garmin Connect, puis le processus créé les données d’accès:
Oauth tokens stored in '~/.garminconnect' directory for future use. (first method)
Oauth tokens encoded as base64 string and saved to '/root/.garminconnect_base64' file for future use. (second method)
Garmin Connect client initialized successfully.
J’ai donc maintenant des tokens d’accès à Garmin Connect que je peux utiliser ensuite avec mon projet MCP!
Préparer l’environnement pour lancer un serveur MCP
La suite est technique, et il faut un peu plus de débrouillardise en informatique pour tout mettre en place. Je ne vais pas aller dans les détails de ces opérations, probablement très bien documentées ailleurs… Mais il faut pour la suite:
- Connaitre son IP publique, probablement celle de son routeur/modem Internet
- Créer une entrée DNS sur un domaine que l’on possède pour pointer sur le hostname de son modem (CNAME) ou sur son adresse IP (A)
- Générer un certificat TLS (j’en ai généré un gratuit avec ZeroSSL)
- Configurer un port forwarding pour le port 8443/tcp (ou un autre) de son routeur vers la machine qui héberge les containers
Une fois ces pré-requis remplis, on peut éditer la configuration des différents éléments qui vont héberger le MCP. Les plus importants sont:
- Dans le fichier de configuration nginx, changer le FQDN, le port d’exposition et le header d’authentification.
- Si le port est changé, il faut également penser à le changer dans le docker-compose.yaml.
- NGINX est ici utilisé comme proxy pour ajouter la sécurité (vérification du header et gestion du certificat TLS)
Dans le répertoire nginx/ssl, créer deux fichiers fullchain.pem et privkey.pem.
Lancer le serveur Garmin MCP
Une fois que tout est prêt, on peut lancer l’ensemble. Par défaut, le container MCP expose le port tcp/8000 et le container nginx le port 8443. Changez le dans le Dockerfile ou le docker-compose si vous en voulez un autre. Dans un premier temps on peut le lancer en mode interactif pour voir les logs:
# Pour Podman
podman compose up
# Pour Docker
docker compose up
Voici ce qu’on devrait avoir comme retour, si tout est bien configuré et après la première construction du container, on devrait obtenir énormément de lignes mais surtout celles-ci:
[garmin-mcp-nakan] | [01/06/26 22:08:05] INFO Starting MCP server 'Garmin Connect server.py:2582
[garmin-mcp-nakan] | v1.0' with transport 'http' on
[garmin-mcp-nakan] | http://0.0.0.0:8000/mcp
[garmin-mcp-nakan] | INFO: Started server process [1]
[garmin-mcp-nakan] | INFO: Waiting for application startup.
[garmin-mcp-nakan] | INFO: Application startup complete.
[garmin-mcp-nakan] | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Si c’est le cas, alors c’est bon signe, et si le port réseau est bien forwardé, le MPC est accessible depuis Internet. Il est sécurisé de manière minimale: un header d’authentification est exigé pour accéder à son contenu.
Configurer le MCP serveur chez Mistral AI
Les moteurs d’IA se mettent progressivement à supporter des serveurs MCP. Pour ChatGPT, il faut avoir un compte payant, et passer en mode développeur. Ce n’est pas forcément ce que l’on veut. J’ai donc testé mes serveurs MCP avec Mistral AI, qui permet de les utiliser normalement et avec un compte gratuit (il est toutefois nécessaire de créer un compte, même si on ne paie pas d’abonnement). On commence donc par se rendre sur https://chat.mistral.ai et on se créé un compte. Ensuite, dans le menu de gauche, on se rend dans la section « Intelligence », puis dans « Connecteurs », choisir « Connecteur MCP personnalisé »:
Ici on va renseigner les données de son MCP, soit le nom « GarminConnect » sans espace, l’adresse de serveur que l’on a utilisée pour le configurer et le header d’authentification:
Si tout fonctionne bien, il devrait s’ajouter à Mistral, on on devrait le voir apparaitre dans les connecteurs:
En cliquant sur le carré, on peut activer automatiquement l’accès à Mistral à toutes les sources de données, ou simplement les autoriser au fur et à mesure dans les discussions:
Tout est prêt, on peut maintenant interroger notre IA et elle aura accès immédiatement à toutes nos données de Garmin Connect. Par exemple, sur ce compte gratuit créé exclusivement pour tester mon MCP, sans jamais avoir donné la moindre info sportive à l’IA, je lui demande l’analyse de mon marathon de Berlin:
Comme je n’ai pas activé toutes les catégories de données, je dois d’abord autoriser l’IA à accéder à mes données, puis, elle peut les analyser:

L’analyse continue ensuite. Pour en savoir plus sur les possibilités offertes par les IA via les prompts, je détaille ceci dans la vidéo qui accompagne cet article!
Conclusion sur la mise en place de serveurs MCP
On le voit, moyennant quelques configurations et installations informatiques, on peut ensuite s’éviter les fastidieux exports manuels de données vers son IA, ou les screenshots de chacune de ses sessions sportives. Et à l’usage, c’est un confort réel, et cela permet également aux IA d’avoir de meilleures données, plus complètes et plus spécifiques.
Mais on le comprend, cette technologie ne sera réellement utilisable par le plus grand nombre que lorsque les plateformes comme Garmin Connect (ou les autres) mettront à disposition des MCP natifs et officiels, ce que certains fournisseurs de services commencent à faire sur Internet…
Les commentaires sont à votre disposition si vous avez des questions ou des retours sur cette thématique des MCP et de l’IA, et des idées pour de prochains articles ou vidéos!
Supporter ce site pour de futurs articles
Rédiger des tests et des articles sur la technologie dans le sport est une passion dévorante! Cela fait plus de 12 ans que je le fais en marge de mon activité professionnelle et sportive.Je ne compte pas mon temps, et je ne suis absolument pas rémunéré par les marques pour le faire.
En passant par l'un des liens ci-dessous pour réaliser votre prochaine commande en ligne, je touche une petite commission sur la transaction, vous soutiendrez le site, et cela ne vous côutera pas plus cher!
Vous pouvez également soutenir le site au travers de la plateforme "Buy Me a Coffee" ou d'autres moyens de soutenir le site sur cette page. Je vous en remercie beaucoup!
Pour tout savoir sur ma politique de publication et de publicité sur le site, rendez-vous ici!










