shelfatlas-mcp
Use ShelfAtlas to query Danish grocery product, offer, store, and chain data through MCP tools.
Resolve product names to ShelfAtlas IDs/EANs and look up products by EAN-13.
Find currently valid offers for a product, cheapest first, with chain names resolved.
Search catalog offers by chain, product ID, or EAN, optionally including expired offers.
List retail chains and stores, including nearest-first geo search by latitude/longitude and radius.
Connect via Streamable HTTP with a bearer API key, or run locally over stdio.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
ShelfAtlas MCP server
Danish grocery catalog and shelf data as MCP tools. Ask "where is Pepsi Max
cheapest right now?" and get live, structured answers: current offers across
every major Danish chain, nearest-store geo search, product name and EAN
lookup, and a purpose-built find_cheapest_offers tool. Community shelf-stock
signals are included where approved, with confirmation counts.
Endpoint:
https://api.shelfatlas.com/api/v1/mcp(Streamable HTTP)Auth:
Authorization: Bearer sa_live_<your-key>— create a free key at https://app.shelfatlas.comDocs: https://shelfatlas.com/docs (tools, quotas, error codes)
Tools
Tool | What it answers |
| Resolve a product name to id + EAN before calling other tools |
| Look up a product by EAN-13 barcode |
| "Where is this product cheapest right now?" — live offers, cheapest first, chain resolved |
| Catalog offers with price and validity window (live-only by default; chain/EAN/product filters) |
| Paginated store list, or nearest-first geo search |
| All retail chains (id, slug, name) |
Related MCP server: salling-food-waste-mcp
Claude Desktop
Claude Desktop reaches remote servers through mcp-remote:
{
"mcpServers": {
"shelfatlas": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.shelfatlas.com/api/v1/mcp"],
"env": {
"MCP_REMOTE_HEADER_AUTHORIZATION": "Bearer sa_live_<your-key>"
}
}
}
}Clients with native Streamable HTTP support connect directly to the endpoint
with the Authorization header.
Run locally (stdio)
For clients that only speak stdio, this repository is also a small local server that serves the hosted tools over stdio (Node.js 20+):
git clone https://github.com/SlambertDK/shelfatlas-mcp && cd shelfatlas-mcp
npm ci
SHELFATLAS_API_KEY=sa_live_<your-key> node index.jsOr with Docker: docker build -t shelfatlas-mcp . and
docker run -i --rm -e SHELFATLAS_API_KEY=sa_live_<your-key> shelfatlas-mcp.
Listing the tools works without a key; calling them needs SHELFATLAS_API_KEY.
server.json is the manifest for the official MCP registry.
Available Tools
6 toolsfind_cheapest_offersAInspect
Answer 'where is this product cheapest right now?' in one call: the currently-valid offers for one product (by EAN or product id), cheapest first, with chain slug and name resolved. Combine with get_stores(lat/lng, chain_slug) to find the nearest store carrying the winning chain's offer. Self-serve keys see published campaign offers only — not everyday shelf prices, which are Salling-only and restricted to partner keys.
Inputs: ean, limit, product_id.
get_product_by_eanBInspect
Look up a product in the ShelfAtlas catalog by its EAN barcode.
Inputs: ean (required).
get_storesAInspect
List stores in the ShelfAtlas catalog. Filter by chain slug, or pass lat/lng for a nearest-first geo search (optionally capped by radius_km; geo results are not paginated).
Inputs: lat, lng, limit, cursor, +2 more.
list_chainsBInspect
List all retail chains available in the ShelfAtlas catalog.
Inputs: no named parameters.
search_catalog_offersAInspect
Search catalog offers (promotions and listed products) from Danish retail chains. Returns ONLY currently-valid offers unless include_expired is set. Filter by chain slug, product id, or EAN. Offers carry chainId — resolve names via list_chains. Self-serve keys see published campaign offers (tilbudsaviser, month-campaigns) only — not everyday shelf prices, which are Salling-only and restricted to partner keys.
Inputs: ean, limit, cursor, chain_slug, +2 more.
search_productsAInspect
Resolve a product NAME to its ShelfAtlas id and EAN — use this BEFORE calling find_cheapest_offers or search_catalog_offers when you only have a product name (e.g. from a user question) and not an id or barcode. Matches on the canonical product name, case-insensitive, substring match. Returns id, name, ean (null for self-serve keys — every EAN is Salling-sourced and restricted to partner keys), and size (volumeMl/unitCount/quantityUnit) where known.
Inputs: q (required), limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool targets a distinct resource: chains, stores, products by EAN, products by name, offers search, and cheapest-offer ranking. The main overlap is between search_catalog_offers and find_cheapest_offers, both returning currently-valid offers; the descriptions differentiate them (general search/filter vs single-product cheapest-first), but an agent could still hesitate.
All tools follow a verb_noun snake_case pattern (list_chains, get_stores, search_products, get_product_by_ean). Minor inconsistency in verb choice for the same concept (search_catalog_offers vs find_cheapest_offers), and qualifier suffixes vary (catalog, by_ean), but the set remains predictable.
Six tools is well-scoped for a retail-catalog/offers domain, with each tool earning its place (chain lookup, store lookup, product resolution, offer search, price comparison). No filler tools and no obvious missing slice of the surface.
The lifecycle is largely covered: chains → stores (with geo) → products (by name and EAN) → offers → cheapest-offer answer, with the intended search_products-then-find_cheapest_offers flow documented. Minor gaps exist, such as fetching a single offer or store by id and browsing product lists, but agents can work around these via the existing filters.
Maintenance
Related MCP Connectors
Product catalogues, prices and stock from online stores and supermarkets.
Live prices, deals & optimal multi-stop shopping routes for German grocery & drug stores.
Compare 22M+ prices in DK/SE/NO/DE: search, price history, deals, gifts, wishlists. Login optional
Product search, store prices and price history from Norwegian web shops. Read-only, no login.
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server for Nordic grocery shopping that finds deals across supermarkets in Denmark, Norway, Sweden, and Finland, plans weekly dinners around cheap ingredients, and generates shopping lists grouped by store.1849MIT
- AlicenseNot gradedqualityCmaintenanceFind discounted food waste from Danish supermarkets (Salling Group) via the Model Context Protocol. Provides tools to search nearby stores or get products by store ID.1MIT
- AlicenseAqualityDmaintenanceMCP server that queries Norwegian grocery store flyers (kundeaviser) to help AI agents plan cheap meals based on current offers.71MIT
- AlicenseAqualityBmaintenanceEnables searching public Kupi.cz discount offers, comparing store prices, and approximating shopping list optimization through a read-only MCP interface.3MIT