MCP server for MealMastery AI meal planning - integrate with Claude Desktop, ChatGPT, VS Code, and other AI agents
Strong foundation with 22 well-named tools, comprehensive schemas, and clear descriptions. All tools have input schemas with proper JSON Schema types and constraints (UUID patterns, enums, min/max bounds). Descriptions average ~180 chars and explain WHEN to use each tool. However, output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling guidance is absent. Tool annotations (readOnlyHint, destructiveHint) are declared in metadata but not visible in schema definitions. Some parameter descriptions could be more explicit about dependencies and constraints.
Send a grocery list to a connected provider (Instacart or Kroger) for checkout. Supports dry-run mode to preview item matching before committing. Returns a cart link when successful.
Generate a new AI meal and insert it into an empty slot in an existing plan (specific day + meal type). Use this to fill gaps in a plan. To replace an existing meal, use regenerate_meal instead. This operation takes 15-30 seconds and counts against quota.
Generate a consolidated grocery list from a meal plan. Ingredients are combined, converted to standard grocery quantities, and grouped by store category (produce, dairy, etc.). Requires an existing meal plan -- generate one with generate_meal_plan first if needed.
Generate a personalized weekly meal plan using AI. Provide a natural language prompt describing what the user wants (e.g. 'healthy Mediterranean meals for a family of 4'). The AI considers the user's dietary preferences, allergies, and skill level automatically. This operation takes 30-60 seconds and counts against the user's subscription quota. Check get_user_context or get_subscription_status first to ensure the user has remaining quota.
List the user's connected grocery providers (Instacart, Kroger, etc.) with connection status. Use this before calling checkout_grocery_list to see which providers are available.
Output schemas not documented. LLMs cannot predict response structure for tool chaining. E.g., generate_meal_plan returns a meal_plan_id, but response format is not specified in tool definition.
Error handling guidance absent. Tools like generate_meal_plan (quota-dependent) and checkout_grocery_list (provider-dependent) lack recovery hints. LLMs cannot self-correct on failure.
Tool annotations (readOnlyHint, destructiveHint) declared in metadata but not integrated into schema definitions. remove_meal is destructive but LLM cannot infer this from schema alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Retrieve a grocery list by ID with all items grouped by store category (produce, dairy, etc.) and their check-off/exclusion status. Use this to show the user their shopping list or before calling checkout_grocery_list. Get the ID from list_grocery_lists or from the result of generate_grocery_list.
Get the user's most recent meal plan. Use this to understand what meals are currently planned before making changes or generating a new plan.
Retrieve a specific meal plan by its ID with all meals, nutritional info, and recipes. Use this when you have a plan ID from list_meal_plans or from a previous conversation. For the most recent plan, prefer get_latest_meal_plan which doesn't require an ID.
Retrieve a recipe by ID with full instructions, ingredients, nutrition facts, and user ratings. Use this to show detailed recipe information or before saving/rating a recipe.
Check the user's subscription plan, daily API quota, and remaining requests. Use this before expensive operations like generate_meal_plan to ensure the user has quota remaining.
Get the user's profile, dietary preferences, allergies, excluded ingredients, cooking skill level, household size, and budget preference. Use this to understand the user's constraints before generating meal plans or making recommendations.
List the user's favorite recipes in reverse chronological order (most recently favorited first). Returns recipe metadata (title, cuisine, prep time) without full details. Use get_recipe with a specific ID to get complete instructions and nutrition info.
List the user's grocery lists in reverse chronological order with metadata (item count, order status, associated meal plan). Use this to find a grocery list ID for get_grocery_list or checkout_grocery_list.
List the user's meal plan history in reverse chronological order. Returns plan metadata (title, date, meal count) without full meal details. Use get_meal_plan with a specific ID to get complete meals, ingredients, and recipes.
List recipes the user has rated, in reverse chronological order (most recently rated first). Returns recipe metadata with the user's rating. Use get_recipe with a specific ID to get full instructions and nutrition info.
Rate a recipe on a scale of 1-5 stars. Your rating helps personalize future meal plan recommendations.
Replace a single meal in an existing plan with a new AI-generated meal. Provide an optional prompt to guide the replacement (e.g. 'something Thai' or 'quicker to prepare'). This operation takes 15-30 seconds and counts against quota.
Remove a meal from an existing plan. The plan will have one fewer meal after this operation.
Save a recipe to the user's favorites. The recipe will appear in list_favorite_recipes and can be referenced in future meal plans.
Remove a recipe from the user's favorites. The recipe will no longer appear in list_favorite_recipes.
Update grocery list items in bulk -- check off items, exclude items, or adjust quantities. Provide an array of updates, each specifying the item index and the fields to change.
Update the user's dietary preferences, allergies, excluded ingredients, cooking skill, household size, or budget preference. Changes take effect immediately and affect all future meal plan generations.
Parameter dependency documentation incomplete. update_grocery_items accepts 'checked', 'excluded', 'quantity' but does not document mutual exclusivity or interaction rules.
Pagination limits not enforced in descriptions. list_meal_plans and list_grocery_lists accept limit up to 50, but descriptions do not warn about context window impact of large result sets.