# swissgroceries-mcp

Searches products and weekly deals across Swiss grocery chains, compares prices and plans a multi-store trip. Handy when you track a food budget.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 37
- Author: nicktcode
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/nicktcode/swissgroceries-mcp
- Updated: 2026-10-20
- HTML: https://affpapa.org/en/nevibecode/mcp/swissgroceries-mcp

## What it does

The server hands your agent seven tools: nearby store lookup, cross-chain product search with normalised and unit pricing, product details, promotions, per-store stock, and trip planning for a shopping list. A `health_check` tool probes each chain adapter and reports status and latency.

Coverage is uneven. Migros exposes a full catalog, promotions and per-store stock; Coop covers the coop.ch catalog and geo-based stock. Other chains return less, so comparisons across them stay partial. No accounts or keys are involved — the Denner adapter registers an anonymous client on first use, and the rest run on public endpoints.

Chain APIs here are unofficial and shift without notice. When an adapter breaks, it gets fixed once someone posts a response sample in an issue. Claude takes one line: `claude mcp add swissgroceries-mcp -e DENNER_JWT=<DENNER_JWT> -- npx -y @nicktcode/swissgroceries-mcp`. Every other client reads a JSON entry that spawns `npx -y @nicktcode/swissgroceries-mcp` over stdio.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `DENNER_JWT`, `LIDL_DEFAULT_STORE`, `SWISSGROCERIES_USER_AGENT_COOP`, `SWISSGROCERIES_LOG_LEVEL`, `SWISSGROCERIES_DISABLE_CACHE` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env DENNER_JWT=<DENNER_JWT> --env LIDL_DEFAULT_STORE=<LIDL_DEFAULT_STORE> --env SWISSGROCERIES_USER_AGENT_COOP=<SWISSGROCERIES_USER_AGENT_COOP> --env SWISSGROCERIES_LOG_LEVEL=<SWISSGROCERIES_LOG_LEVEL> --env SWISSGROCERIES_DISABLE_CACHE=<SWISSGROCERIES_DISABLE_CACHE> --transport stdio swissgroceries-mcp -- npx -y @nicktcode/swissgroceries-mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add swissgroceries-mcp --env DENNER_JWT=<DENNER_JWT> --env LIDL_DEFAULT_STORE=<LIDL_DEFAULT_STORE> --env SWISSGROCERIES_USER_AGENT_COOP=<SWISSGROCERIES_USER_AGENT_COOP> --env SWISSGROCERIES_LOG_LEVEL=<SWISSGROCERIES_LOG_LEVEL> --env SWISSGROCERIES_DISABLE_CACHE=<SWISSGROCERIES_DISABLE_CACHE> -- npx -y @nicktcode/swissgroceries-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "swissgroceries-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@nicktcode/swissgroceries-mcp"
            ],
            "env": {
                "DENNER_JWT": "<DENNER_JWT>",
                "LIDL_DEFAULT_STORE": "<LIDL_DEFAULT_STORE>",
                "SWISSGROCERIES_USER_AGENT_COOP": "<SWISSGROCERIES_USER_AGENT_COOP>",
                "SWISSGROCERIES_LOG_LEVEL": "<SWISSGROCERIES_LOG_LEVEL>",
                "SWISSGROCERIES_DISABLE_CACHE": "<SWISSGROCERIES_DISABLE_CACHE>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "swissgroceries-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@nicktcode/swissgroceries-mcp"
            ],
            "env": {
                "DENNER_JWT": "<DENNER_JWT>",
                "LIDL_DEFAULT_STORE": "<LIDL_DEFAULT_STORE>",
                "SWISSGROCERIES_USER_AGENT_COOP": "<SWISSGROCERIES_USER_AGENT_COOP>",
                "SWISSGROCERIES_LOG_LEVEL": "<SWISSGROCERIES_LOG_LEVEL>",
                "SWISSGROCERIES_DISABLE_CACHE": "<SWISSGROCERIES_DISABLE_CACHE>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e DENNER_JWT=<DENNER_JWT> -e LIDL_DEFAULT_STORE=<LIDL_DEFAULT_STORE> -e SWISSGROCERIES_USER_AGENT_COOP=<SWISSGROCERIES_USER_AGENT_COOP> -e SWISSGROCERIES_LOG_LEVEL=<SWISSGROCERIES_LOG_LEVEL> -e SWISSGROCERIES_DISABLE_CACHE=<SWISSGROCERIES_DISABLE_CACHE> swissgroceries-mcp npx -y @nicktcode/swissgroceries-mcp
```
Replace <…> with your own values

## When to use it
- compare one product's price at Migros and Coop
- find chain promotions expiring this week
- check which stores carry a given product
- split a shopping list across stores for the lowest total
- price a basket across several chains at once

## Example prompts
- Compare pasta prices across Migros and Coop
- What is on sale at Aldi this week?

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
