Skip to main content
Glama
Israel Grocery MCP

Israel Grocery MCP

Israel Grocery MCP

Unified Model Context Protocol (MCP) server for Israeli grocery shopping — Shufersal + Tiv Taam with cross-store price comparison, recipe-driven cart automation, and an extensible plugin architecture for future stores.

Features

  • Cross-store search — search both Shufersal and Tiv Taam simultaneously

  • Price comparison — see side-by-side pricing for any product or full recipe

  • Smart recipe shopping — parse any recipe, find the best deals across stores, and add items to the cheapest cart automatically

  • Split-cart recommendations — buy each ingredient from wherever it's cheapest and see your total savings

  • Preference system — set a preferred store, shopping strategy (cheapest / preferred / quality), organic preference, brand blacklisting, and more

  • Diagnostics tool — diagnose() surfaces HTTP errors, response shapes, and session state

Related MCP server: Tiv Taam MCP Server

Setup

1. Install uv

curl -Ls https://astral.sh/uv/install.sh | sh

2. Install dependencies

cd israelgrocery
uv sync

3. Install Playwright (required for Shufersal browser login)

uv run playwright install chromium

4. Configure environment (optional)

cp .env.example .env
# Edit .env as needed

Running the server

uv run israelgrocery-mcp

Claude Desktop configuration

{
  "mcpServers": {
    "israelgrocery": {
      "command": "uv",
      "args": ["--directory", "/path/to/israelgrocery", "run", "israelgrocery-mcp"]
    }
  }
}

Available MCP Tools

Tool

Description

login_status()

Show login status for all stores

login_tivtaam(email, password)

Log in to Tiv Taam

login_shufersal()

Open browser for Shufersal login

check_login(store_id?)

Live session validation

set_preferences(...)

Shopping preferences

search_products(query, stores?)

Search across stores

compare_prices(query)

Price comparison for an item

show_cart(store_id?)

View cart(s)

add_to_cart(store_id, product_id, qty)

Add to a specific cart

plan_recipe_ingredients(recipe_text)

Parse recipe ingredients

compare_recipe(recipe_text)

Full recipe cost comparison

add_recipe_to_cart(recipe_text, ...)

Automated recipe shopping

diagnose(store_id?)

Debug API connections

Example prompts for Claude

  • "Compare prices for eggs and milk across both stores"

  • "I want to make shakshuka — find all the ingredients and tell me where to buy them cheapest"

  • "Add this pasta recipe to my Tiv Taam cart: [paste recipe]"

  • "Buy each ingredient from wherever it's cheapest and show me the savings"

  • "Search for chicken breast on both stores"

Shopping strategies

Strategy

Behaviour

cheapest (default)

Each item is bought from whichever store has the lower price

preferred_store

Always use your set preferred store unless it has no match

quality

Prefer the highest-confidence product match regardless of price

Adding a new store

  1. Create src/stores/mystore.py implementing BaseStore

  2. Register it in src/stores/__init__.py → build_registry()

  3. Add config in src/config.py

  4. Done — all existing tools automatically include the new store

Running tests

uv run pytest tests/ -v

Available Tools

14 tools
add_recipe_to_cartA
Parse a recipe, find best-matching products, and add them to a cart.

Args:
    recipe_text: Recipe text or URL.
    store_id: Which store to add to ("shufersal" or "tivtaam").
              If omitted, uses your preferred_store or the cheapest per item.
    strategy: "cheapest" — buy each item from its cheapest store.
              "preferred_store" — use your preferred_store for everything.
              "single_store" — use store_id for everything (requires store_id).
    confirm_all: If True, add low-confidence matches without pausing.

Inputs: recipe_text (required), store_id, strategy, confirm_all. Returns: result

add_to_cartB
Add a specific product to a store's cart.

Args:
    store_id: "shufersal" or "tivtaam".
    product_id: The product ID from search results.
    quantity: Number of units (default: 1).

Inputs: store_id (required), product_id (required), quantity. Returns: result

check_loginA
Perform a live login check for one or all stores.

Args:
    store_id: "shufersal" or "tivtaam", or omit for all.

Inputs: store_id. Returns: result

compare_pricesC
Compare prices for a product across all connected stores.

Args:
    query: What you're looking for (e.g. "eggs", "chicken breast").

