mon-marche-mcp
Enables an AI assistant to search the mon-marche.fr grocery catalog and build a basket, stopping at the cart without automating payment.
README
mon-marche-mcp
An MCP server that lets an AI assistant search the mon-marché catalog and build a grocery basket from a few instructions. It is a thin, pure-HTTP client over mon-marché's internal API (the Keplr commerce platform) and Constructor.io search — no browser automation.
It deliberately stops at the cart: there is no checkout or payment tool. You review the basket and pay yourself on the website.
Tools
| Tool | Purpose | Auth |
|---|---|---|
search_products |
Search the catalog (name, slug, price, bio/anti-gaspi) | none |
get_product |
Resolve a slug to its article id + SKU | none |
add_to_cart |
Set the quantity of one product (by slug) | sign-in |
add_many_to_cart |
Build a whole basket in one call | sign-in |
view_cart |
Show lines and total | sign-in |
remove_from_cart |
Remove a line by article id | sign-in |
clear_cart |
Empty the cart (does not delete it) | sign-in |
my_usual_products |
List most frequently ordered products | sign-in |
list_delivery_slots |
List bookable delivery slots for the saved address | sign-in |
set_delivery_slot |
Attach a slot — creates the cart | sign-in |
Order flow
A cart can only hold products once a delivery slot is attached. Authentication is automatic from the env credentials (it uses a bearer token and a session cookie). Follow this sequence:
- Find products —
my_usual_products(frequently ordered) and/orsearch_products. - Pick a slot —
list_delivery_slots, choose aslotId. - Create the cart —
set_delivery_slot(slotId). This creates the cart (or updates the slot on an existing one) and is required before adding products. Skipping it makesadd_to_cart/add_many_to_cartfail with404 "Le panier est introuvable". - Add products —
add_to_cart/add_many_to_cart(by slug). - Confirm —
view_cart.
Checkout and payment are intentionally not automated — review and pay on the website.
Setup
npm install
cp .env.example .env # fill in MM_EMAIL / MM_PASSWORD
npm run build
The account in .env must already have a delivery zone/address configured on the website —
the cart is tied to that.
Run
npm run dev # tsx, reads .env
# or
npm run build && npm start
Register with an MCP client
{
"mcpServers": {
"mon-marche": {
"command": "node",
"args": ["/absolute/path/to/mon-marche-mcp/dist/server.js"],
"env": {
"MM_EMAIL": "you@example.com",
"MM_PASSWORD": "your-password"
}
}
}
}
Configuration
| Var | Required | Default |
|---|---|---|
MM_EMAIL |
for cart ops | — |
MM_PASSWORD |
for cart ops | — |
MM_BASE_URL |
no | https://www.mon-marche.fr |
MM_CONSTRUCTOR_KEY |
no | public key from the site bundle |
Notes & caveats
- No payment. By design. The assistant fills the cart; you check out manually.
- Unofficial API. mon-marché has no public API; this calls the same endpoints the website uses. It may change without notice — keep usage personal, single-account, and low-rate, and review your basket before paying. This may run against the site's terms of service; use at your own discretion.
- Cart shape. The authenticated cart is normalized in
src/client.ts(normalizeCart). The upstream API uses cents; tools expose euros. Line quantity comes fromquotation.count, unit price fromitemPrice, cart total fromprice.quotation.preauthorization(includes shipping + prep fee). clear_cartonly empties. There is no endpoint to fully delete a cart —DELETE /api/cartclears the contents but the cart shell and its delivery slot persist for the period. So theGET /api/cart→ 404 ("no cart") state cannot be reproduced once a cart exists;set_delivery_slotthen just updates the slot instead of creating a new cart.
Verified API contract
Reverse-engineered from the site's JS bundle and confirmed live. Base
https://www.mon-marche.fr.
| Operation | Call |
|---|---|
| Sign in | POST /api/auth/signin {email, password} → bearer token in body + Set-Cookie. Send both Authorization: Bearer <t> and Cookie on later calls. |
| Search | GET ac.cnstrc.com/search/{q}?key=<MM_CONSTRUCTOR_KEY>&c=ciojs-client-2.45.0&... (no auth) |
| Resolve product | GET /api/articleDetailBySlug/{slug} → { id, sku, name } |
| Usual products | GET /api/account/top-products → { items: [...] } |
| Saved addresses | GET /api/account/addresses → { items: [...] } |
| Delivery slots | POST /api/addresses/deliverySlots2 { postalCode, countryCode, location } → { deliveryZones: [{ name, deliverySlots: [{ id, from, to, orderUntil, isExpired, isFull }] }] } |
| Create/set delivery | PATCH /api/cart/delivery2 { timeSlot, delivery: { note, address, deliveryZone }, reasonForChange } — creates the cart |
| Add one | PATCH /api/cart/product { product: { id, quantity } } |
| Add many | PATCH /api/cart/products { products: [{ id, quantity }] } |
| View cart | GET /api/cart |
| Empty cart | DELETE /api/cart (empties only) |
| Payment | PUT /api/cart/createPaymentIntent — never call; out of scope |
License
MIT. Note: this license covers only this project's code. It grants no rights to mon-marché's API, data, or trademarks, and does not override the site's terms of service.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.