delhaize-mcp
Click on "Deploy 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., "@delhaize-mcp list my recent Delhaize receipts and save any new ones"
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.
delhaize-mcp
An unofficial Model Context Protocol server that lets an AI assistant fetch your own Delhaize (Belgium) till receipts and this week's promotions, using its own headless browser, without driving your everyday browser and without ever seeing your password.
Unofficial and not affiliated with or endorsed by Delhaize. It reads only your own account, at your request, the way you would read it yourself. Check that your use fits Delhaize's terms of use, keep the request rate low, and do not use it to collect other people's data.
What it does
Tool | What it does | Writes |
| Is the saved login still valid? | nothing |
| Lists recent receipts and flags which are not in your record yet | nothing |
| Saves the image of each new receipt |
|
| Saves the missing photos of receipts already in your record |
|
| Saves the raw pages of the weekly promotions listing |
|
It never transcribes items, never edits your record, and never handles your password. It only puts files on disk. Reading the images and recording them is left to you or your assistant, ideally with a check that each receipt's lines sum to its printed total.
Receipts are identified by (date, store, total), so nothing is fetched twice.
Related MCP server: Jumbo MCP Server
Requirements
Python 3.10+
A Delhaize account with receipts linked to your loyalty card
Install
pip install delhaize-mcp
python3 -m playwright install chromiumThis gives you two commands: delhaize-mcp (the MCP server) and delhaize-receipts (the same actions from the command line).
Set up
Log in once. A browser window opens, and you sign in yourself:
delhaize-receipts loginThe session is saved in
~/.delhaize-mcp/profile(or setDELHAIZE_PROFILE). Later runs reuse it headlessly. If it lapses, runloginagain. That folder holds your session cookies: never commit or share it.Choose a data folder (optional). By default everything is written to
~/.delhaize-mcp/data. SetDELHAIZE_DATA_DIRto use another folder. Your record of receipts isreceipts_all.jsonin that folder, a JSON list such as:[{"date": "2026-08-11", "store": "Delhaize Centre", "total": 11.11, "image": "photos/2026-08-11.jpeg"}]imageis optional. A receipt without an existing image is whatbackfilllooks for.Connect it to your assistant.
Claude Code:
claude mcp add delhaize-receipts -- delhaize-mcpClaude Desktop (
claude_desktop_config.json):{ "mcpServers": { "delhaize-receipts": { "command": "delhaize-mcp", "env": {"DELHAIZE_DATA_DIR": "/path/to/your/data"} } } }If the app cannot find
delhaize-mcp, use its full path (which delhaize-mcpshows it).
Command line
The same actions work without an assistant:
delhaize-receipts status
delhaize-receipts list --months 1 # this month and last
delhaize-receipts fetch --months 1
delhaize-receipts backfill --months 3
delhaize-receipts promosHow it works
Delhaize renders each receipt as an image inside a client-side app, so the server lets the real page render in a headless Chromium (Playwright) and reads the finished page, exactly as a person would. All parsing rules (French dates, euro amounts, de-duplication, file naming) live in src/delhaize_mcp/core.py, which has no browser dependency and is fully unit-tested.
Tests
No browser or network needed:
python3 tests/test_core.py
python3 tests/test_server.pyPrivacy
Nothing leaves your machine except the normal page requests to delhaize.be.
No password is read or stored. The login is a browser profile you create yourself.
Your login and data live in
~/.delhaize-mcp, outside the code, so they never end up in a repository.
Limitations
Built against the French-language Belgian site (
delhaize.be/fr). Page changes on Delhaize's side can break it; the parsers are deliberately forgiving, and the tools report what they missed rather than failing silently.The promotions capture saves raw page data only; interpreting it is up to you.
Licence
MIT. See LICENSE.
Available Tools
5 toolsdelhaize_auth_statusA
Check whether the saved Delhaize browser profile is still logged in.
Returns {logged_in: bool, message: str}. If logged_in is false, the user must
run delhaize-receipts login once to refresh the session; this server
cannot and must not perform the login itself.
Inputs: no named parameters.
delhaize_backfill_imagesA
Save the missing PHOTOS of Delhaize receipts that are already in the record
but have no image. A receipt lacks a photo when its record has no existing
image path and no matching file is already in receipts_backfill/.
Not read only: it writes image files into receipts_backfill/. It never edits receipts_all.json and never uses receipts_inbox, so nothing is ingested twice. Each file is named ' ' so it pairs with its receipt.
Returns {missing, found, saved:[...], missed:[...], not_in_window:[...], next_step}.
Inputs: months_back.
delhaize_fetch_new_receiptsA
Save the images of any NEW Delhaize receipts (this month and the previous
months_back months) into receipts_inbox, ready for the existing pipeline.
Not read only: it writes image files into receipts_inbox. It is non destructive: it never overwrites, never deletes, and never edits receipts_all.json. A receipt already present in receipts_all.json is skipped.
After it runs, the images can be read (by the assistant or any OCR) and recorded in receipts_all.json by your own process; checking that the lines sum to the printed total before recording is strongly recommended.
Returns {new_count, saved:[{date, store, total, path}], missed:[...], next_step}.
Inputs: months_back.
delhaize_fetch_promotionsA
Read this week's public Delhaize promotions listing (store context from the saved profile) and save each page's raw data into promos_inbox//.
Not read only: it writes JSON files into promos_inbox. It never edits anything else and never judges products; parsing the capture is left to your own code.
Returns {pages, tiles, api_bodies, out_dir, stopped, next_step}.
Inputs: max_pages.
delhaize_list_receiptsA
List Delhaize receipts for the current month and the previous months_back
months, flagging which are not yet in receipts_all.json.
Read only: opens nothing and writes nothing. Use this to preview before fetching. months_back=1 (the default) covers this month and last, which is enough to catch a month boundary.
Returns {count, new_count, receipts:[{date, store, total, points, savings, is_new}]}.
Inputs: months_back.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a distinct action in the receipts lifecycle, but delhaize_fetch_new_receipts and delhaize_backfill_images both 'fetch receipt images' and could be confused at first glance; the descriptions do clarify (new receipts vs. missing photos for existing records).
All tools share the delhaize_ prefix in consistent snake_case, mostly following a verb_noun pattern (list_receipts, fetch_new_receipts, backfill_images, fetch_promotions). delhaize_auth_status is a minor deviation using a noun-style status name rather than an action verb.
Five tools is well-scoped for a focused receipts/promotions workflow, with each tool earning its place (auth check, preview, two distinct fetch operations, promotions fetch). No redundant or filler tools.
The surface covers the key read/write lifecycle: connectivity check, listing, fetching new receipts, backfilling missing images, and capturing promotions. There is no tool to view/search the existing receipts_all.json corpus or to record entries, though the design intentionally offloads recording to the assistant.
Maintenance
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Web data extraction and browser workflows for AI assistants.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to access content from authenticated web pages by opening a real browser for manual login and session capture. It saves browser profiles locally so users only need to log in once per service for future automated access.4161 npm36MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to securely access a personal Dutch supermarket account, including digital receipts with itemized prices, discounts and VAT, loyalty points balance, and active shopping lists, plus search for nearby stores and products in the grocery catalog.20MIT
- AlicenseAqualityBmaintenanceLets AI assistants browse the Continente.pt catalogue, compare prices and sale rules, review favorites and past orders, and safely build a cart while leaving checkout and payment on the website. It runs locally over stdio so credentials and cookies stay on the user's machine.15491 npm50MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to search grocery products, manage shopping carts, and retrieve account, order, delivery, and discount information across multiple European online grocery platforms.MIT