MCP server for Old Family Recipe — let any AI assistant save, search, OCR-import, and meal-plan family recipes (with provenance) against a real production cookbook.
Strong foundation with 13 well-named tools covering a coherent domain (recipes, meal planning, family sharing). All tools have descriptions and input schemas are present and mostly complete. Naming follows verb_noun convention (recipe_create, recipe_search, meal_plan_update). However, several parameter descriptions lack specificity about constraints, formats, and error recovery. Output schemas are not documented in the provided source. Error handling guidance is minimal. The mcp.json manifest is well-structured but tool descriptions there are abbreviated summaries, not the full LLM-optimized descriptions needed for agent selection.
Invite a family member with optional relationship (sister, spouse, cousin, etc.).
Read the invite graph for your family with each member's relationshipToInviter.
Get a presigned URL to upload an image (recipe photo, recipe card scan).
Get your meal plan for a given week.
Update your meal plan — set meals for one or more weeks. Pass either `mealPlans` (multi-week, pre-shaped) OR the `week` + `meals` pair (single week, wrapped server-side). Each slot is { day: 0-6 (Sun=0..Sat=6), type: 'Breakfast'|'Lunch'|'Dinner'|'Snack', recipeId?: '<uuid>' }. Day-name strings ('Monday', 'mon') and lowercase types ('lunch') are auto-normalized to the int + canonical case the backend requires, so don't worry if your model emits the human-friendly form first.
Output schemas not documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure. recipe_list, recipe_search, sage_chat, meal_plan_get, family_tree all lack documented return types.
Parameter descriptions lack constraint details. 'limit' in recipe_list has no min/max bounds. 'query' in recipe_search has no length or format guidance. 'image_path' in recipe_import_image does not specify supported formats or size limits.
Destructive operations (recipe_delete) lack confirmation or dry-run support. No guidance on recovery if deletion is accidental. Error responses not documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Create a recipe in your Old Family Recipe cookbook. Include ingredients, instructions, and optionally who the recipe is from (source_person), the story behind it, and the year it originated.
Delete a recipe from your cookbook.
Import a recipe from a photo of a handwritten recipe card. AI reads the card (even if upside down or hard to read) and creates a structured recipe. Optionally add who the recipe is from and the story behind it.
List recipes in your Old Family Recipe cookbook.
Search your Old Family Recipe cookbook by keyword, ingredient, or tag.
Update an existing recipe in your cookbook.
Talk to Sage — your personalized AI cooking companion. Sage knows your family's recipes, dietary preferences, what your kids won't eat, and your cooking history. Ask her anything about cooking, ingredients, substitutions, or your family's recipes. She remembers everything.
Ask Sage to plan your family's meals for the week. She plans from your own cookbook first, fills gaps with new ideas that match your family's taste, and considers busy nights vs relaxed nights. Tell her about your family and she'll build a plan.
meal_plan_update description is verbose and complex (200+ chars) with nested object structures that may confuse LLM parsing. Day normalization ('Monday' → 1) and type normalization ('lunch' → 'Lunch') are mentioned but not formalized as constraints.
No error handling guidance documented. Tools do not specify what errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'if recipe not found, try recipe_search').