Recipe MCP Server
An MCP (Model Context Protocol) server that provides AI-powered recipe generation and transformation tools. Generate personalized recipes based on dietary preferences, transform existing recipes to meet nutritional goals, and more.
Features
- 🍳 Generate Recipes - Create custom recipes from natural language descriptions
- 🔄 Transform Recipes - Modify existing recipes (make vegan, adjust calories, etc.)
- 🥗 Dietary Support - Handle allergies, restrictions, and food preferences
- 📊 Nutrition Goals - Target specific calorie and protein requirements
- 🆓 Open Access - No API key required (rate limited)
Installation
For Claude Desktop
npm install -g @cookwith/recipe-mcp
- Add to your Claude Desktop configuration:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"recipe-mcp": {
"command": "npx",
"args": ["@cookwith/recipe-mcp"],
"env": {
"COOKWITH_API_URL": "https://cookwith.co"
}
}
}
}
For Development
git clone https://github.com/cookwith/recipe-mcp.git
cd recipe-mcp
npm install
npm run dev
Usage Examples
Generate a Recipe
"Generate a healthy Mediterranean pasta dish with lots of vegetables"
{
"prompt": "A healthy Mediterranean pasta dish with lots of vegetables",
"dietaryRestrictions": ["vegetarian"],
"calories": "450",
"servings": 4
}
Transform a Recipe
"Make this recipe vegan and reduce the calories by 200"
{
"recipe": { },
"instructions": "Make this vegan and reduce calories by 200",
"calories": "350"
}
Tools
generate_recipe
Generate a new recipe based on natural language instructions.
Parameters:
prompt (string, required) - Natural language description
dietaryRestrictions (string[], optional) - e.g., ["vegetarian", "gluten-free"]
allergies (string[], optional) - Ingredients to avoid
dislikes (string[], optional) - Foods to exclude
calories (string, optional) - Target calories per serving
protein (string, optional) - Target protein in grams
servings (number, optional) - Number of servings (1-20, default: 4)
transform_recipe
Transform an existing recipe based on instructions.
Parameters:
recipe (object, required) - The recipe to transform
instructions (string, required) - How to modify the recipe
calories (string, optional) - New target calories
protein (string, optional) - New target protein
servings (number, optional) - New number of servings
Rate Limits
The public API has the following rate limits:
- Anonymous Access: 20 requests per hour per IP address
- No authentication required
- Retry-After header provided when limit exceeded
Recipe Object Format
interface Recipe {
title: string;
description: string;
ingredients: string[];
instructions: string[];
servings: number;
prepTime?: number;
cookTime?: number;
totalTime?: number;
cuisine?: string;
course?: string;
difficulty?: string;
calories?: number;
protein?: number;
carbs?: number;
fat?: number;
fiber?: number;
sugar?: number;
sodium?: number;
}
Configuration
Environment Variables
Custom API Endpoint
For development or self-hosted instances:
export COOKWITH_API_URL=http://localhost:3000
npx @cookwith/recipe-mcp
Examples
Basic Recipe Generation
{
"prompt": "Quick and easy chicken stir-fry"
}
{
"title": "Quick Chicken Stir-Fry",
"description": "A delicious and speedy chicken stir-fry...",
"ingredients": [
"2 chicken breasts, sliced",
"2 cups mixed vegetables",
"3 tbsp soy sauce",
],
"instructions": [
"Heat oil in a large wok or skillet",
"Add chicken and cook until golden",
],
"servings": 4,
"prepTime": 10,
"cookTime": 15,
"calories": 320,
"protein": 28
}
Recipe Transformation
{
"recipe": {
"title": "Classic Beef Lasagna",
"ingredients": ["1 lb ground beef", "ricotta cheese", ...],
},
"instructions": "Make this vegetarian and lower in calories"
}
{
"title": "Vegetarian Light Lasagna",
"description": "A healthier vegetarian version...",
"ingredients": [
"2 cups chopped mushrooms",
"1 cup low-fat ricotta",
],
}
Troubleshooting
Rate Limit Errors
If you receive a 429 error, you've exceeded the rate limit. Wait for the time specified in the retryAfter field before making another request.
Connection Issues
Ensure your internet connection is stable and the API endpoint is accessible.
Invalid Parameters
Check that your parameters match the expected format and constraints (e.g., servings between 1-20).
Contributing
Contributions are welcome! Please see our Contributing Guide for details.
License
MIT License - see LICENSE file for details.
Support
Powered By