Skip to main content
Glama
KrivchenkoEgor

mcp-recipe-shopping-list

Recipe Shopping List — MCP-Server

MCP-Server (Model Context Protocol), der Folgendes kann:

  1. Rezepte von food.ru lesen — über den Link werden Zutaten, Schritte, Nährwerte (Kcal, Eiweiß, Fett, Kohlenhydrate) abgerufen

  2. Produkte auf magnit.ru suchen — unter Berücksichtigung des konkreten Geschäfts

  3. Einkaufsliste erstellen — für ein Rezept werden Produkte mit Preisen gefunden und die Gesamtsumme berechnet

  4. Informationen über das Geschäft anzeigen — anhand des Geschäftscodes

Ergebnis: Sie geben einen Rezeptlink ein — Sie erhalten eine fertige Einkaufsliste mit Preisen von Magnit und direkten Links zu den Produkten.

🎓 Lernprojekt: Das Projekt wurde verwendet, um Kategoriemanager einer Einzelhandelskette in die Erstellung von MCP-Servern einzuweisen. Es ist ein praktischer Fall mit einem vollständigen Zyklus: von der Idee und dem Lastenheft bis zum funktionierenden MCP-Server, der von einem KI-Assistenten genutzt wird. Die Teilnehmer erstellen mit Hilfe eines KI-Agenten eine funktionierende Anwendung — einen Rezept-Parser für food.ru, eine Produktsuche auf magnit.ru und eine Einkaufsliste mit Preisen — und erzielen ein positives Ergebnis innerhalb einer einzigen Sitzung.

🌐 Web-Version: Neben der MCP-Schnittstelle gibt es eine lokale Webschnittstelle — sie benötigt keinen MCP-Client und funktioniert im Browser. Start mit einem einzigen Befehl:

./start.sh   # запустить и открыть страницу в браузере (http://127.0.0.1:8000)
./stop.sh    # остановить сервер

In der Web-Version können Sie einen Rezeptlink einfügen, eine Tabelle mit der Einkaufsliste erhalten und sie in Excel speichern. Details finden Sie im Abschnitt „Web-Schnittstelle“.


Installation

Schneller Weg: Installationsprogramm install.py

Das Skript install.py (nur Standard-Python-Bibliothek — nichts zusätzlich installieren) erledigt alles selbst: Es erstellt eine virtuelle Umgebung, installiert Abhängigkeiten und den Browser für Playwright, erstellt .env, trägt den Server in die ausgewählten MCP-Clients ein und prüft, dass alles funktioniert.

Erforderlich ist Python 3.11+ (wir empfehlen uv — das Installationsprogramm findet sowohl uv als auch normales Python).

python install.py      # или: python3 install.py

Alle Flags sind optional:

Flag

Funktion

--yes

Alle Fragen mit Standardwerten beantworten

--shop-code CODE

Magnit-Geschäftscode (Standard: 543440)

--shop-type dostavka|supermarket|hypermarket

Geschäftstyp (Standard: dostavka)

--clients opencode,claude

Welchen MCP-Clients der Server hinzugefügt wird (kommagetrennt)

--no-browser

Chromium-Browser nicht herunterladen

--force

.venv neu erstellen und .env überschreiben

--check

Nur Umgebung prüfen — nichts ändern

--project PFAD

Projektordner (Standard: Ordner des Installationsprogramms)

Beispiele:

python install.py --check              # проверка окружения без изменений
python install.py --yes                # установка «на все по умолчанию»
python install.py --shop-code 992301 --clients opencode,claude

Manuell

Erforderlich ist Python 3.11+ (wir empfehlen uv).

# 1. Виртуальное окружение и зависимости
uv venv --python 3.11 .venv
uv pip install --python .venv/bin/python -r requirements.txt

# 2. Браузер для Playwright (оба сайта — SPA, без браузера никак)
.venv/bin/python -m playwright install chromium

# 3. Секреты
cp .env.example .env   # при необходимости поправь код магазина по умолчанию

Related MCP server: Recipe Commerce Intelligence MCP

Start

.venv/bin/python src/server.py

Der Server arbeitet über das MCP-Protokoll über stdio — er wird vom KI-Assistenten (Claude Desktop, LM Studio usw.) aufgerufen, von sich aus „schweigt“ er im Terminal.

Web-Schnittstelle

Eine lokale Webseite für alle, die keinen MCP-Client anschließen möchten: Sie fügen einen Rezeptlink ein — Sie erhalten eine Tabelle mit der Einkaufsliste und eine Schaltfläche zum Speichern in Excel.

Start (der Server öffnet die Seite selbst im Browser):

./start.sh     # запустить и открыть браузер
./stop.sh      # остановить сервер

Ein erneutes ./start.sh bei laufendem Server öffnet einfach die Seite. Manuell (falls die Skripte nicht geeignet sind):

.venv/bin/python src/web/server.py

Öffnen Sie im Browser: http://127.0.0.1:8000

Was die Seite kann:

  • einen food.ru-Rezeptlink einfügen und auf die Schaltfläche klicken — der Server erstellt die Einkaufsliste (die Anfrage an die Websites dauert 30–90 Sekunden, ein Ladeindikator wird angezeigt);

  • eine Tabelle anzeigen: Zutat, Menge, Produkt bei Magnit, Preis, zu kaufende Menge, Summe, Produktlink;

  • die Liste mit der Schaltfläche „In Excel speichern“ in eine Excel-Datei speichern.

