Carrefour Drive MCP
Carrefour Drive MCP — AIエージェントのための食料品ショッピング
Carrefour Drive(carrefour.fr)用MCPサーバー。 Claude、Cursor、その他あらゆる Model Context Protocolクライアントで、フランスの食料品カタログを検索し、カートを構築し、 Driveの受け取り時間枠や配送枠を選び、ポイント残高や過去のレシートを確認できます — すべてお客様自身のCarrefourアカウントで。
48のツール。 43個の実在するcarrefour.fr APIエンドポイントをJSONとして記述し、
汎用エグゼキュータで実行します。さらに5つのセッション管理ツールを追加。エンドポイントの追加は
JSONファイルを1つ置くだけ — コードは不要です。
"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その1つのコマンドで、stdio上で動作するサーバーをフェッチしてビルドし、起動します — 初回実行時には HTTPトランスポートとして使用するChromiumもダウンロードされます。ほとんどの場合、 コマンドを自分で入力する必要はありません。MCPクライアントの設定に記載しておけば (次のセクション)、クライアントが代わりに実行してくれます。
一度グローバルにインストールしたい場合は?
npm install -g github:maximeallanic/CarrefourDriveMCP
carrefour-drive-mcpセッション、ブラウザプロファイル、ログは~/.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クライアント
stdioでMCPを話せるクライアントなら、同じ2つのフィールドで動作します:
{
"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ループの完了を検出し、 メモリからセッションクッキーを取得して、ウィンドウを閉じます。
以降、セッションは自動的に更新されます。サーバーは認証が必要な呼び出しの前にSSOの authorize → callbackリダイレクトを再生し、さらに30分ごとにキープアライブを実行します。 SSOクッキー自体が期限切れになった場合(最大24時間、またはアイドル60分)にのみ、 再度ログインが必要です — ツールがその旨を明示的に通知します。
セッション状態はいつでもcarrefour_session_statusで確認できます(verify: trueで
実際の呼び出しを行います)。
セッションツール | 機能 |
| サインイン用ウィンドウを開く(キャプチャ + OTP) |
| 保存済みクッキー、ブラウザプロファイル、SSO残り時間を表示 |
| 更新を強制する(通常は不要 — 自動更新されます) |
| クッキーを手動でインポート(ヘッダー、JSONマップ、JSON配列のいずれか) |
| ローカルセッションを消去 |
carrefour_set_cookiesでは、JSON配列形式のみがクッキーのdomainを保持できます —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は実際の支払いを実行します。4つのパラメータが 説明では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 の マネージドチャレンジ の背後にあり、クライアントをフィンガープリントします。同じ日に1つのIPから測定した結果:
クライアント |
|
|
|
|
|
Chrome |
|
ヘッダーをいくら調整しても変わりません。唯一有効なトランスポートはブラウザです。そしてリクエストはページから発行される必要があります — Playwright の APIRequestContext は Node の HTTP スタックを使用するため、fetch と同様にブロックされます。
そこで、サーバーは永続的な Chromium を保持し、すべての API 呼び出しをターゲットオリジンに駐車したページ内の fetch として実行します(オリジンごとに1ページ、CORS のため)。これはウィンドウレスで実行されますが、標準のヘッドレスモードではありません:
起動モード | 結果 |
|
|
|
|
|
|
最後の行が実際に出荷されるものです。
認証の仕組み
2つの独立した Cookie システム:
ドメイン | 役割 | 有効期間 |
| ForgeRock SSO、Cookie | 最大24時間、アイドル60分で失効 |
| ストアセッション( | 短命、更新可能 |
ログインは2つの制約があるため対話式です。フォームは Cloudflare Turnstile キャプチャの背後にあり、CDP 駆動のブラウザでは検証を拒否します。また、c4iamsecuretk は セッション Cookie であり、Chromium がディスクに書き込むことはありません。そこで、ウィンドウはデバッグポートを開いた通常の Chromium ですが、ログインが完了するまで何もアタッチされません。サーバーは /json/list 上のプレーン HTTP でタブをポーリングします(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/):
headers、query、body内の{"$param": "name"}ノードを再帰的に置換し、元の型(数値、ブール値、配列)を保持します;引数のないプレースホルダーを削除するため、オプションパラメータはリクエストから
nullとして送信される代わりに消えます;URL セグメント
{basket_service_type}、{store_id}などをエンコードして埋め込み、必須セグメントが欠けている場合は明確なメッセージで失敗します;配列を繰り返しクエリキーとしてシリアライズします(
codes[]=14&codes[]=15);content_typeに応じてボディをエンコードします: JSON、x-www-form-urlencoded、またはmultipart/form-data(境界はfetchに任せます);ジッター付きのスライディングレート制限とブラウザヘッダーを適用します。
エンドポイントの追加 = tools/ に新しい JSON ファイルを置くだけです。コードを書く必要はありません。
設定
.env.example を参照してください。主な変数:
変数 | デフォルト | 役割 |
| — | セッション Cookie(ヘッダー、JSON マップ、または JSON 配列) |
| — | JSON Cookie エクスポートへのパス |
|
| 以下に書き込まれるすべてのルート |
|
| 永続化された Cookie ジャー |
|
| 永続的な Chromium プロファイル |
|
| SSO キープアライブ期間; |
|
| リフレッシュに使用する OAuth2 クライアント |
|
| BFF コールバック |
|
| 要求されるスコープ |
|
| 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 セグメント、クエリ文字列内の配列、3つのボディエンコーディング、Cookie ジャーの処理をカバーしています。スモークテストは実際にサーバーを起動し、JSON-RPC ハンドシェイクを実行してツールを一覧表示します。
carrefour.fr へのネットワーク呼び出しは自動テストされません — 実際のアカウントと有効な Cookie が必要です。
FAQ
API キーは必要ですか? いいえ。Carrefour には公開 API がありません。このサーバーは、ウェブサイトが使用するのと同じプライベートエンドポイントを、あなた自身のセッションで駆動します。
フランス国外でも動作しますか? カタログと店舗はフランス向けです(carrefour.fr)。Cloudflare は一部の IP からより厳格に動作する場合があります。
パスワードは保存されますか? いいえ。ブラウザウィンドウに入力するだけです。永続化されるのは Cookie のみで、~/.carrefour-drive-mcp/sessions/cookies.json に 0600 パーミッションで保存されます。このリポジトリには認証情報は一切含まれず、data/ と .env は gitignore されています。
実際の注文を発行できますか? はい — submit_checkout_payment は実際の支払いを請求します。そのように扱ってください。
エンドポイントを追加できますか? tools/ に JSON ファイルを置いてください。エグゼキューターの仕組み を参照してください。
サポートされているクライアントは? stdio 経由で MCP を話すものなら何でも: Claude Code、Claude Desktop、Cursor、Windsurf、VS Code / Copilot、Zed、Continue、MCP SDK を使用したカスタムエージェント。
免責事項
非公式プロジェクトであり、Carrefour とは提携、承認、支援の関係はありません。個人利用および教育目的で、ご自身のアカウントで使用してください。Carrefour の利用規約を尊重し、それに応じてレート制限を守ってください。
ライセンス
MIT © Maxime Allanic
キーワード: Carrefour MCP server · Carrefour Drive API · Model Context Protocol 食料品 · Claude Desktop MCP · Claude Code MCP server · Cursor MCP · フランスの食料品の買い物AIエージェント · オンラインショッピング · drive · 買い物リスト · 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