carrefour-drive-mcp
Carrefour Drive MCP
Serveur MCP et CLI non officiels pour piloter Carrefour Drive sur carrefour.fr dans un profil web Chrome persistant appartenant à l’utilisateur.
Il ne se connecte à aucun téléphone et n’utilise aucune application mobile. Le navigateur web local conserve le magasin, la session et le panier ; le client MCP ne retourne que les champs utiles.
Capacités
doctor_carrefour: vérifie le navigateur web local et le magasin configuré ;session_status_carrefour: vérifie le Drive et l’état de connexion visible ;connect_carrefour: ouvre un wizard local vers la connexion ou la création de compte sur le site officiel ;search_carrefour_products: recherche le catalogue web actuel du Drive ;get_carrefour_product: relit prix, disponibilité, EAN et ingrédients ;get_carrefour_cart: relit le panier et calcule son empreinte ;add_to_carrefour_cart: prévisualise, confirme, ajoute une unité sur le web et réconcilie le panier.
Le MCP ne choisit aucun créneau, ne valide aucune commande et ne paie jamais. Une page ou un état non reconnu provoque une erreur explicite, sans donnée fictive ni bascule vers un autre backend.
Le panier appartient à un magasin, pas seulement au compte
Relevé le 2026-08-04 en conditions réelles. Le panier Carrefour est porté par un
couple magasin plus mode de retrait, exposé par facilityServiceId et
pickupMode :
facilityServiceId : <magasin>-<service>-<etablissement>
pickupMode : PICKING_DRIVESur un même compte et une même session, un navigateur réglé sur un magasin et une application réglée sur un autre ne partagent pas le même panier. Un ajout effectué sur le mauvais couple réussit côté serveur et reste invisible pour l'utilisateur, sans qu'aucune erreur ne soit levée.
Le connecteur refuse donc toute écriture si le magasin observé ne correspond pas
à CARREFOUR_STORE_ID, avec le code cart_store_mismatch. Alignez ce réglage
sur le magasin que vous consultez réellement.
Prérequis
Node.js 22.12 ou supérieur ;
Google Chrome, que le connecteur démarre lui-même sur un profil dédié ;
un compte Carrefour autorisé par son propriétaire ;
un Drive sélectionné sur
carrefour.frdans ce profil.
Rien d’autre à installer. Le connecteur ouvre Chrome avec un profil qui lui est propre, séparé de votre navigateur quotidien : il n’y voit ni vos autres onglets ni vos autres comptes.
La connexion à Carrefour se fait une seule fois, à la main, dans cette fenêtre. Elle ne peut pas être automatisée : le site refuse sa page de connexion à tout navigateur piloté. La session reste ensuite dans le profil.
Installation
git clone https://github.com/ncleton-petitmaker/carrefour-drive-mcp.git
cd carrefour-drive-mcp
npm ci
npm run build
cp .env.example .envRenseignez localement .env. Aucun secret n'y figure : le connecteur ne manipule ni identifiant, ni mot de passe, ni jeton de compte.
Première utilisation
node dist/cli.js doctor
node dist/cli.js connect
node dist/cli.js sessionLe wizard loopback ne possède aucun champ d’identifiant. Il ouvre la page officielle de connexion ou de création dans la fenêtre Chrome dédiée ; le mot de passe, le code et le CAPTCHA éventuel restent exclusivement dans cette fenêtre.
Sélectionnez ensuite votre Drive sur Carrefour si nécessaire, puis utilisez :
node dist/cli.js search --query tofu --limit 5
node dist/cli.js product --product-ref 'URL-retournée-par-search'
node dist/cli.js cart
node dist/cli.js add --product-ref 'URL-retournée-par-search'La première commande add prévisualise l’opération et retourne l’empreinte du panier. Après vérification, relancez-la avec --confirm-cart-fingerprint <empreinte>. Dans MCP, le premier appel retourne un jeton à usage unique valable cinq minutes ; le second reprend exactement la référence, la quantité et le jeton. Toute modification intermédiaire invalide la confirmation.
Configuration MCP
{
"mcpServers": {
"carrefour-drive": {
"command": "node",
"args": ["/chemin/absolu/carrefour-drive-mcp/dist/mcp/server.js"],
"env": {
"CARREFOUR_CHROME_DEBUG_PORT": "9222",
"CARREFOUR_STORE_ID": "<votre magasin>",
"CARREFOUR_STORE_NAME": "Mon Carrefour Drive"
}
}
}
}Le magasin doit être celui que vous consultez réellement : le panier appartient à un couple magasin plus mode de retrait, et le connecteur refuse d'écrire ailleurs.
Validation
npm run verifyCette commande exécute le typage, les tests client et MCP avec le SDK officiel, l’audit de confidentialité et l’inspection du paquet npm.
Statut juridique
Projet non officiel, sans affiliation ni approbation de Carrefour. N’utilisez que votre propre compte, votre propre session et votre propre panier, dans le respect des conditions du fournisseur.