Carrefour Drive MCP
MCP-сервер Carrefour Drive — покупка продуктов для вашего ИИ-агента
MCP-сервер для Carrefour Drive (carrefour.fr). Позвольте Claude, Cursor или любому клиенту Model Context Protocol искать товары во французском каталоге, собирать корзину, выбирать слот самовывоза Drive или доставки, просматривать бонусные баллы и прошлые чеки — на вашем собственном аккаунте Carrefour.
48 инструментов. 43 реальных API-эндпоинта carrefour.fr, описанных в JSON и выполняемых
универсальным исполнителем, плюс 5 инструментов управления сессией. Добавить эндпоинт —
значит добавить JSON-файл, без единой строки кода.
"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_slotАвтономный — без бинарника
spectral, без внешнего шлюза, без API-ключа. Клонируйте, собирайте, запускайте.Устойчив к Cloudflare — каждый запрос выполняется из реальной страницы Chromium, потому что ничто другое не получает
200.Остаётся в системе — вы входите один раз в окне браузера; сервер сам продлевает сессию через цикл OAuth2 SSO.
Содержание
Related MCP server: mcp-leclerc-drive
Установка
Клонировать ничего не нужно. Единственное требование — Node.js 20+ (нативные
fetch, FormData, node:test).
npx -y github:maximeallanic/CarrefourDriveMCPЭта единственная команда загружает, собирает и запускает сервер на stdio — при первом запуске также скачивается Chromium, используемый в качестве HTTP-транспорта. В большинстве случаев вам не придётся вводить её вручную: вы помещаете её в конфиг вашего MCP-клиента (следующий раздел), и клиент запускает её за вас.
Предпочитаете установить один раз, глобально?
npm install -g github:maximeallanic/CarrefourDriveMCP
carrefour-drive-mcpВаша сессия, профиль браузера и журналы хранятся в ~/.carrefour-drive-mcp
($XDG_DATA_HOME/carrefour-drive-mcp, если задано), поэтому обновления не разлогинивают вас.
Переопределяется через CARREFOUR_DATA_DIR.
git clone https://github.com/maximeallanic/CarrefourDriveMCP.git
cd CarrefourDriveMCP
npm install # builds, and downloads the Chromium transport
node dist/index.jsКопия из исходников хранит свои данные в собственной директории data/ репозитория.
Подключение к агенту
Claude Code
claude mcp add carrefour-drive -- npx -y github:maximeallanic/CarrefourDriveMCPЗатем в любой сессии:
> Log me in to Carrefour (runs carrefour_browser_login)
> Add 2 L of semi-skimmed milk to my Drive cartClaude Desktop
Отредактируйте 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"]
}
}
}Перезапустите Claude Desktop; инструменты Carrefour появятся в меню инструментов.
В Windows используйте
"command": "cmd"с"args": ["/c", "npx", "-y", "github:maximeallanic/CarrefourDriveMCP"].
Cursor, Windsurf, Zed, VS Code и другие MCP-клиенты
Любой клиент, поддерживающий MCP через stdio, принимает те же два поля:
{
"command": "npx",
"args": ["-y", "github:maximeallanic/CarrefourDriveMCP"]
}Cursor —
~/.cursor/mcp.json(или.cursor/mcp.jsonв проекте)Windsurf —
~/.codeium/windsurf/mcp_config.jsonVS Code / Copilot —
.vscode/mcp.json, в разделе"servers"Zed —
settings.json, в разделе"context_servers"
Установлено глобально или клонировано? Вместо этого подставьте
{"command": "carrefour-drive-mcp"} или
{"command": "node", "args": ["/absolute/path/to/dist/index.js"]}.
Уже есть куки? Передайте их в блоке "env" вместо входа в систему:
{"CARREFOUR_COOKIES": "…cookie header…"}.
Вход в систему
carrefour.fr выполняет вход с помощью куки, за Cloudflare Turnstile-капчей и OTP-кодом. Поэтому вход интерактивный, один раз:
Попросите агента выполнить
carrefour_browser_login.Откроется окно браузера со страницей входа Carrefour. Введите адрес электронной почты, пароль и OTP-код самостоятельно.
Не закрывайте окно — сервер обнаружит завершение цикла OAuth, заберёт куки сессии из памяти и закроет его за вас.
После этого сессия продлевается сама, незаметно: сервер воспроизводит
редирект authorize → callback SSO перед аутентифицированными вызовами, после 401/403,
и каждые 30 минут в качестве keep-alive. Повторный вход нужен только когда истекает сама
SSO-кука (максимум 24 часа, или 60 минут простоя) — инструменты сообщают об этом явно.
Проверьте состояние в любой момент с помощью carrefour_session_status (verify: true выполняет
реальный запрос).
Инструмент сессии | Что делает |
| открывает окно для входа (капча + OTP) |
| сохранённые куки, профиль браузера, оставшееся время SSO |
| принудительное продление (редко нужно — это автоматически) |
| импорт куки вручную (заголовок, JSON-объект или JSON-массив) |
| удаление локальной сессии |
Для
carrefour_set_cookiesтолько JSON-массив несёт домен куки — только он может предоставитьc4iamsecuretk, без которого автоматическое продление невозможно.
Хранилище куки находится в <data dir>/sessions/cookies.json (0600) и
повторно внедряется в профиль браузера при каждом запуске.
Справочник инструментов
Поиск и каталог (аккаунт не требуется)
Инструмент | Эндпоинт | Обязательные параметры |
| 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 |
|
Корзина и оформление заказа
Инструмент | Эндпоинт | Обязательные параметры |
| 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_paymentсписывает реальный платёж. Четыре его параметра были перехвачены в строке запроса, хотя их описание предполагает HTTP-заголовки — сверьтесь с реальным трафиком перед использованием в продакшене.
Аккаунт, заказы и лояльность
Инструмент | Эндпоинт | Обязательные параметры |
| 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 |
|
Списки покупок
Инструмент | Эндпоинт | Обязательные параметры |
| GET /api/shopping-lists | — |
| GET /api/shopping-lists-id/{list_id} |
|
| POST /api/shopping-lists/memo-list |
|
Зачем нужен настоящий браузер
carrefour.fr находится за Cloudflare managed challenge, который снимает отпечаток клиента. Замеры с одного IP-адреса в один и тот же день:
Клиент |
|
|
|
|
|
Chrome |
|
Никакие подстройки заголовков этого не меняют: единственный рабочий транспорт — браузер. И запросы должны отправляться со страницы — APIRequestContext из Playwright использует HTTP-стек Node.js и блокируется так же, как fetch.
Поэтому сервер держит постоянный Chromium и выполняет каждый API-вызов как fetch внутри страницы, размещённой на целевом origin (по одной странице на origin из-за CORS). Он работает без окна, но не в стандартном headless-режиме:
Режим запуска | Результат |
|
|
|
|
|
|
В сборку идёт именно последняя строка.
Как работает аутентификация
Две отдельные cookie-системы:
Домен | Роль | Время жизни |
| ForgeRock SSO, cookie | макс. 24 ч, истекает после 60 мин простоя |
| сессия магазина ( | короткая, обновляемая |
Вход в систему интерактивен из-за двух ограничений: форма защищена капчей Cloudflare Turnstile, которая отказывается проходить проверку в браузере под управлением CDP, а c4iamsecuretk — это сессионный cookie, который Chromium никогда не записывает на диск. Поэтому окно — это обычный Chromium с открытым debug-портом, но ничего не подключено, пока вход не завершён; сервер опрашивает вкладку по обычному HTTP на /json/list (ни один CDP-домен не включён, поэтому следов автоматизации нет), подключается в тот момент, когда OAuth-цикл возвращается на сайт магазина, и читает cookie из памяти.
Последующее обновление — это обычная навигация: Chromium сам следует за редиректами и устанавливает cookie:
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)Как работает исполнитель
tools/*.json ──► loader (validation) ──► params (JSON Schema ➜ zod) ──► MCP tools/list
└─► resolve ($param ➜ URL/query/headers/body)
└─► http.service (cookies + rate limit + fetch)Каждый файл в tools/ самодокументируемый:
{
"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
}Движок (src/spec/):
рекурсивно подставляет узлы
{"$param": "name"}вheaders,queryиbody, сохраняя исходный тип (число, логическое значение, массив);отбрасывает плейсхолдеры без аргумента, так что необязательные параметры исчезают из запроса, а не отправляются как
null;заполняет сегменты URL
{basket_service_type},{store_id}, … с кодированием, выдавая понятное сообщение об ошибке, если обязательный сегмент отсутствует;сериализует массивы как повторяющиеся ключи запроса (
codes[]=14&codes[]=15);кодирует тело согласно
content_type: JSON,x-www-form-urlencodedилиmultipart/form-data(boundary оставляется наfetch);применяет скользящее ограничение частоты с джиттером, а также заголовки браузера.
Добавление эндпоинта = добавление нового JSON-файла в tools/. Писать код не нужно.
Конфигурация
Смотрите .env.example. Основные переменные:
Переменная | По умолчанию | Роль |
| — | сессионные cookie (заголовок, JSON-объект или JSON-массив) |
| — | путь к JSON-экспорту cookie |
|
| корень для всего, что записывается ниже |
|
| постоянное хранилище cookie (cookie jar) |
|
| постоянный профиль Chromium |
|
| период keep-alive для SSO; |
|
| OAuth2-клиент, используемый для обновления |
|
| BFF-колбэк |
|
| запрашиваемые области (scopes) |
|
| каталог JSON-определений инструментов |
|
| усечение больших ответов |
|
| HTTP-таймаут |
|
| окно ограничения частоты |
|
| джиттер между запросами |
|
| логи winston (файлы + stderr, никогда stdout) |
Проверка установки
Из рабочей копии исходников:
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 threeТесты покрывают подстановку $param, сегменты URL, массивы в строке запроса, три кодировки тела и работу с cookie-jar. Смоук-тест реально запускает сервер, выполняет JSON-RPC handshake и выводит список инструментов.
Сетевые вызовы к carrefour.fr не тестируются автоматически — для них нужен реальный аккаунт и валидные cookie.
Часто задаваемые вопросы
Нужен ли мне API-ключ? Нет. У Carrefour нет публичного API; этот сервер использует те же приватные эндпоинты, что и веб-сайт, с вашей собственной сессией.
Работает ли это за пределами Франции? Каталог и магазины французские (carrefour.fr). Cloudflare может быть строже с некоторых IP-адресов.
Сохраняется ли мой пароль? Нет. Вы вводите его в окне браузера; сохраняются только cookie, в ~/.carrefour-drive-mcp/sessions/cookies.json с правами 0600. Никакие учётные данные в этом репозитории не хранятся, а data/ и .env игнорируются git.
Может ли он разместить настоящий заказ? Да — submit_checkout_payment списывает реальный платёж. Относитесь к этому соответственно.
Могу ли я добавлять эндпоинты? Положите JSON-файл в tools/. Смотрите Как работает исполнитель.
Какие клиенты поддерживаются? Всё, что говорит по MCP через stdio: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code / Copilot, Zed, Continue, пользовательские агенты на MCP SDK.
Отказ от ответственности
Неофициальный проект, не связан с Carrefour, не одобрен и не поддерживается Carrefour. Для личного и образовательного использования на вашем собственном аккаунте. Соблюдайте условия обслуживания Carrefour и самостоятельно ограничивайте частоту запросов.
Лицензия
MIT © Maxime Allanic
Ключевые слова: Carrefour MCP server · Carrefour Drive API · Model Context Protocol продукты · Claude Desktop MCP · Claude Code MCP server · Cursor MCP · французский ИИ-агент для покупки продуктов · courses en ligne · drive · liste de courses · fidélité Carrefour · автоматизация корзины покупок MCP.
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