UNPKG

masterclass-mcp

Version:

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

64 lines (63 loc) 2.44 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { calculMetabolism, calculNutrition, calculRepartition } from "./tools/calculate.js"; import { Profile } from "./type.js"; import { generateCourseList, generateDailyMeals } from "./prompts/pompts.js"; // Create an MCP server const server = new McpServer({ name: "FitMCP", version: "1.0.4", description: `Un serveur MCP pour le calcul nutritionnel et la génération de plans alimentaires, Comment l'utiliser ? 1. Calculer les besoins nutritionnels : - calculNutrition 2. Calculer le métabolisme : - calculMetabolism 3. Calculer la répartition des macronutriments : - calculRepartition 4. Générer un plan alimentaire : - generateDailyMeals 5. Générer une liste de courses : - generateCourseList`, }); server.tool("calculNutrition", { profile: Profile }, async ({ profile }) => ({ content: [{ type: "text", text: JSON.stringify(calculNutrition(profile)) }] })); server.tool("calculMetabolism", { profile: Profile }, async ({ profile }) => ({ content: [{ type: "text", text: JSON.stringify(calculMetabolism(profile.gender, profile.age, profile.weight, profile.height)) }] })); server.tool("calculRepartition", { profile: Profile }, async ({ profile }) => { // Conversion de activityLevel en nombre si c'est une chaîne const activityMultiplier = typeof profile.activityLevel === 'string' ? { 'sedentary': 1.2, 'light': 1.375, 'moderate': 1.55, 'high': 1.725, 'extreme': 1.9 }[profile.activityLevel] || 1.2 : profile.activityLevel; return { content: [{ type: "text", text: JSON.stringify(calculRepartition(profile.objective, activityMultiplier)) }] }; }); server.prompt("generateDailyMeals", () => ({ messages: [ { role: "user", content: { type: "text", text: generateDailyMeals() } } ] })); server.prompt("generateCourseList", () => ({ messages: [ { role: "user", content: { type: "text", text: generateCourseList() } } ] })); server.sendToolListChanged(); server.sendPromptListChanged(); // Start receiving messages on stdin and sending messages on stdout const transport = new StdioServerTransport(); await server.connect(transport);