Self-hosted calorie & macro tracking with MCP server and AI assistant (Next.js + PostgreSQL). Provides tools for food logging, nutritional data management, weight tracking, activity logging, and goal setting.
Server has 15 well-named tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (search_, lookup_, create_, update_, log_, list_, delete_, get_, set_). Descriptions are present and contextual (avg ~150 chars), though some lack explicit guidance on when to use vs. similar tools. All tools have input schemas with types and descriptions. Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. Parameter constraints are good (enums for meal types, activity levels, sex). Missing: idempotency guidance, confirmation patterns for destructive ops (delete_entry, delete_activity), and output schema documentation.
Ajoute (ou met à jour) un produit RÉEL sur OpenFoodFacts, la base publique. À n'utiliser que pour un produit EMBALLÉ avec un code-barres et des valeurs LUES SUR L'ÉTIQUETTE (jamais des estimations : c'est une base partagée). Idéal après avoir scanné un code-barres absent d'OpenFoodFacts.
Crée un profil d'aliment (macros pour 100 g). Utilise les valeurs de lookup_openfoodfacts si disponibles, sinon d'une recherche web fiable.
Supprime une activité du journal par son id.
Supprime un apport du journal par son id.
Résumé nutritionnel d'un jour : totaux (kcal + macros), cap calorique, cibles de macros et kcal restantes. date optionnelle (défaut aujourd'hui).
Récupère les paramètres du profil utilisateur (sexe, âge, taille, objectif, poids cible).
Output schemas not documented. LLMs cannot predict response structure for any tool. Responses are JSON-stringified but field names, types, and nesting are invisible to the agent.
Destructive tools (delete_entry, delete_activity) lack confirmation or dry-run patterns. No guidance on recovery if deletion is accidental.
Error handling is absent. No recovery guidance, error classification, or actionable error messages. Tools return JSON but no error schema is defined.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2025-06-18+ | v2 |
Liste les activités d'un jour (défaut aujourd'hui). date au format YYYY-MM-DD.
Liste les apports d'un jour (défaut aujourd'hui). date au format YYYY-MM-DD.
Enregistre du sport (rehausse le cap du jour). Fournir kcal, OU met + durationMin (calcul via poids). Ex MET: marche 3.5, course 9, vélo 7.5, muscu 5.
Enregistre un apport dans le journal. Fournir foodId (aliment existant — RECOMMANDÉ, macros exactes) OU label (saisie libre sans macros). quantityG = quantité consommée en grammes. date optionnelle (YYYY-MM-DD, défaut aujourd'hui).
Enregistre une pesée (kg). date optionnelle (défaut aujourd'hui).
Interroge OpenFoodFacts (base publique) par nom de produit ou code-barres. Renvoie des candidats normalisés (macros pour 100 g) NON enregistrés : à passer ensuite à create_food. À utiliser quand l'aliment n'existe pas encore en base locale.
Cherche un aliment dans la base locale (par nom ou marque). Renvoie les profils existants avec leurs macros pour 100 g. Utilise ceci EN PREMIER avant de créer un aliment.
Définit profil/objectif : sex (m/f), birthYear, heightCm, activityLevel (sedentary|light|moderate|active|very_active), targetWeightKg, weeklyRateKg. Renvoie le cap.
Corrige ou complète un profil d'aliment existant (ex: macro manquante). Ne passer que les champs à modifier.
Descriptions for list_entries, list_activities, delete_entry, delete_activity, and get_settings are under 70 chars and lack context on when to use them vs. similar tools.
No pagination support documented for list_entries and list_activities. Large result sets could exhaust context window.