mealie-mcp-ts
Allows interaction with a Mealie instance, providing tools for managing recipes, meal plans, shopping lists, categories, tags, and foods.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mealie-mcp-ts Add ingredients from 'Chicken Tikka Masala' to my shopping list"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mealie MCP Server
An MCP (Model Context Protocol) server that enables LLMs to interact with Mealie - a self-hosted recipe manager and meal planner.
Features
Recipe Management: List, view, create, update, and delete recipes
Recipe Import: Import recipes from URLs (supports most recipe websites)
Ingredient Parsing: Automatic parsing of natural language ingredients (e.g., "2 cups flour")
Image Uploads: Upload images to recipes via base64 encoding
Meal Planning: Create and manage meal plans with date scheduling
Shopping Lists: Full CRUD for shopping list items, plus add recipe ingredients to lists
Organization: Manage categories and tags for recipe organization
Food Management: List and create food items
Related MCP server: Mealie MCP Server
Installation
# Clone the repository
git clone https://github.com/your-username/mealie-mcp.git
cd mealie-mcp
# Install dependencies
pnpm install
# Build
pnpm run buildConfiguration
Create a .env file based on .env.example:
cp .env.example .envRequired environment variables:
Variable | Description |
| URL of your Mealie instance (e.g., |
| API key from Mealie (Settings → API Tokens) |
| (Optional) Comma-separated list of tools to enable |
Usage
With Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mealie": {
"command": "node",
"args": ["/path/to/mealie-mcp/dist/index.js"],
"env": {
"MEALIE_URL": "http://localhost:9925",
"MEALIE_API_KEY": "your-api-key"
}
}
}
}Remote HTTP mode (e.g. on a NAS)
For running the server on a different machine (Synology NAS, home server, etc.), use the HTTP transport. The SDK's Streamable HTTP transport lets Claude Desktop connect over the network.
Set these env vars:
MCP_TRANSPORT=http
PORT=3000
ALLOWED_HOSTS=nas.local,192.168.1.50 # Host header allowlist (DNS rebind protection)
MEALIE_URL=http://mealie:9000 # service name if on same compose network
MEALIE_API_KEY=...Claude Desktop config:
{
"mcpServers": {
"mealie": {
"url": "http://nas.local:3000/mcp"
}
}
}With Docker
The bundled Dockerfile defaults to HTTP transport on port 3000.
docker build -t mealie-mcp .
docker run -p 3000:3000 \
-e MEALIE_URL=http://host.docker.internal:9925 \
-e MEALIE_API_KEY=your-api-key \
-e ALLOWED_HOSTS=localhost \
mealie-mcpCompose service (attach to existing Mealie stack)
mealie-mcp:
build: ./mealie-mcp
container_name: mealie-mcp
restart: unless-stopped
ports:
- "3000:3000"
environment:
- MEALIE_URL=http://mealie:9000
- MEALIE_API_KEY=${MEALIE_API_KEY}
- ALLOWED_HOSTS=nas.local,192.168.1.50
depends_on:
- mealieAvailable Tools (25 total)
Recipes (6 tools)
Tool | Description |
| List all recipes with pagination |
| Get full recipe details by slug |
| Create a new recipe with ingredients and instructions |
| Update an existing recipe |
| Delete a recipe |
| Upload an image to a recipe (base64) |
Recipe Import (2 tools)
Tool | Description |
| Test if a URL can be scraped for recipe data |
| Import a recipe by scraping a URL |
Meal Planning (4 tools)
Tool | Description |
| List meal plans with optional date range filter |
| Get today's planned meals |
| Create a meal plan entry for a specific date |
| Delete a meal plan entry |
Shopping Lists (6 tools)
Tool | Description |
| List all shopping lists |
| Get shopping list with items |
| Add an item to a shopping list |
| Update an item (quantity, note, or check/uncheck) |
| Remove an item from a shopping list |
| Add all ingredients from a recipe to a list |
Organization (4 tools)
Tool | Description |
| List all recipe categories |
| Create a new category |
| List all recipe tags |
| Create a new tag |
Foods (2 tools)
Tool | Description |
| List all foods/ingredients |
| Create a new food item |
Debugging (1 tool)
Tool | Description |
| Get current API user info including group and household context |
Important: Group Context
Mealie scopes data by group and household. When you create an API token, it inherits the group context of your current session. If recipes or other items you create via the API aren't visible in your browser:
Use the
get_current_usertool to see which group the API token is associated withEnsure your browser session is viewing the same group (check the URL path)
If needed, switch groups in Mealie's UI, then generate a new API token
Development
# Run in development mode
pnpm run dev
# Lint
pnpm run lint
# Format
pnpm run format
# Build
pnpm run buildLocal Mealie Instance
Start a local Mealie instance for testing:
docker-compose up -dThis starts Mealie at http://localhost:9925.
License
MIT
Available Tools
27 toolsadd_recipe_to_shopping_listB
Add all ingredients from a recipe to a shopping list. Optionally specify quantity for multiple servings.
Inputs: recipeId (required), shoppingListId (required), recipeQuantity.
add_shopping_list_itemB
Add an item to a shopping list. Can specify quantity, unit, food, or just a note.
Inputs: shoppingListId (required), food, note, unit, +2 more.
create_categoryA
Create a new recipe category in Mealie. Categories help organize recipes into logical groups.
Inputs: name (required).
create_foodB
Create a new food/ingredient in Mealie.
Inputs: name (required), pluralName, description.
create_meal_planB
Create a new meal plan entry for a specific date. Can optionally link to an existing recipe.
Inputs: date (required), text, title, recipeId, +1 more.
create_recipeA
Create a new recipe with name, ingredients, and instructions. For ingredients, prefer passing originalText (e.g. "2 cups flour") and let the server parse — the structured {quantity, unit, food} form also works but originalText is simpler and handles unknown units/foods automatically.
Inputs: name (required), cookTime, prepTime, totalTime, +4 more.
create_recipe_from_htmlA
Create a recipe from raw HTML that you fetched yourself. Use this when create_recipe_from_url fails because the MCP server can't reach the site (anti-bot, geo-block, etc.). Fetch the HTML with your own browser tool and pass it here — the server parses it via Mealie or by extracting schema.org JSON-LD directly.
Inputs: html (required), sourceUrl, includeTags.
create_recipe_from_urlA
Create a new recipe by scraping data from a URL. Supports most recipe websites that use structured data (schema.org Recipe format). On failure, returns success:false with diagnostic info — check that before retrying or falling back to create_recipe.
Inputs: url (required), includeTags.
create_tagA
Create a new recipe tag in Mealie. Tags provide flexible labeling for recipes.
Inputs: name (required).
delete_meal_planB
Delete a meal plan entry by its ID.
Inputs: itemId (required).
delete_recipeA
Delete a recipe by its slug. This action cannot be undone.
Inputs: slug (required).
delete_shopping_list_itemA
Remove an item from a shopping list.
Inputs: itemId (required).
get_current_userA
Get information about the current API user, including their group and household. Useful for debugging permission issues when recipes or other items are not visible.
Inputs: no named parameters.
get_recipeA
Get a recipe by its slug. Returns full recipe details including ingredients and instructions.
Inputs: slug (required).
get_shopping_listA
Get a shopping list by ID. Returns the list with all items.
Inputs: id (required).
get_todays_meal_planA
Get today's meal plan entries. Returns all meals planned for the current day.
Inputs: no named parameters.
list_categoriesA
List all recipe categories in Mealie. Categories help organize recipes into groups like "Dinner", "Breakfast", "Italian", etc.
Inputs: page, search, perPage.
list_foodsA
List all foods/ingredients in Mealie. Can be filtered by search term.
Inputs: page, search, perPage.
list_meal_plansA
List meal plan entries within a date range. If no dates provided, returns all meal plans.
Inputs: endDate, startDate.
list_recipesA
List all recipes in Mealie. Returns recipe summaries with name, slug, description, and metadata.
Inputs: page, perPage.
list_shopping_listsA
List all shopping lists in Mealie.
Inputs: page, perPage.
list_tagsB
List all recipe tags in Mealie. Tags provide flexible labeling for recipes like "vegetarian", "gluten-free", "kid-friendly", etc.
Inputs: page, search, perPage.
parse_recipe_ingredientsA
Re-parse all ingredients for an existing recipe so each has proper quantity, unit, and food fields instead of free-text notes. Fetches the recipe, sends each ingredient note through the Mealie ingredient parser, creates any missing unit/food records, and saves the structured ingredients back to the recipe. Use this after importing a recipe from a URL whose ingredients came in as plain text.
Inputs: slug (required).
test_scrape_urlA
Test if a URL can be scraped for recipe data without actually creating a recipe. Useful for validating URLs before importing. Returns success:false when the scraper cannot parse the site.
Inputs: url (required).
update_recipeA
Update an existing recipe by slug. Only provided fields will be updated. For ingredients, prefer passing originalText (e.g. "2 cups flour") over structured {quantity, unit, food} — the server parses originalText and auto-resolves unit+food. Structured form also works and is auto-normalized, but originalText is simpler.
Inputs: slug (required), name, cookTime, prepTime, +5 more.
update_shopping_list_itemA
Update a shopping list item. Can modify quantity, note, or checked status (to mark items as purchased).
Inputs: itemId (required), note, checked, quantity.
upload_recipe_imageB
Upload an image for a recipe. Provide the image as base64-encoded data.
Inputs: slug (required), imageBase64 (required), fileName.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 27 tools
Most tools target distinct resources and actions clearly, with recipe CRUD, meal plans, shopping lists, foods, categories, tags, and user info separated. The three recipe creation methods (manual, URL, HTML) share intent but are differentiated by input source, and test_scrape_url adds a validation step. Shopping list item operations are distinct from adding a whole recipe's ingredients.
All tool names use a consistent snake_case verb_noun pattern (list_, get_, create_, delete_, update_, upload_, add_, test_, parse_). Even longer names like create_recipe_from_url or get_todays_meal_plan follow the verb-first convention. There are no camelCase or mixed naming styles.
27 tools is above the typical 'heavy' threshold, but the server covers many subdomains: recipes, meal plans, foods, shopping lists, categories, tags, user info, and URL scraping. Each tool has a defined role, though having three recipe creation variants inflates the count; a slightly leaner set could be achieved without losing functionality.
Core recipe management (CRUD plus image upload), meal plan basics, shopping list item operations, and URL scraping are well covered. However, there are notable gaps: no create_shopping_list or delete_shopping_list, no update/delete for categories or tags, no delete_food, and no update_meal_plan. These missing lifecycle operations could force users to rely on external tools or workarounds.
Maintenance
Related MCP Connectors
Search, save, organize, cook, and share recipes with any AI assistant.
Persistent food journal for AI assistants. Log meals, save recipes, plan meals and track nutrition.
Recipe search, ingredient matching, nutrition filters and a private cookbook for any AI agent.
Household meal planning: recipes, weekly meal plans, and grocery lists for your AI agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Mealie for recipe management, meal planning, and shopping list operations. Supports searching and managing recipes, creating meal plans, and generating shopping lists from recipes or meal plans.7MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Mealie recipe databases, allowing users to manage and query their recipes through natural language conversations.17 npmMIT
- AlicenseDqualityBmaintenanceProvides complete access to Mealie's API for managing recipes, meal plans, shopping lists, households, and more via natural language from AI assistants.28321MIT
- AlicenseBqualityBmaintenanceEnables AI agents to manage recipes, meal plans, shopping lists, recipe imports, Bring! grocery sync, Mercadona price lookups, and optional nutrition using a self-hosted Mealie instance.24AGPL 3.0