MCP Server for Open Food Facts — barcode lookup, nutrition facts, allergen checks, eco-scores and product search for 3M+ food products
Server has 8 tools with complete input schemas and descriptions in German. All tools are READ_ONLY and follow verb_noun naming (lookup_, search_, get_, check_, find_). Descriptions are present (avg ~150 chars) and explain WHAT the tool does. However, parameter descriptions lack detail on constraints (e.g., barcode format, max_results bounds not enforced in schema). Output schemas are not formally documented, responses are inferred from code. Error handling returns generic error dicts without recovery guidance. No tool annotations (readOnlyHint, etc.). Composition is sound: tools are single-purpose and chainable via barcode. Missing: enum constraints for categorical params, explicit output schema documentation, actionable error messages.
Prueft alle Allergene und Spurenbestandteile eines Produkts. Gibt eine strukturierte Liste der 14 EU-Hauptallergene zurueck.
Findet gesundheitlich oder oekologisch bessere Alternativen zu einem Produkt. Sucht in derselben Produktkategorie nach besser bewerteten Optionen.
Ruft den Eco-Score und Umweltinformationen eines Produkts ab. Gibt CO2-Fussabdruck, Verpackung, Herkunft und Umweltbewertung zurueck.
Ruft detaillierte Naehrwertinformationen fuer ein Produkt ab. Gibt Kalorien, Makros, Vitamine und Nutri-Score mit Bewertung zurueck.
Ruft alle Zusatzstoffe (E-Nummern) eines Produkts ab und erklaert deren Funktion und Risiken.
Ruft alle Zertifizierungen und Labels eines Produkts ab (Bio, Vegan, Fairtrade, Halal, etc.).
Output schemas not formally documented. Code shows return dicts but no JSON Schema definitions visible for tool responses. LLMs cannot plan downstream calls without knowing response structure.
Parameter constraints not enforced in schema. max_results accepts 1-20 per description but schema has no minItems/maxItems. barcode format (EAN) not validated via pattern. LLMs may pass invalid values.
Error responses lack recovery guidance. Generic 'fehler' dict with exception string does not tell LLM what to do next. E.g., 'Produkt nicht gefunden' should suggest 'Try search_food() with product name instead.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Ruft vollstaendige Produktinformationen anhand des Barcodes ab. Gibt Name, Marke, Naehrwerte, Allergene und Bewertungen zurueck.
Sucht Lebensmittelprodukte nach Name, Zutat oder Marke. Gibt eine Liste von passenden Produkten mit Grundinformationen zurueck.
No tool annotations. All tools are READ_ONLY but lack readOnlyHint in schema. Helps LLM understand safety and retry semantics.
Parameter descriptions in German; descriptions lack actionable format hints. E.g., barcode param says 'EAN-Barcode' but does not specify length (13 digits) or validation rules.