Carrefour Drive MCP
Carrefour Drive MCP — Lebensmitteleinkauf für Ihren KI-Agenten
MCP-Server für Carrefour Drive (carrefour.fr). Lassen Sie Claude, Cursor oder einen beliebigen anderen Model Context Protocol-Client den französischen Lebensmittelkatalog durchsuchen, einen Warenkorb aufbauen, einen Drive-Abhol- oder Lieferslot wählen, Treuepunkte und frühere Belege lesen – auf Ihrem eigenen Carrefour-Konto.
48 Tools. 43 echte carrefour.fr-API-Endpunkte, die als JSON beschrieben und von einem
generischen Ausführer ausgeführt werden, plus 5 Sitzungsverwaltungstools. Einen Endpunkt hinzuzufügen bedeutet,
eine JSON-Datei einzufügen – ganz ohne Code.
"What did I buy last month?" → get_loyalty_order_receipts
"Refill my usual weekly groceries." → get_frequent_purchases + add_item_to_cart
"Cheapest organic pasta under 2 €?" → search_products
"Book the Saturday morning Drive slot." → get_delivery_timeslots + select_cart_delivery_slotEigenständig – kein
spectral-Binär, kein externes Gateway, kein API-Schlüssel. Klonen, bauen, ausführen.Cloudflare-fest – jeder Aufruf wird von einer echten Chromium-Seite ausgesendet, denn nichts anderes bekommt eine
200.Bleibt angemeldet – Sie melden sich einmal in einem Browserfenster an; der Server erneuert die Sitzung von selbst durch die OAuth2-SSO-Schleife.
Inhaltsverzeichnis
Related MCP server: mcp-leclerc-drive
Installation
Nichts zu klonen. Node.js 20+ ist die einzige Voraussetzung (native fetch,
FormData, node:test).
npx -y github:maximeallanic/CarrefourDriveMCPDieser einzelne Befehl holt, baut und startet den Server auf stdio – beim ersten Ausführen wird auch das Chromium heruntergeladen, das er als HTTP-Transport verwendet. Meist müssen Sie den Befehl nie selbst tippen: Sie fügen ihn in die Konfiguration Ihres MCP-Clients ein (nächster Abschnitt) und der Client führt ihn für Sie aus.
Bevorzugt einmalig global installiert?
npm install -g github:maximeallanic/CarrefourDriveMCP
carrefour-drive-mcpIhre Sitzung, Ihr Browserprofil und Ihre Protokolle liegen in ~/.carrefour-drive-mcp
($XDG_DATA_HOME/carrefour-drive-mcp, wenn gesetzt), sodass Upgrades Sie nie abmelden.
Überschreiben Sie dies mit CARREFOUR_DATA_DIR.
git clone https://github.com/maximeallanic/CarrefourDriveMCP.git
cd CarrefourDriveMCP
npm install # builds, and downloads the Chromium transport
node dist/index.jsEin Quelltext-Checkout behält seine Daten im eigenen data/-Verzeichnis des Repositorys.
Verbinden Sie es mit Ihrem Agenten
Claude Code
claude mcp add carrefour-drive -- npx -y github:maximeallanic/CarrefourDriveMCPDann, in jeder Sitzung:
> Log me in to Carrefour (runs carrefour_browser_login)
> Add 2 L of semi-skimmed milk to my Drive cartClaude Desktop
Bearbeiten Sie claude_desktop_config.json:
macOS –
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows –
%APPDATA%\Claude\claude_desktop_config.jsonLinux –
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"carrefour-drive": {
"command": "npx",
"args": ["-y", "github:maximeallanic/CarrefourDriveMCP"]
}
}
}Starten Sie Claude Desktop neu; die Carrefour-Tools erscheinen im Tool-Menü.
Unter Windows verwenden Sie
"command": "cmd"mit"args": ["/c", "npx", "-y", "github:maximeallanic/CarrefourDriveMCP"].
Cursor, Windsurf, Zed, VS Code und andere MCP-Clients
Jeder Client, der MCP über stdio spricht, akzeptiert dieselben zwei Felder:
{
"command": "npx",
"args": ["-y", "github:maximeallanic/CarrefourDriveMCP"]
}Cursor: –
~/.cursor/mcp.json(oder.cursor/mcp.jsonin einem Projekt)Windsurf: –
~/.codeium/windsurf/mcp_config.jsonVS Code / Copilot: –
.vscode/mcp.json, unter"servers"Zed: –
settings.json, unter"context_servers"
Global installiert oder geklont? Stattdessen tauschen Sie
{"command": "carrefour-drive-mcp"} oder
{"command": "node", "args": ["/absoluter/pfad/zu/dist/index.js"]} ein.
Haben Sie bereits Cookies? Übergeben Sie sie in einem "env"-Block anstelle der Anmeldung:
{"CARREFOUR_COOKIES": "…Cookie-Header…"}.
Anmelden
carrefour.fr meldet Sie mit Cookies an, hinter einem Cloudflare-Turnstile-CAPTCHA und einem OTP. Die Anmeldung ist also einmalig interaktiv:
Bitten Sie Ihren Agenten,
carrefour_browser_loginauszuführen.Ein Browserfenster öffnet sich auf der Carrefour-Anmeldeseite. Geben Sie selbst Ihre E-Mail-Adresse, Ihr PasswortTel. und den OTP-Code ein.
Schließen Sie das Fenster nicht – der Server erkennt das Ende der OAuth-Schleife, übernimmt die Sitzungs-Cookies aus dem Speicher und schließt es dann von selbst.
Ab dann erneuert sich die Sitzung still und leise: Den Server wiederspielt die SSO-Autorisierung
→ Callback-Umleitung vor authentifizierten Aufrufen, nach einem 401/403
und alle 30 Minuten als Keep-Alive. Sie melden sich nur wieder an, wenn das SSO-Cookie
selbst abläuft (max. 24 Std., oder 60 Min. ohne Aktivität) – die Tools sagen dies explizit.
Überprüfen Sie den Status jederzeit mit carrefour_session_status (verify: true macht
einen echten Aufruf).
Sitzungstool | Was es tut |
| Fenster zum Anmelden öffnen (CAPTCHA + OTP) |
| Gespeicherte Cookies, Browserprofil, verbleibende SSO-Zeit |
| Erneuerung erzwingen (selten nötig – automatisch) |
| Cookies manuell importieren (Header, JSON-Map oder JSON-Array) |
| Lokale Sitzung löschen |
Für
carrefour_set_cookiesträgt nur das JSON-Array-Format die Cookie-Domäne, – es ist das einzige, dasc4iamsecuretkliefern kann, ohne das eine automatische Verlängerung unmöglich ist.
Der Cookie-Topf lebt in <data dir>/sessions/cookies.json (0600) und wird
bei jedem Start in das Browserprofil neu injiziert.
Tool-Referenz
Suche & Katalog (kein Konto nötig)
Tool | Endpunkt | Erforderliche Parameter |
| GET /s |
|
| GET /autocomplete |
|
| POST /products |
|
| GET /products/query/{query_id} |
|
| GET /product/{ean}/reviews |
|
| GET /navigation | – |
| POST /api/marketing/{placement} |
|
| GET /donation | – |
| POST ocb.carrefour.fr/preprompts |
|
| GET /api/eligibility/drive |
|
Warenkorb & Checkout
Tool | Adresse | Erforderliche Parameter |
| GET /api/cart | — |
| PATCH /api/cart |
|
| PATCH /api/cart/items |
|
| POST /api/cart/promo_code |
|
| GET /api/cart/simulate |
|
| GET /api/timeslots |
|
| PUT /api/cart/slot |
|
| POST /api/checkout/{basket_service_type}/validate/slot |
|
| POST /api/checkout/{basket_service_type}/validate/summary |
|
| GET /api/checkout/recommendations/{facility_id}/{basket_service} |
|
| POST /api/checkout/payment |
|
⚠️
submit_checkout_paymentverlangt eine echte Zahlung. Vier seiner Parameter wurden als Anfragezeichen-Zeichenzeichenkette erfasst, während ihre Beschreibung über HTTP-Header vermuten lässt – überprüfen Sie dies gegen eine echte Ablaufspur, bevor Sie es in Produktion verwenden.
Konto, Bestellungen & Treueprogramm
Werkzeug | Endpunkt | Erforderliche Parameter |
| GET /api/user/orders | — |
| GET /api/user/orders/last | — |
| GET /mon-compte/achats-frequents | — |
| GET /api/user/secured/loyalty/balance | — |
| GET /api/user/secured/loyalty/my-cards | — |
| GET /api/user/loyalty/coupons-dashboard | — |
| GET /api/user/loyalty/coupon-collection | — |
| GET /api/user/secured/loyalty/orders/receipts |
|
| GET /api/user/secured/loyalty/orders/receipt/{gln}/{date_key}/{receipt_number} |
|
| GET /api/advantage-code | — |
| GET /api/user/products/vignettes-products | — |
| GET /api/user/loyalty/olympic-games/prime | — |
| GET /api/user/my-account/kpis |
|
| GET /api/user/my-account/consents | — |
| GET /api/favoritestore | — |
| POST /api/information-insert/stores/{store_id} |
|
| GET /api/homepage/returningBanner | — |
| GET /api/user/recommendation/cdp | — |
| GET /api/recommendations |
|
Einkaufslisten
Werkzeug | Endpunkt | Erwartete Parameter |
| GET /api/shopping-lists | — |
| GET /api/shopping-lists-id/{list_id} |
|
| POST /api/shopping-lists/memo-list |
|
Warum ein echter Browser
carrefour.fr liegt hinter einer Cloudflare managed challenge, die den Client per Fingerprint identifiziert. Gemessen von einer IP aus, am selben Tag:
Client |
|
|
|
|
|
Chrome |
|
Kein noch so großes Herumtüfteln an Headern ändert das: Der einzige gangbare Transport ist ein Browser. Und die Anfragen müssen von einer Seite aus erfolgen – Playwrights APIRequestContext verwendet einen Node-HTTP-Stack und wird wie fetch blockiert.
Der Server hält also ein persistentes Chromium und führt jeden API-Aufruf als fetch innerhalb einer Seite aus, die auf der Ziel-Origin geparkt ist (eine Seite pro Origin, wegen CORS). Er läuft fensterlos, aber nicht im Standard-Headless-Modus:
Startmodus | Ergebnis |
|
|
|
|
|
|
Die letzte Zeile ist das, was ausgeliefert wird.
Wie die Authentifizierung funktioniert
Zwei getrennte Cookie-Systeme:
Domain | Rolle | Lebensdauer |
| ForgeRock SSO, Cookie | max. 24 h, stirbt nach 60 min Inaktivität |
| Shop-Sitzung ( | kurz, erneuerbar |
Der Login ist interaktiv, weil zwei Einschränkungen bestehen: Das Formular liegt hinter einem Cloudflare Turnstile-Captcha, das sich in einem CDP-gesteuerten Browser nicht validieren lässt, und c4iamsecuretk ist ein Session-Cookie, das Chromium nie auf die Festplatte schreibt. Das Fenster ist daher ein normales Chromium mit offenem Debug-Port, aber nichts ist angehängt, bis der Login abgeschlossen ist; der Server pollt die Tab über einfaches HTTP auf /json/list (keine CDP-Domain aktiviert, daher keine Automatisierungsspur), hängt sich an, sobald die OAuth-Schleife wieder auf dem Shop landet, und liest die Cookies aus dem Speicher.
Die Erneuerung danach ist eine einfache Navigation – Chromium folgt den Weiterleitungen und setzt die Cookies selbst:
GET moncompte.carrefour.fr/iam/oauth2/CarrefourConnect/authorize?client_id=…&redirect_uri=https://www.carrefour.fr/login/check
└─302─► www.carrefour.fr/login/check?code=… (the BFF exchanges the code)
└─302─► www.carrefour.fr/ (fresh session cookies)So funktioniert der Executor
tools/*.json ──► loader (validation) ──► params (JSON Schema ➜ zod) ──► MCP tools/list
└─► resolve ($param ➜ URL/query/headers/body)
└─► http.service (cookies + rate limit + fetch)Jede Datei in tools/ ist selbstbeschreibend:
{
"name": "add_item_to_cart",
"parameters": { "type": "object", "properties": { … }, "required": [ … ] },
"request": {
"method": "PATCH",
"url": "https://www.carrefour.fr/api/cart",
"headers": { … },
"query": {},
"body": { "items": [ { "ean": { "$param": "ean" }, … } ] },
"content_type": "application/json"
},
"requires_auth": true
}Die Engine (src/spec/):
ersetzt rekursiv
{"$param": "name"}-Knoten inheaders,queryundbody, wobei der ursprüngliche Typ (Zahl, Boolean, Array) erhalten bleibt;verwirft Platzhalter ohne Argument, sodass optionale Parameter aus der Anfrage verschwinden, statt als
nullgesendet zu werden;füllt URL-Segmente
{basket_service_type},{store_id}, … mit Kodierung und schlägt mit einer klaren Meldung fehl, wenn ein erforderliches Segment fehlt;serialisiert Arrays als wiederholte Query-Schlüssel (
codes[]=14&codes[]=15);kodiert den Body gemäß
content_type: JSON,x-www-form-urlencodedodermultipart/form-data(Boundary bleibtfetchüberlassen);wendet ein gleitendes Rate-Limit mit Jitter an, plus Browser-Header.
Einen Endpunkt hinzuzufügen = eine neue JSON-Datei in tools/ ablegen. Kein Code zu schreiben.
Konfiguration
Siehe .env.example. Hauptvariablen:
Variable | Standard | Rolle |
| — | Session-Cookies (Header, JSON-Map oder JSON-Array) |
| — | Pfad zu einem JSON-Cookie-Export |
|
| Wurzel für alles, was unten geschrieben wird |
|
| persistiertes Session-Cookie |
|
| persistentes Chromium-Profil |
|
| SSO-Keep-Alive-Zeitraum; |
|
| OAuth2-Client für die Aktualisierung |
|
| BFF-Callback |
|
| angeforderte Bereiche |
|
| Verzeichnis für JSON-Tool-Definitionen |
|
| Kürzung großer Antworten |
|
| HTTP-Timeout |
|
| Rate-Limit-Fenster |
|
| Jitter zwischen Anfragen |
|
| Winston-Logs (Dateien + stderr, nie stdout) |
Installation überprüfen
Aus einem Quellcode-Checkout:
npm run build # tsc
npm test # build + unit tests (node:test)
npm run smoke # build + real MCP stdio handshake + tools/list
npm run verify # all threeDie Tests decken die $param-Substitution, URL-Segmente, Arrays in Query-Strings, die drei Body-Kodierungen und die Cookie-Jar-Verwaltung ab. Der Smoke-Test startet tatsächlich den Server, führt den JSON-RPC-Handshake durch und listet die Tools auf.
Netzwerkaufrufe an carrefour.fr werden nicht automatisiert getestet – sie benötigen ein echtes Konto und gültige Cookies.
FAQ
Brauche ich einen API-Schlüssel? Nein. Carrefour hat keine öffentliche API; dieser Server nutzt dieselben privaten Endpunkte wie die Website, mit deiner eigenen Sitzung.
Funktioniert es außerhalb Frankreichs? Der Katalog und die Filialen sind französisch (carrefour.fr). Cloudflare kann von manchen IPs aus strenger sein.
Wird mein Passwort gespeichert? Nein. Du gibst es in einem Browserfenster ein; nur Cookies werden gespeichert, in ~/.carrefour-drive-mcp/sessions/cookies.json mit 0600-Berechtigungen. Keine Zugangsdaten liegen in diesem Repo, und data/ und .env sind gitignored.
Kann es eine echte Bestellung aufgeben? Ja – submit_checkout_payment belastet eine echte Zahlung. Behandle es entsprechend.
Kann ich Endpunkte hinzufügen? Lege eine JSON-Datei in tools/ ab. Siehe So funktioniert der Executor.
Welche Clients werden unterstützt? Alles, was MCP über stdio spricht: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code / Copilot, Zed, Continue, benutzerdefinierte Agenten, die das MCP SDK verwenden.
Haftungsausschluss
Inoffizielles Projekt, nicht mit Carrefour verbunden, von Carrefour unterstützt oder befürwortet. Für den persönlichen und pädagogischen Gebrauch auf deinem eigenen Konto. Respektiere die Nutzungsbedingungen von Carrefour und begrenze deine Anfragen entsprechend.
Lizenz
MIT © Maxime Allanic
Keywords: Carrefour MCP server · Carrefour Drive API · Model Context Protocol Lebensmittel · Claude Desktop MCP · Claude Code MCP server · Cursor MCP · Französischer KI-Agent für Lebensmitteleinkauf · courses en ligne · drive · liste de courses · fidélité Carrefour · MCP Warenkorb-Automatisierung.
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
- Alicense-qualityDmaintenanceMCP server that connects Carrefour Drive to Claude and other MCP clients, enabling product search with real prices, nutriscore, availability, and natural language cart management.MIT
- AlicenseAqualityBmaintenanceMCP server for E.Leclerc Drive that enables searching products, managing a cart, and preparing grocery orders natively through natural language.8697MIT
- Flicense-qualityCmaintenanceMCP server for grocery-related web automation using Playwright, enabling AI assistants to interact with grocery websites.
- Flicense-qualityDmaintenanceMCP server for Carrefour Drive that enables AI assistants to search products, manage carts, check delivery slots, and order groceries via automated browser interactions.2
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Shopping MCP for AI agents: search, compare, Amazon buy links. Auto-register.
Agent-native product catalog for AI shopping agents. 296M+ products, 28 countries.
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/maximeallanic/CarrefourDriveMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server