my-grocery-mcp
# my-grocery-mcp
Personal MCP server for Swiss grocery product search, price comparison and
weekly promotions (Migros, Coop, Aldi, Denner, Lidl, Farmy, Volgshop, Otto's).
## Origin and license
Forked from [nicktcode/swissgroceries-mcp](https://github.com/nicktcode/swissgroceries-mcp)
at **v0.7.4**, the last release under the MIT License. Later upstream releases
use different licenses; no code from them is included here. This project stays
under MIT — see [LICENSE](LICENSE). The original README is kept as
[UPSTREAM-README.md](UPSTREAM-README.md) for reference on tools and setup.
Not affiliated with any of the retailers. It calls their publicly reachable
app/web endpoints; those can change without notice.
## Changes since the fork
See `git log`. Highlights:
- Migros: promotions with a minimum quantity ("40% Ab 2 Stück") are detected.
- Migros: `get_promotions` reads the full weekly list and honours `query`.
- Migros: `search_products` keeps promotion data.
- Migros: default region is Zürich (`2`), overridable via `MIGROS_REGION`.
## Run locally
```bash
npm install
npm test
npm run build
```
Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"my-grocery": {
"command": "node",
"args": ["/absolute/path/to/my-grocery-mcp/dist/index.js"]
}
}
}
```
TDQS
Scored across 7 tools
Each tool targets a distinct resource and action: store discovery, product search, product detail, promotions, per-store stock, adapter diagnostics, and multi-item trip planning. The only mild conceptual overlap (search_products vs plan_shopping) is clearly separated by scope—single-product search versus multi-item itinerary optimization.
All seven tools follow a consistent snake_case verb_noun pattern (find_stores, search_products, get_product, get_promotions, find_stock, plan_shopping), with health_check being the only noun-ish exception but still readable and idiomatic.
Seven tools is well-scoped for a Swiss grocery comparison server, covering discovery, search, detail, promotions, stock, diagnostics, and planning without redundancy. Each tool earns its place in the workflow.
The surface covers the core lifecycle: find stores, search products, inspect details, check promotions and stock, and plan trips, plus a health check for adapter issues. Minor gaps exist—no explicit chain/capability listing beyond health_check, no store-detail-by-ID tool, and no price history—but these are workable around.