Skip to main content
Glama

ShelfAtlas MCP server

shelfatlas-mcp MCP server – quality and maintenance score on Glama

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.

Tools

Tool

What it answers

search_products

Resolve a product name to id + EAN before calling other tools

get_product_by_ean

Look up a product by EAN-13 barcode

find_cheapest_offers

"Where is this product cheapest right now?" — live offers, cheapest first, chain resolved

search_catalog_offers

Catalog offers with price and validity window (live-only by default; chain/EAN/product filters)

get_stores

Paginated store list, or nearest-first geo search

list_chains

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.js

Or 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 tools
find_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

    A3.8/5.0

    Scored across 6 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      An 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.
      18
      49
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server that queries Norwegian grocery store flyers (kundeaviser) to help AI agents plan cheap meals based on current offers.
      7
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables searching public Kupi.cz discount offers, comparing store prices, and approximating shopping list optimization through a read-only MCP interface.
      3
      MIT