Excel-Dateien werden im Ordner exports/ im Projektstamm gespeichert (Name im Format shopping_list_<Rezept>_<Datum>.xlsx).

Verbindung zu OpenCode

In ~/.config/opencode/opencode.jsonc (global) oder opencode.json im Projektstamm fügen Sie den Abschnitt mcp hinzu — das Format unterscheidet sich von Claude Desktop (Schlüssel mcp, command — Array, Variablen — environment):

{
  "mcp": {
    "recipe-shopping-list": {
      "type": "local",
      "command": [
        "/ПОЛНЫЙ/ПУТЬ/К/MCP_rec/.venv/bin/python",
        "/ПОЛНЫЙ/ПУТЬ/К/MCP_rec/src/server.py"
      ],
      "environment": {
        "MAGNIT_SHOP_CODE": "543440",
        "MAGNIT_SHOP_TYPE": "dostavka",
        "LOG_LEVEL": "INFO"
      },
      "enabled": true
    }
  }
}

Nach dem Neustart von OpenCode erscheint der Server in der MCP-Liste (Befehl /mcp in der Anwendung). Die Überprüfung über das Terminal (opencode mcp list) funktioniert bei einer Installation über OpenCode.app nicht — die CLI ist ein Electron-Wrapper.

Verbindung zu Claude Desktop

In claude_desktop_config.json fügen Sie hinzu (Pfade müssen absolut sein):

{
  "mcpServers": {
    "recipe-shopping-list": {
      "command": "/ПОЛНЫЙ/ПУТЬ/К/MCP_rec/.venv/bin/python",
      "args": ["/ПОЛНЫЙ/ПУТЬ/К/MCP_rec/src/server.py"],
      "env": {
        "MAGNIT_SHOP_CODE": "543440",
        "MAGNIT_SHOP_TYPE": "dostavka",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

Werkzeuge

Werkzeug

Funktion

parse_foodru_recipe(recipe_url)

Rezept von food.ru: Zutaten, Schritte, Nährwerte

search_magnit_product(query, shop_code, shop_type, filters)

Produktsuche auf magnit.ru

get_shopping_list(recipe_url, shop_code, shop_type)

Einkaufsliste mit Preisen und Gesamtsumme

get_shop_info(shop_code)

Informationen über das Geschäft

Beispiel

„Hier ist das Rezept: https://food.ru/recipes/269806-sous-iz-iogurta-s-ukropom-i-chesnokom-1766588076

Der Agent ruft get_shopping_list auf und gibt zurück:

Греческий йогурт — 100г → Йогурт греческий Teos 2% 140г — 89,90 ₽ [ссылка]
Чеснок — 2 зубчик =10г → Чеснок свежий 100г — 45,00 ₽ [ссылка]
...
Итого: 356,70 ₽ · 6 товаров

Tests

Schnelle Logiktests (sie greifen nicht auf Websites zu — die Parser werden durch Mocks ersetzt):

.venv/bin/python -m pytest tests/ -v

Live-Integrationstests — sie öffnen tatsächlich food.ru und magnit.ru über Playwright, wie der produktive Server (~1 Minute, mit Pausen zwischen den Anfragen):

.venv/bin/python -m pytest -m integration -v

Regeln für Live-Tests: Website nicht erreichbar (Netzwerk) — Test wird übersprungen; Website hat geantwortet, aber die Struktur stimmt nicht — Test schlägt fehl (das Layout hat sich geändert, es ist Zeit, die Selektoren zu aktualisieren und die Lektion in LESSONS.md festzuhalten).

Struktur

src/
├── server.py                  # Точка входа MCP-сервера
├── tools/                     # MCP-инструменты (бизнес-логика)
├── integrations/              # Парсеры сайтов (Playwright)
├── models/                    # Pydantic-модели
├── utils/                     # Кэш, ограничитель запросов, валидаторы
└── config/                    # Настройки (.env) и селекторы

Wichtig zu wissen

  • Beide Websites (food.ru, magnit.ru) sind SPAs: Die Daten werden per JavaScript nachgeladen. Deshalb arbeiten die Parser über Playwright (Headless-Browser) und nicht über einfaches HTTP.

  • Zwischen den Anfragen an die Websites liegt eine Pause von 2–5 Sekunden, die Ergebnisse werden gecacht (Rezepte für 24 Stunden, Produkte für 15 Minuten).

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for the Pepesto API — give your agent the ability to turn any recipe (a URL, plain text, or a photo) into a matched basket of real supermarket products with live prices, across 26 European supermarkets. The MCP covers the recipe → matched cart half of the grocery shopping workflow (parse / search / map ingredients to SKUs / check catalogs).
    7
    81
    5
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Extracts branded ingredients and kitchen tools from recipes, matches them to affiliate products, and generates shoppable ingredient lists to turn recipes into affiliate revenue.
    3
    48
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables cross-store price comparison and recipe-driven cart automation for Israeli grocery stores Shufersal and Tiv Taam, with an extensible architecture for additional stores.
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables automated weekly meal planning and grocery price comparison across Swedish supermarkets through a Claude/GPT interface.
    3
    MIT

View all related MCP servers

Related MCP Connectors

  • Search direct grocery storefronts and create product-link pickup handoffs.

  • Shopping MCP for AI agents: search, compare, Amazon buy links. Auto-register.

  • Agent-native product catalog for AI shopping agents. 296M+ products, 28 countries.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/KrivchenkoEgor/mcp-recipe-shopping-list'

If you have feedback or need assistance with the MCP directory API, please join our Discord server