MCP Server for howtocook recipe database - 炫一周好饭,拒绝拼好饭
Server has 4 tools with basic schemas and descriptions, but significant quality gaps. Tool names lack clear action verbs (getAllRecipes, getRecipesByCategory are acceptable but generic). Descriptions are present but minimal (10-80 chars, below the 50-200 char LLM-optimized baseline). Critical issue: getRecipesByCategory has an empty enum array despite claiming to constrain category values, this defeats the purpose of enum validation. Parameters lack depth: no min/max constraints on peopleCount (1-10 declared but not enforced in schema), no guidance on expected output structure. Error handling is absent, no recovery guidance if recipes fail to load or API calls timeout. Output schemas are undocumented; LLMs cannot predict response structure. Tool composition is reasonable (single responsibility), but parameter descriptions are sparse and lack actionable format guidance.
获取所有菜谱
根据分类查询菜谱,可选分类有: 水产, 早餐, 荤菜, 主食等
根据用户的忌口、过敏原、人数智能推荐菜谱,创建一周的膳食计划以及大致的购物清单
不知道吃什么?根据人数直接推荐适合的菜品组合
getRecipesByCategory enum is empty despite claiming to constrain values. Schema shows enum:[] but description lists categories. LLM cannot validate input and will hallucinate category names.
No output schemas documented. Tools return JSON text but LLMs cannot predict field structure (e.g., does getAllRecipes return {recipes: [...]} or just [...]?). Blocks downstream tool chaining.
Descriptions are too short (10-80 chars vs. 50-200 char baseline). 'Get all recipes' and '根据分类查询菜谱' lack context on when to use each tool, what data is returned, or prerequisites. LLMs cannot reliably select the right tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If remote recipe fetch fails (line: fetchRecipes), server exits silently. No tool-level error messages to guide LLM retry logic or fallback strategies.
Parameter 'no_param' in getAllRecipes is a code smell. Zod schema accepts optional string but description says '无参数' (no parameter). Tool should accept zero parameters, not a meaningless optional string.