
Open connectors + CLI + MCP server for Austrian grocery and ready-meal data
概览
开放、无依赖(Python ≥ 3.9,仅 stdlib)连接器、CLI 以及奥地利杂货和即食食品(Fertiggerichte)数据。每个适配器返回相同的模式: CLI:食品搜索|fetch|export|sources|stores|nutri|nutriscore|company|datasets|prices。MCP(food-mcp):list_sources、search_products、fetch_ready_meals、lookup_ean、list_stores、nutri_lookup、compute_nutriscore、list_nutri_sources、company_lookup、company_children、uid_check、company_impressum、northdata_company、list_datasets、search_datasets、open_prices_lookup、myproduct_product、myproduct_search、hofer_product、hofer_search(+ 每店实时工具)。 可用工具:list_sources、search_products、fetch_ready_meals、lookup_ean。 pytest 执行离线测试。LIVE=1 pytest 也运行网络测试。 请保持礼貌,保持请求率低。这些是公开的前端终端,各家公司适用条款。MIT授权。 食物取物——储存预备餐——丰富(Fit2Go)。
概述(AI 翻译)
开放、无依赖(Python ≥ 3.9,仅 stdlib)连接器、CLI 和 MCP 服务器,用于奥地利杂货和即食(Fertiggerichte)数据。 每个适配器返回相同的模式:
| 字段 | 含义 |
|---|---|
name, brand, store, category |
产品识别 |
price_eur, unit_price_eur, unit, size_g |
价格,单价(按unit),包装尺寸(g/ml) |
nutrition_100g |
kcal, protein, fat, satfat, carbs, sugar, fiber, salt |
ean, image_url |
GTIN和图像 |
producer, producer_id |
制造商 + Identitätskennzeichen(例如 AT 40047 EG) |
origin、source、source_id、source_url、fetched_at |
来源 |
连接器状态(实时测试 2026-10-13,python3 tests/live_status.py → status.json)
| 连接器 | 来源 | 实时测试 | 重复使用 / 致谢 |
|---|---|---|---|
billa |
shop.billa.at 产品发现 API ([term=) |
✅通过(通过餐食搜索词干获取;类别路径404) | — |
penny |
penny.at,同一REWE API | ✅传递 | — |
gurkerl |
gurkerl.at API | ✅通行 | 来自Pasogott/Gurkerlcli(麻省理工学院),tomaspavlin/rohlik-mcp(麻省理工学院)的创意 |
lidl |
莉德尔。 |
本页由 AI 翻译,技术细节请以原文为准。
README
以下为原文 README 节选,完整内容请查看原文。
food-connectors 🥘🇦🇹
Open, dependency-free (Python ≥ 3.9, stdlib only) connectors, CLI and MCP server for Austrian grocery and ready-meal (Fertiggerichte) data. Every adapter returns the same schema:
| field | meaning |
|---|---|
name, brand, store, category |
product identity |
price_eur, unit_price_eur, unit, size_g |
price, unit price (per unit), pack size in g/ml |
nutrition_100g |
kcal, protein, fat, satfat, carbs, sugar, fiber, salt |
ean, image_url |
GTIN and image |
producer, producer_id |
manufacturer + Identitätskennzeichen (e.g. AT 40047 EG) |
origin, source, source_id, source_url, fetched_at |
provenance |
Connector status (live test 2026-10-13, python3 tests/live_status.py → status.json)
| connector | source | live test | reuses / credits |
|---|---|---|---|
billa |
shop.billa.at product-discovery API (term=) |
✅ pass (fetch via meal search stems; category path 404) | — |
penny |
penny.at, same REWE API | ✅ pass | — |
gurkerl |
gurkerl.at API | ✅ pass | idea from pasogott/gurkerlcli (MIT), tomaspavlin/rohlik-mcp (MIT) |
lidl |
lidl.at q/api/search |
❌ fail – 401 for Python clients (TLS/bot fingerprinting, curl gets 200). Not bypassed by policy; fetchsize capped at 30. Use heisse-preise for Lidl prices |
— |
spar |
interspar via heisse-preise + CDN images (cdn1.interspar.at from article id) |
✅ pass (prices + images) | badlogic/heissepreise (MIT) |
spar-shop |
SPAR public product search API search-spar.spar-ics.com/fact-finder/rest/v4/search/products_lmos_at (JSON index behind the interspar.at shop; no robots.txt on host, no login/cookies; interspar.at HTML never requested). Exact lookup by article number (interspar.at/p/), CLI food search … --store spar-shop, MCP spar_product |
✅ live (current + regular price, €/kg, brand, category, stock status, CDN image; code-internal is a SPAR-internal 88… code, not a GTIN; no nutrition) |
SPAR Österreich; endpoint as used by badlogic/heissepreise (MIT) |
denns |
denn’s BioMarkt AT public offer feed denns-biomarkt.at/page-data/angebote/page-data.json (Gatsby page-data the site itself loads; robots Allow: /, no login/cookies). CLI food fetch --store denns / food search … --store denns, MCP denns_offers |
✅ live (weekly offers only: article no., brand, pack, Aktionspreis + Normalpreis, €/kg, validity, vegan flags, official image images.dennree.de; no GTIN/nutrition → off) |
denn’s Biomarkt GmbH |
安装
This server does not publish a one-line install command.
Open the repository installation guide 新手?先看 mcpskill.org 教程 →配置
{"mcpServers": {"food": {"command": "food-mcp"}}}