spoonacular-mcp
# Spoonacular MCP Server
A Model Context Protocol (MCP) server that provides access to the [Spoonacular Food API](https://spoonacular.com/food-api/). This server enables AI assistants to search for recipes, get nutritional information, find ingredients, and more through the MCP protocol.
[](https://www.npmjs.com/package/spoonacular-mcp)
[](https://www.npmjs.com/package/spoonacular-mcp)
[](https://opensource.org/licenses/ISC)
## Features
- **Recipe Search**: Search for recipes by ingredients, diet, cuisine, and other criteria
- **Recipe Information**: Get detailed recipe information including ingredients, instructions, and nutrition
- **Ingredient Search**: Find and explore ingredient information
- **Nutrition Analysis**: Analyze nutrition for ingredient lists
- **Recipe by Ingredients**: Find recipes based on available ingredients
- **Random Recipes**: Get random recipe suggestions with optional filtering
## Quick Start
### Installation
```bash
npm install -g spoonacular-mcp
```
### Setup
1. **Get a Spoonacular API key** (free at https://spoonacular.com/food-api/console#Dashboard)
2. **Set your API key as an environment variable:**
```bash
# Windows (PowerShell)
$env:SPOONACULAR_API_KEY="your_api_key_here"
# macOS/Linux
export SPOONACULAR_API_KEY="your_api_key_here"
```
### Usage with MCP Clients
Add this configuration to your MCP client (Claude Desktop, etc.):
```json
{
"servers": {
"spoonacular": {
"command": "spoonacular-mcp",
"env": {
"SPOONACULAR_API_KEY": "your_api_key_here"
}
}
}
}
```
### Test the Installation
```bash
# Set your API key
export SPOONACULAR_API_KEY="your_key_here"
# Test the server
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | spoonacular-mcp
```
## Available Tools
### `search_recipes`
Search for recipes with various filters.
**Parameters:**
- `query` (string): Search query for recipes
- `number` (number, 1-100): Number of results (default: 10)
- `diet` (string, optional): Diet type (vegetarian, vegan, gluten-free, etc.)
- `intolerances` (string, optional): Comma-separated intolerances
- `includeIngredients` (string, optional): Required ingredients (comma-separated)
- `excludeIngredients` (string, optional): Ingredients to exclude (comma-separated)
- `type` (string, optional): Meal type (main course, side dish, dessert, etc.)
- `cuisine` (string, optional): Cuisine type (italian, mexican, chinese, etc.)
### `get_recipe_information`
Get detailed information about a specific recipe.
**Parameters:**
- `id` (number): Recipe ID
- `includeNutrition` (boolean): Include nutrition information (default: false)
### `search_ingredients`
Search for ingredients by name.
**Parameters:**
- `query` (string): Ingredient search query
- `number` (number, 1-100): Number of results (default: 10)
- `metaInformation` (boolean): Include meta information (default: false)
### `analyze_nutrition`
Analyze nutrition for a list of ingredients.
**Parameters:**
- `ingredientList` (string): List of ingredients, one per line
- `servings` (number): Number of servings
### `find_recipes_by_ingredients`
Find recipes based on available ingredients.
**Parameters:**
- `ingredients` (string): Comma-separated list of available ingredients
- `number` (number, 1-100): Number of recipes (default: 5)
- `ranking` (number, 1-2): Ranking strategy (1=maximize used, 2=minimize missing)
### `get_random_recipes`
Get random recipes with optional filtering.
**Parameters:**
- `number` (number, 1-100): Number of random recipes (default: 1)
- `tags` (string, optional): Comma-separated tags for filtering
## Development
To run in development mode:
```bash
npm run dev
```
To build:
```bash
npm run build
```
## API Rate Limits
The free Spoonacular API plan includes:
- 150 requests per day
- Rate limiting applies
Consider upgrading to a paid plan for production use.
## License
ISC
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
TDQS
Scored across 6 tools
Most tools have distinct purposes: search_recipes vs find_recipes_by_ingredients could be confused, but descriptions clarify the different focus (general search vs. ingredient-based). Overall, the set is well-disambiguated.
All tool names use snake_case and follow a verb_noun pattern, with slight variation: find_recipes_by_ingredients includes a preposition, and get_recipe_information vs get_random_recipes differ slightly in structure. Minor inconsistencies, but overall consistent.
6 tools cover the core functionalities of a recipe service: searching, getting details, ingredient lookup, nutrition analysis, and random recipes. The count is well-scoped without being too few or too many.
The tool set covers essential operations for a recipe discovery and analysis service: search by various criteria, get detailed info, ingredient search, nutrition analysis, and random selection. There are no obvious gaps for its intended domain.