loading…
Search for a command to run...
loading…
Preserve grandma's handwritten recipe cards before they're lost. 13 MCP tools to OCR-import cards from photos, capture the story behind each dish (who made it,
Preserve grandma's handwritten recipe cards before they're lost. 13 MCP tools to OCR-import cards from photos, capture the story behind each dish (who made it, when, why), search by family member, plan meals, and share with cousins — backed by a real cookbook app that prints as a hardcover heirloom. Free tier, no credit card.
The AI-native way to save and preserve family recipes. An open protocol + MCP server + OpenAPI spec so AI agents (Claude, ChatGPT, Cursor, Cline, Windsurf) can create, read, search, and preserve family recipes — with provenance as a first-class concern.
npm version npm downloads license MCP Claude spec site
@oldfamilyrecipe/mcp-server is an MCP server that gives any AI assistant 13 tools to save, search, OCR-import, and meal-plan family recipes against a real production cookbook app at oldfamilyrecipe.com. Free tier: 250 Sage AI messages/month + unlimited recipe storage, no credit card. Works with Claude Desktop, Claude Code, Cursor, Cline, Windsurf, and any MCP-compatible client.
npx -y @oldfamilyrecipe/mcp-server
Family recipes get lost. Generic recipe APIs treat dishes as commodities; we treat them as cultural artifacts.
The Recipe Protocol (URL scheme: recipe://) defines how AI agents work with family recipes — handwritten cards, magazine clippings, the dishes nobody wrote down. Every recipe carries who made it, when, and why as required fields, not metadata.
This repo is the developer-facing home of:
api.oldfamilyrecipe.com); covers recipes, Sage chat, image OCR import, meal plans, family invites, uploads, and API key managementmcp.json, ai-plugin.json) for AI tool catalogsThe rendered developer site at oldfamilyrecipe.ai lives in a separate repo (private — marketing/infra surface).
The consumer-facing app and API live at oldfamilyrecipe.com.
1. Get an API key: oldfamilyrecipe.ai/dashboard — free tier includes 250 Sage messages/month + unlimited recipe storage, no credit card.
2. Add to your MCP client config. For Claude Desktop, edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"oldfamilyrecipe": {
"command": "npx",
"args": ["-y", "@oldfamilyrecipe/mcp-server"],
"env": { "OFR_API_KEY": "ofr_your_api_key_here" }
}
}
}
Same pattern works for Claude Code, Cursor, Cline, Windsurf, and any MCP-compatible client.
3. Restart your client and ask:
"Save my mom's stuffing recipe from this photo." (attach an image)
Your AI will OCR the handwriting, structure the recipe, preserve the story, and save it to your cookbook.
| Tool | What it does |
|---|---|
recipe_create |
Create a recipe with ingredients, instructions, source person, story, origin year. |
recipe_import_image |
OCR a photo of a handwritten card into a structured recipe (server-side Vision). |
recipe_list |
List all recipes in your cookbook. |
recipe_search |
Search by keyword, ingredient, or tag. |
recipe_update |
Update an existing recipe. |
recipe_delete |
Delete a recipe. |
| Tool | What it does |
|---|---|
sage_chat |
Chat with Sage, your AI cooking companion who knows your family's recipes. |
sage_meal_plan |
Have Sage plan your week from your cookbook + new ideas. |
| Tool | What it does |
|---|---|
meal_plan_get |
Get the meal plan for a given week. |
meal_plan_update |
Set meals for specific days and slots. |
| Tool | What it does |
|---|---|
image_upload |
Get a presigned URL to upload a recipe photo or card scan. |
family_invite |
Invite a sibling, cousin, or kid to your shared family cookbook (captures relationship). |
family_tree |
Read the invite graph for your family — who invited whom, plus each member's relationshipToInviter. |
Once configured in Claude Desktop / Cursor / Cline, talk naturally — the AI picks the right tools.
Import a handwritten card:
"Save this recipe card — it's my grandma's from the 1960s." (attach photo) →
recipe_import_imagethenrecipe_create
Search by family member:
"Find all of Aunt Linda's desserts in our cookbook." →
recipe_search
Plan the week:
"Plan our dinners. Monday and Wednesday are busy, weekend is relaxed." →
sage_meal_plan, thenmeal_plan_update
Share with family:
"Invite my sister Maggie at [email protected] — make her an editor." →
family_invitewith{ email, role: "editor", relationship: "sister" }
Read the family tree:
"Who's in my family cookbook and how are we all related?" →
family_tree— returns each node'srelationshipToInviter(e.g. Maggie — sister)
Capture the story behind a dish:
"Save Dad's chili — he made it every Super Bowl Sunday from 1992 on." →
recipe_createwithsource_person: "Dad",story: "Made every Super Bowl Sunday",origin_year: "1992"
Photograph a recipe card → AI structures it with the story attached:
await recipe.create({
title: "Mama's Thanksgiving Stuffing",
ingredients: [
{ name: "Pepperidge Farm Stuffing", amount: "1", unit: "bag (14oz)" },
{ name: "chicken breast", amount: "2-3", unit: "pieces",
note: "skin on — makes broth better" },
{ name: "boiled eggs", amount: "5", unit: "chopped" }
],
instructions: [
"Boil chicken breast with skin on to make broth.",
"Chop 5 boiled eggs.",
"Mix stuffing, cream of celery, eggs, rice, and onion.",
"Pour broth until sticky consistency.",
"Bake at 375-400 until golden brown."
],
source_person: "Mama",
story: "Decoded from a crossed-out card only she could read.",
origin_year: "~1985"
})
The result lives at https://oldfamilyrecipe.com/recipes/<id> — viewable, editable, printable as a hardcover heirloom.
source_person, story, origin_year are required, not optional. Search by family member, by decade, by story.llms.txt for agent discovery, OpenAPI 3.1 spec for everything else.Read the full spec → oldfamilyrecipe.ai/spec
| Capability | OFR | Spoonacular | TheMealDB | Edamam |
|---|---|---|---|---|
| Official MCP server | ✅ | ❌ | ❌ | ❌ |
| Real users + paid product | ✅ | ✅ | ❌ (demo) | ✅ |
| OCR import of handwritten cards | ✅ | ❌ | ❌ | ❌ |
| Provenance fields (source person / story / year) | ✅ required | ❌ | ❌ | ❌ |
| Family-share with role + relationship graph | ✅ | ❌ | ❌ | ❌ |
| Print-on-demand cookbook output | ✅ | ❌ | ❌ | ❌ |
Open recipe:// protocol |
✅ | ❌ | ❌ | ❌ |
| OpenAPI 3.1 spec | ✅ | partial | ❌ | partial |
.well-known discovery manifests |
✅ | ❌ | ❌ | ❌ |
If you want to look up calories on a generic dish, use Edamam. If you want your AI to actually preserve and act on a family's recipes, use OFR.
.
├── mcp-server/ # @oldfamilyrecipe/mcp-server (published to npm)
├── spec/ # Recipe Protocol spec + OpenAPI 3.1
└── .well-known/ # mcp.json + ai-plugin.json discovery manifests
Each subdirectory has its own README. The rendered site at oldfamilyrecipe.ai is in a separate (private) repo.
This server is intended to be discoverable. If you maintain an AI tool registry, MCP catalog, or "awesome-mcp"-style list, the canonical metadata is:
oldfamilyrecipe)npx -y @oldfamilyrecipe/mcp-serverOFR_API_KEY env var (free key at oldfamilyrecipe.ai/dashboard)Family recipes — the handwritten ones, the dishes only one person remembers — are the artifacts most worth preserving and most likely to be lost. Generic recipe apps treat them as commodities. We're building a protocol that treats them as cultural artifacts and gives AI agents a clean, structured way to help families preserve them.
Built by Old Family Recipe. Made in North Carolina.
Issues + PRs welcome. The protocol is intentionally narrow — every change should answer "does this help families preserve their recipes?"
For small fixes (typos, broken links, doc improvements) just open a PR. For larger changes, open an issue first to discuss.
MIT — see LICENSE.
Run in your terminal:
claude mcp add old-family-recipe -- npx