Inputs: query (required). Returns: result

compare_recipeA
Parse a recipe and compare ingredient prices across all connected stores.
Shows which store is cheapest overall and where to buy each item for the best deal.

Args:
    recipe_text: Recipe text or URL.

Inputs: recipe_text (required). Returns: result

diagnoseA
Run a full diagnostic for one or all stores.
Shows session status, raw API response, and parsed result count.

Args:
    store_id: "shufersal" or "tivtaam" — omit to check all.
    test_query: Simple English word to test search (default: "eggs").

Inputs: store_id, test_query. Returns: result

login_shufersalA
Open a browser window for Shufersal login.
Complete the sign-in on shufersal.co.il and the session will be captured automatically.
Requires Playwright: run `uv run playwright install chromium` once.

Inputs: no named parameters. Returns: result

login_statusA

Show the login status for all configured grocery stores.

Inputs: no named parameters. Returns: result

login_tivtaamC
Log in to Tiv Taam with email and password.

Args:
    email: Your Tiv Taam account email address.
    password: Your Tiv Taam account password.

Inputs: email (required), password (required). Returns: result

plan_recipe_ingredientsB
Parse a recipe and list the ingredients that will be searched for.

Args:
    recipe_text: Recipe text with ingredients list, or a URL to a recipe page.

Inputs: recipe_text (required). Returns: result

search_productsA
Search for products across all (or selected) grocery stores.

Args:
    query: Search term (English or Hebrew).
    stores: Limit to specific stores, e.g. ["tivtaam"] or ["shufersal", "tivtaam"].
    max_results: Max results per store (default: 8).

Inputs: query (required), stores, max_results. Returns: result

set_preferencesB
Set your shopping preferences.

Args:
    preferred_store: Default store ("shufersal" or "tivtaam"). None = always compare.
    shopping_strategy: "cheapest" | "preferred_store" | "quality"
    prefer_organic: Prefer organic products when available.
    prefer_budget: Prefer sale/discounted products.
    prefer_store_brand: Prefer Shufersal-brand products.
    preferred_brands: Brand names to prefer (e.g. ["Tnuva", "Osem"]).
    banned_keywords: Words to avoid in product names.
    skip_pantry: Skip common pantry staples (salt, oil, spices) when parsing recipes.
    tivtaam_branch_id: Override Tiv Taam branch ID (default: 943).

Inputs: skip_pantry, prefer_budget, prefer_organic, banned_keywords, +5 more. Returns: result

show_cartB
Show the current cart contents.

Args:
    store_id: "shufersal" or "tivtaam". If omitted, shows all carts.

Inputs: store_id. Returns: result

verify_cartA
Re-check every item in the cart for live stock availability and automatically
swap out-of-stock items with the best available replacement.

Call this after adding all items to a cart to catch anything that went
out of stock between search and checkout.

Args:
    store_id: Which store cart to verify. Currently supports "tivtaam".

Inputs: store_id. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 14 tools

    Disambiguation4/5

    Most tools target distinct actions (login, search, cart, recipes), but login_status, check_login, and diagnose all overlap in checking login/session status, and search_products vs compare_prices could be confused for price lookup. Descriptions help, but an agent may still hesitate between similar options.

    Naming Consistency5/5

    All tools use snake_case with a consistent verb_noun pattern (login_tivtaam, search_products, add_to_cart, etc.). The lone 'diagnose' is a minor deviation but falls within the same convention and remains clear.

    Tool Count4/5

    14 tools is at the upper end of the typical 3-15 range but still well-scoped for a multi-store grocery assistant with recipe support. Slight redundancy among the three login/session-checking tools makes the count feel marginally heavy.

    Completeness3/5

    Core operations like login, search, cart management, and recipe handling are covered, but there is no checkout or order-placement tool, and no way to remove or update cart items. These are notable gaps that could dead-end an agent's shopping workflow.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Enables searching products, comparing prices, and building optimal shopping lists across major Chilean supermarkets, using your local machine to access real-time prices and loyalty deals.
      14
      68 npm
      67
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      An MCP server that provides a queryable, agent-native layer over Israeli supermarket price transparency feeds, enabling Hebrew product search, online delivery optimization, and cross-chain price comparison.
      1
      Apache 2.0