Mercadona MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mercadona MCP Serversearch for whole wheat bread"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mercadona for Claude
Shop your Mercadona online groceries by talking to Claude.
This is an MCP server that drives your own authenticated Mercadona session. Claude can search the catalog scoped to your delivery area, read your purchase history and "my regulars," and add, change, or remove items in your real cart — so you and Claude fill it together. Products are presented as a photo grid.
You stay in control of payment. There is no checkout or payment tool, by design. Claude fills the cart; you review and pay in the Mercadona app, where Strong Customer Authentication happens.
It installs as a Claude Desktop extension (described by manifest.json) — load it unpacked
via developer mode (see Install; the packed .mcpb doesn't install reliably). It can
also run as a plain local MCP server.
Independent project. Not affiliated with, endorsed by, or sponsored by Mercadona. macOS-focused.
Tools
Tool | What it does |
| The shopping playbook. Read first. |
| Whether the session is valid and how long the token lasts. |
| Open a browser to sign in (handles 2FA); saves the session locally. |
| Find products + ids in your delivery area. |
| Details for a single product by id. |
| The current real cart: items, quantities, total. |
| What you usually buy ( |
| Past orders: date, total, status, item count. |
| Items in a past order, without adding anything. |
| Available delivery windows for your address. |
| Add a product by id (increments if present). |
| Set the exact quantity ( |
| Remove a product entirely. |
| "Buy again" — add a whole past order in one step. |
Related MCP server: RappiMCP
Requirements
Node.js ≥ 18
Google Chrome installed (the
logintool opens it via Playwright'schromechannel)
Build
npm install
npm run build # bundles src/ -> dist/server.mjs with esbuildplaywright-core is kept external (it stays in node_modules); everything else is bundled into
dist/server.mjs.
Install
Install it unpacked (developer mode). This is the recommended and reliable path — the packed
.mcpbdoes not currently install cleanly in Claude Desktop, so use the unpacked folder below.
As an unpacked Claude Desktop extension (recommended)
Load this folder directly. The build output (dist/) and runtime dependency
(node_modules/playwright-core) are git-ignored, so after cloning you must produce them first:
npm install # installs playwright-core into node_modules/
npm run build # writes dist/server.mjsThe folder then contains everything an unpacked extension needs:
manifest.json
icon.png
dist/server.mjs
node_modules/playwright-coreIn Claude Desktop: Settings → Extensions → Advanced settings → "Install unpacked extension…",
then select this folder (the one containing manifest.json). It loads as the "Mercadona" extension;
run the login tool once to sign in.
Requirements: Node ≥ 18 on your PATH and Google Chrome installed (the login tool opens
it). Rebuild (npm run build) after changing anything under src/, then reload the extension.
As a local MCP server
If you don't want a Claude Desktop extension at all, run it as a plain MCP server:
npm install && npm run build
node dist/server.mjsPoint any MCP client at node /path/to/dist/server.mjs. For Claude Desktop's config:
{
"mcpServers": {
"mercadona": {
"command": "node",
"args": ["/absolute/path/to/mercadona-claude-extension/dist/server.mjs"],
"env": { "MERCADONA_BROWSER_CHANNEL": "chrome" }
}
}
}As a packed Claude Desktop extension (.mcpb)
⚠️ Not currently recommended — Claude Desktop does not install the packed bundle reliably. Use the unpacked path above instead. Kept here for completeness.
npm run pack # builds dist/, then packs a .mcpb via @anthropic-ai/mcpbThis produces a single .mcpb bundle (it includes dist/ and the production node_modules, i.e.
playwright-core).
Signing in
Run the login tool (or just ask Claude to log in). A Chrome window opens at the Mercadona store;
sign in and complete any 2FA. The extension waits until it sees your first authenticated request,
then saves the session to:
~/.mercadona/storage_state.jsonThis file holds your Mercadona auth and never leaves your machine. It is git-ignored here — do
not commit it. Tokens last a few days; re-run login when auth_status says it has expired.
Override the location with MERCADONA_STATE_PATH, or the browser with MERCADONA_BROWSER_CHANNEL
(default chrome).
How it works
Auth (
src/auth): Mercadona stores the logged-in user — including the API access token — inlocalStorageunderMO-user. Theloginflow captures PlaywrightstorageState, andstore.mjsreads the token straight out of it. No separate token endpoint.API (
src/mercadona/api.mjs): a thin client overtienda.mercadona.es/api. Catalog search goes through Mercadona's public, search-only Algolia index (scoped to your warehouse). Cart writes are a read-modify-write against the cart's optimistic-lockversion, retried once on conflict.Server (
src/server.mjs): registers the tools over stdio and turns expired-token / not-signed-in errors into friendly messages.
License
MIT © Igor Safonov
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/igorsafonov-gif/mercadona-claude-extension'
If you have feedback or need assistance with the MCP directory API, please join our Discord server