French Grocery
NPM · FR-GROCERY-MCP
Search, compare and manage E.Leclerc Drive and Super U grocery carts without ordering.
Available components
Last scanned (21 hours ago)
Scores higher than 48% of npm servers
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 32 of 112 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 8 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability72
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 1067 tokens (~97/item across 11 items; 11 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
- Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +4
- Stability: unverified → 0.30 ▲ functional
- 27 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 26 Oct 26 55
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed npm/fr-grocery-mcp@0.1.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 112 packages
| Packages resolved | 112 |
|---|---|
| Stale | 32 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_to_cart Add to cart ~70
Adds units of a product on top of those already present, then reads the cart back to confirm.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | retailer product identifier (id field of search_products) |
| quantity | integer | – | sale units to add |
| store | string | yes | retailer (see list_stores) |
| Name | Type | Req | Description |
|---|---|---|---|
| cart_total_eur | number|null | yes | – |
| confirmed | boolean | yes | true if the cart read back holds the targeted quantity |
| expected_quantity | number | yes | – |
| line | – | yes | – |
| product_id | string | yes | – |
| store | string | yes | – |
No examples provided.
compare_carts Compare carts ~46
Reads each retailer's cart: total, lines, minimum order and missing amount, next slots. Sorted from cheapest to most expensive.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | targeted fulfilment mode |
| Name | Type | Req | Description |
|---|---|---|---|
| cheapest | string|null | yes | retailer with the cheapest non-empty cart |
| mode | string | yes | – |
| stores | array | yes | – |
No examples provided.
find_stores Find a store ~63
The retailer's stores around a postcode or town, nearest first (if the retailer supports it, see list_stores).
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | postcode or town, e.g. "75011" |
| store | string | yes | retailer (see list_stores) |
| Name | Type | Req | Description |
|---|---|---|---|
| locations | array | yes | – |
| query | string | yes | – |
| store | string | yes | – |
No examples provided.
get_cart Read the cart ~45
Reads the retailer's actual cart: lines (id, label, quantity, line total, unit price) and total.
| Name | Type | Req | Description |
|---|---|---|---|
| store | string | yes | retailer (see list_stores) |
| Name | Type | Req | Description |
|---|---|---|---|
| lines | array | yes | – |
| store | string | yes | – |
| total_eur | number|null | yes | – |
No examples provided.
get_order_conditions Order conditions ~67
Reads, for one retailer or all of them (store omitted), the selected store, the booked slot, the next pickup and delivery slots (structured dates) and the minimum order. Books nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| store | string | – | retailer; omitted = all of them, one after the other |
| Name | Type | Req | Description |
|---|---|---|---|
| stores | array | yes | – |
No examples provided.
get_product Product details ~79
Reads a product page: ingredient list (allergens in capitals, possible traces), allergen statement if the site provides it, and origin. Ingredients are null for a raw product (fruit, fresh meat).
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | retailer product identifier (id field of search_products) |
| store | string | yes | retailer (see list_stores) |
| Name | Type | Req | Description |
|---|---|---|---|
| allergens | string|null | yes | separate allergen statement, if the site provides it |
| id | string | yes | – |
| ingredients | string|null | yes | ingredient list as displayed (allergens in capitals); null for a raw product |
| name | string | yes | – |
| origin | string|null | yes | origin declared on the product page, if any |
| store | string | yes | – |
No examples provided.
list_stores Available retailers ~60
Lists the plugged-in retailers and their capabilities (product page, store selection, minimum order, booked slot). With check: true, also checks that each session responds and shows the active store.
| Name | Type | Req | Description |
|---|---|---|---|
| check | boolean | – | query each site (read-only) |
| Name | Type | Req | Description |
|---|---|---|---|
| stores | array | yes | – |
No examples provided.
remove_from_cart Remove from cart ~53
Removes a product from the cart entirely, then reads the cart back.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | retailer product identifier (id field of search_products) |
| store | string | yes | retailer (see list_stores) |
| Name | Type | Req | Description |
|---|---|---|---|
| cart_total_eur | number|null | yes | – |
| confirmed | boolean | yes | true if the cart read back holds the targeted quantity |
| expected_quantity | number | yes | – |
| line | – | yes | – |
| product_id | string | yes | – |
| store | string | yes | – |
No examples provided.
search_products Search products ~109
Searches the retailer's catalogue. For each product: id, label (brand and size included), price, price per kg/l/piece, availability, typed promotions (immediate, multibuy, loyalty) and best net offer.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | maximum number of products |
| query | string | yes | short search term (in French), e.g. "spaghetti", "boeuf haché 5%" |
| store | string | yes | retailer (see list_stores) |
| Name | Type | Req | Description |
|---|---|---|---|
| products | array | yes | – |
| query | string | yes | – |
| store | string | yes | – |
| total | number | yes | products reported by the site, across all pages |
No examples provided.
set_quantity Set a quantity ~75
Sets a product's quantity in the cart (replaces the current one; 0 removes the product), then reads the cart back.
| Name | Type | Req | Description |
|---|---|---|---|
| product_id | string | yes | retailer product identifier (id field of search_products) |
| quantity | integer | yes | desired final quantity |
| store | string | yes | retailer (see list_stores) |
| Name | Type | Req | Description |
|---|---|---|---|
| cart_total_eur | number|null | yes | – |
| confirmed | boolean | yes | true if the cart read back holds the targeted quantity |
| expected_quantity | number | yes | – |
| line | – | yes | – |
| product_id | string | yes | – |
| store | string | yes | – |
No examples provided.
set_store Select the store ~72
Selects the retailer's active store among the find_stores results and remembers it. The site session must be on this store: on "session expired", open it on the site.
| Name | Type | Req | Description |
|---|---|---|---|
| store | string | yes | retailer (see list_stores) |
| store_id | string | yes | id field of find_stores |
| Name | Type | Req | Description |
|---|---|---|---|
| selected | object | yes | – |
| store | string | yes | – |
No examples provided.
How do I install the French Grocery MCP server?
French Grocery runs locally as an npm package, launched with npx -y fr-grocery-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · fr-grocery-mcp
claude mcp add maxime-desmarchelier-fr-grocery-mcp -- npx -y fr-grocery-mcp
What is the French Grocery MCP server?
French Grocery is an MCP server listed in the public MCP registry as io.github.maxime-desmarchelier/fr-grocery-mcp. Search, compare and manage E.Leclerc Drive and Super U grocery carts without ordering. This page covers its npm package (fr-grocery-mcp).
Is the French Grocery MCP server safe to use?
French Grocery scores 74 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the French Grocery MCP server expose?
French Grocery exposes 11 tools: list_stores, search_products, get_product, get_cart, get_order_conditions, and 6 more. Their descriptions and schemas cost roughly 739 tokens of context every time the server is loaded.
Is the French Grocery MCP server still maintained?
French Grocery is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the French Grocery MCP server under?
French Grocery declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.