Mealie MCP
Mealie MCP is a server that connects an MCP client to a self-hosted Mealie instance, allowing you to manage recipes, meal plans, shopping lists, and organizers.
Recipes
List/search recipes with optional filters (search term, category, tag, pagination)
Get full details of a recipe by its slug
Create a new blank recipe by name
Import a recipe automatically from a URL
Update a recipe's fields (description, yield, ingredients, instructions, etc.)
Delete a recipe
Get nutrition info for a recipe
Meal Plans
Get today's meals from the meal plan
List meal plans filtered by a date range
Create a meal plan entry (date, meal type: breakfast/lunch/dinner/side, optionally linked to a recipe)
Delete a meal plan entry by ID
Add a random recipe to the meal plan for a given date
Shopping Lists
List all shopping lists
Get a specific shopping list and its items by ID
Create a new shopping list
Add all ingredients of a recipe to a shopping list (with optional scaling)
Add a single item to a shopping list (with food, note, unit, and quantity)
Check/uncheck a shopping list item
Delete a shopping list
Organizers
List all recipe categories
List all recipe tags
Provides tools for interacting with a self-hosted Mealie instance, enabling management of recipes (list, search, create, import from URL, update, delete), meal plans (get today's meals, list date range, create/delete entries, add random recipe), shopping lists (list, get, create, delete, add recipe ingredients, add single item, check off items), and organizers (list categories and tags), as well as retrieving recipe nutrition information.
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 list all my recipes"
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
An MCP server that exposes a self-hosted Mealie instance to MCP clients like Claude — recipes, meal plans, shopping lists, and organizers (categories/tags).
What it does
Recipes — list/search, get details, create, import from a URL, update, delete
Meal Plans — get today's meals, list a date range, create/delete entries, add a random recipe
Shopping Lists — list, get, create, delete, add a recipe's ingredients, add a single item, check off items
Organizers — list categories and tags
Utilities — get a recipe's nutrition info
Related MCP server: Mealie MCP Server
Project layout
src/mealiemcp/
├── app.py # FastMCP instance + auth setup
├── config.py # environment variable loading
├── client.py # Mealie HTTP client factory
├── security.py # input validation (slug/id allowlists, SSRF guard)
├── audit.py # logs which tool was called, by whom, and when
├── recipes.py ┐
├── meal_plans.py ├─ tool modules, one per Mealie domain
├── shopping_lists.py │
├── organizers.py ┘
└── server.py # registers tool modules, entry point (main())
tests/ # unit tests (pytest)Setup
Requires uv.
uv sync
cp .env.example .env # fill in your Mealie URL and API token
uv run mealiemcpRun the tests with:
uv run pytestEnvironment variables (see src/mealiemcp/config.py for details):
Variable | Purpose |
| URL of your Mealie instance |
| Mealie API token this server uses to call Mealie |
|
|
| Bind address/port when using |
| Bearer token remote clients must present — required when |
|
|
A Dockerfile is included for running in streamable-http mode behind a reverse proxy.
Auth model
This is designed for a single user running their own instance, not a multi-tenant service. Remote access is a single shared bearer token (MCP_AUTH_TOKEN) rather than full OAuth — proportionate for one person's personal Mealie server. To limit the blast radius of a leaked token:
It has a hard expiry (
MCP_AUTH_TOKEN_EXPIRES_AT) and must be rotated periodicallyEvery tool call is logged (tool name, authenticated client, success/failure, duration) via
audit.py, so a misused token leaves a trace
License and disclaimer
This project is free to use, for any purpose, with no warranty of any kind. The author assumes no liability for any use of this software or any consequences arising from it — you use it entirely at your own risk. See the LICENSE file for the full terms.
This entire codebase was generated by AI. It has only been tested through the author's personal use against their own Mealie instance and has not been independently audited or reviewed. Review the code yourself before relying on it, especially before exposing it to a network.
Available Tools
21 toolsadd_random_meal_planC
Add a random recipe to the meal plan for a given date.
Inputs: date (required), entry_type. Returns: object
add_recipe_to_shopping_listC
Add all ingredients of a recipe to a shopping list.
Inputs: list_id (required), recipe_id (required), scale. Returns: object
add_shopping_itemC
Add a single item to a shopping list.
Inputs: note (required), list_id (required), food, unit, +1 more. Returns: object
check_shopping_itemC
Mark a shopping list item as checked or unchecked.
Inputs: item_id (required), checked. Returns: object
create_meal_planB
Create a meal plan entry. date is YYYY-MM-DD. entry_type is breakfast/lunch/dinner/side.
Inputs: date (required), text, title, recipe_id, +1 more. Returns: object
create_recipeB
Create a new blank recipe with the given name.
Inputs: name (required). Returns: object
create_shopping_listC
Create a new shopping list.
Inputs: name (required). Returns: object
delete_meal_planC
Delete a meal plan entry by ID.
Inputs: item_id (required). Returns: object
delete_recipeC
Delete a recipe by slug.
Inputs: slug (required). Returns: object
delete_shopping_listB
Delete a shopping list by ID.
Inputs: list_id (required). Returns: object
get_recipeA
Get full details of a recipe by its slug.
Inputs: slug (required). Returns: object
get_recipe_nutritionC
Get the nutrition info for a recipe.
Inputs: slug (required). Returns: object
get_shopping_listC
Get a shopping list and its items by ID.
Inputs: list_id (required). Returns: object
get_todays_mealsB
Get today's meal plan.
Inputs: no named parameters. Returns: object
import_recipe_from_urlC
Scrape and import a recipe from a URL.
Inputs: url (required). Returns: object
list_categoriesA
List all recipe categories.
Inputs: no named parameters. Returns: object
list_meal_plansB
List meal plans. Optionally filter by start/end date (YYYY-MM-DD).
Inputs: end_date, start_date. Returns: object
list_recipesC
List recipes, optionally filtering by search term, category, or tag.
Inputs: tag, page, search, category, +1 more. Returns: object
list_shopping_listsA
List all shopping lists.
Inputs: no named parameters. Returns: object
list_tagsA
List all recipe tags.
Inputs: no named parameters. Returns: object
update_recipeC
Update a recipe. Pass a dict with the fields to update (e.g. description, recipeYield, recipeIngredient, recipeInstructions).
Inputs: data (required), slug (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Tools are mostly distinct, with slight overlap between add_random_meal_plan and create_meal_plan, and between add_shopping_item and add_recipe_to_shopping_list. Descriptions are clear enough for an agent to choose correctly.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_recipe, list_recipes, delete_meal_plan). The naming is predictable and easy to understand.
With 21 tools, the set is slightly above the ideal range but still well-scoped for a meal planning and recipe management server. Each tool serves a clear purpose without excessive overlap.
The tool set covers most CRUD operations for recipes, meal plans, and shopping lists. Missing updates for meal plans and shopping lists, and deletion of individual shopping items, but core workflows are supported.
Maintenance
Related MCP Connectors
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Log, query, and edit expenses, budgets, and accounts in Manilo from any MCP-compatible AI assistant.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Mealie recipe databases through MCP clients like Claude Desktop.162MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Mealie for managing recipes, meal plans, shopping lists, foods, units, tags, categories, and more through MCP.MIT
- AlicenseBqualityCmaintenanceMCP server for Mealie that exposes its REST API to manage recipes, meal plans, shopping lists, cookbooks, and taxonomy through natural language.7554 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceConnects MCP clients like Claude to your Mealie recipe manager, enabling natural language search, creation, import, and updates of recipes.216 npmMIT