UNPKG

masterclass-mcp

Version:

Un serveur MCP pour le calcul nutritionnel et la génération de plans alimentaires

43 lines (42 loc) 1.98 kB
import { z } from "zod"; export const Gender = z.enum(["male", "female"]); export const Objective = z.enum(["muscleGain", "weightLoss", "maintenance"]); export const MacronutrientRatios = z.object({ calories: z.number(), protein: z.number(), fat: z.number(), carbohydrates: z.number() }); export const DietType = z.enum(["vegetarian", "vegan", "noPork", "none"]); // Nouvelles options configurables export const BMRFormula = z.enum(["mifflin", "allometric", "katchMcArdle"]); export const ActivityLevel = z.enum(["sedentary", "light", "moderate", "high", "extreme"]); export const MacroStrategy = z.enum(["standard", "proteinFirst", "keto", "lowFat"]); // Mapping des niveaux d'activité vers leurs multiplicateurs export const activityMultipliers = { sedentary: 1.2, // Peu ou pas d'exercice light: 1.375, // Exercice léger 1-3 fois/semaine moderate: 1.55, // Exercice modéré 3-5 fois/semaine high: 1.725, // Exercice intense 6-7 fois/semaine extreme: 1.9 // Exercice très intense, travail physique }; // Options de calcul nutritionnel export const NutritionOptions = z.object({ bmrFormula: BMRFormula.optional().default("mifflin"), macroStrategy: MacroStrategy.optional().default("standard"), bodyFatPercentage: z.number().optional(), // Pour Katch-McArdle customProteinRatio: z.number().optional(), // Pour les stratégies personnalisées customFatRatio: z.number().optional(), // Pour les stratégies personnalisées customCarbRatio: z.number().optional() // Pour les stratégies personnalisées }); export const Profile = z.object({ gender: Gender, age: z.number(), weight: z.number(), height: z.number(), activityLevel: z.union([z.number(), ActivityLevel]), // Accepte soit un nombre direct soit une enum objective: Objective, dietType: DietType, intolerances: z.string(), nutritionOptions: NutritionOptions.optional().default({}) // Options de calcul nutritionnel });