# recipe-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/blaideinc/recipe-mcp  
**GitHub Stars:** 1  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/recipe-mcp

## Description
Generate and remix recipes using cookwith.co

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "recipe-mcp": {
    "command": "npx",
    "args": ["-y","@cookwith/recipe-mcp"]
  }
}
```

## Documentation & README

# 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

1. Install the MCP server:
```bash
npm install -g @cookwith/recipe-mcp
```

2. Add to your Claude Desktop configuration:
   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "recipe-mcp": {
      "command": "npx",
      "args": ["@cookwith/recipe-mcp"],
      "env": {
        "COOKWITH_API_URL": "https://cookwith.co"
      }
    }
  }
}
```

3. Restart Claude Desktop

### For Development

```bash
# Clone the repository
git clone https://github.com/cookwith/recipe-mcp.git
cd recipe-mcp

# Install dependencies
npm install

# Run in development mode
npm run dev
```

## Usage Examples

### Generate a Recipe

```typescript
// In Claude Desktop, you can say:
"Generate a healthy Mediterranean pasta dish with lots of vegetables"

// The tool will be called with:
{
  "prompt": "A healthy Mediterranean pasta dish with lots of vegetables",
  "dietaryRestrictions": ["vegetarian"],
  "calories": "450",
  "servings": 4
}
```

### Transform a Recipe

```typescript
// After generating or providing a recipe:
"Make this recipe vegan and reduce the calories by 200"

// The tool will be called with:
{
  "recipe": { /* existing recipe object */ },
  "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

```typescript
interface Recipe {
  title: string;
  description: string;
  ingredients: string[];      // e.g., ["2 cups flour", "1 tsp salt"]
  instructions: string[];      // Step-by-step instructions
  servings: number;
  prepTime?: number;          // Minutes
  cookTime?: number;          // Minutes
  totalTime?: number;         // Minutes
  cuisine?: string;           // e.g., "Italian", "Mexican"
  course?: string;            // e.g., "main", "dessert"
  difficulty?: string;        // e.g., "easy", "medium", "hard"
  calories?: number;          // Per serving
  protein?: number;           // Grams per serving
  carbs?: number;            // Grams per serving
  fat?: number;              // Grams per serving
  fiber?: number;            // Grams per serving
  sugar?: number;            // Grams per serving
  sodium?: number;           // Milligrams per serving
}
```

## Configuration

### Environment Variables

- `COOKWITH_API_URL` - API endpoint (default: https://cookwith.co)

### Custom API Endpoint

For development or self-hosted instances:

```bash
export COOKWITH_API_URL=http://localhost:3000
npx @cookwith/recipe-mcp
```

## Examples

### Basic Recipe Generation

```javascript
// Request
{
  "prompt": "Quick and easy chicken stir-fry"
}

// Response
{
  "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

```javascript
// Request
{
  "recipe": {
    "title": "Classic Beef Lasagna",
    "ingredients": ["1 lb ground beef", "ricotta cheese", ...],
    // ... full recipe
  },
  "instructions": "Make this vegetarian and lower in calories"
}

// Response
{
  "title": "Vegetarian Light Lasagna",
  "description": "A healthier vegetarian version...",
  "ingredients": [
    "2 cups chopped mushrooms",
    "1 cup low-fat ricotta",
    // ... transformed ingredients
  ],
  // ... rest of transformed recipe
}
```

## 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](https://github.com/blaideinc/recipe-mcp/blob/HEAD/CONTRIBUTING.md) for details.

## License

MIT License - see [LICENSE](https://github.com/blaideinc/recipe-mcp/blob/HEAD/LICENSE) file for details.

## Support

- 🐛 [Report Issues](https://github.com/blaideinc/recipe-mcp/issues)
- 💬 [Discussions](https://github.com/blaideinc/recipe-mcp/discussions)
- 📧 Email: support@blaide.com

## Powered By

- [Cookwith](https://cookwith.co) - AI-powered cooking platform
- [OpenAI GPT-4](https://openai.com) - Recipe generation
- [Model Context Protocol](https://modelcontextprotocol.io) - Tool integration
