Mealie
Interact with your Mealie recipe database to manage and find recipes.
Mealie MCP Server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with your Mealie recipe database through clients like Claude Desktop.
⨠Features
š½ļø Recipe Management
- CRUD Operations: Create, read, update, patch, duplicate, and delete recipes
- Advanced Search: Filter by text, categories, tags, and tools with AND/OR logic
- Image Management: Upload images or scrape from URLs
- Asset Uploads: Attach documents and files to recipes
- Metadata Tracking: Mark recipes as made, track last made dates
š Shopping Lists
- List Management: Create, update, and delete shopping lists
- Item Operations: Add, update, check off, and remove items
- Bulk Operations: Create, update, or delete multiple items at once
- Recipe Integration: Automatically add recipe ingredients to shopping lists
š·ļø Organization
- Categories: Organize recipes with categories (Breakfast, Dinner, etc.)
- Tags: Tag recipes for easy filtering (Quick, Healthy, Family Favorite)
- Advanced Filtering: Search and filter with full pagination support
- Empty Detection: Find unused categories and tags
š Meal Planning
- Meal Plans: View and manage meal plans
- Bulk Creation: Add multiple meals at once
- Today's Menu: Quick access to today's planned meals
š Quick Start
Prerequisites
- Python 3.12+
- Running Mealie instance with API key
- Package manager uv
Installation
Option 1: Using fastmcp (Recommended)
Install the server directly with the fastmcp command:
fastmcp install src/server.py \
--env-var MEALIE_BASE_URL=https://your-mealie-instance.com \
--env-var MEALIE_API_KEY=your-mealie-api-key
Option 2: Manual Configuration
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"mealie-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/repo/src",
"run",
"server.py"
],
"env": {
"MEALIE_BASE_URL": "https://your-mealie-instance.com",
"MEALIE_API_KEY": "your-mealie-api-key"
}
}
}
}
Restart Claude Desktop to load the server.
š Usage Examples
Recipe Operations
"Search for chicken recipes"
"Create a new recipe for pasta carbonara"
"Duplicate my lasagna recipe"
"Mark the meatloaf recipe as made today"
"Upload an image for the chocolate cake recipe"
Shopping Lists
"Create a shopping list for this week"
"Add eggs and milk to my shopping list"
"Add all ingredients from the lasagna recipe to my shopping list"
"Check off milk on my shopping list"
"Delete all checked items from my shopping list"
Organization
"Show me all my recipe categories"
"Create a new tag called 'Quick Meals'"
"Find all recipes tagged with 'healthy'"
"Show me categories that have no recipes"
Advanced Filtering
"Find recipes that have both 'quick' AND 'healthy' tags"
"Search for breakfast recipes containing 'eggs'"
"Show me all vegetarian dinner recipes"
šÆ Available Tools
Recipe Tools (13 operations)
get_recipes- List/search recipes with advanced filteringget_recipe_detailed- Get complete recipe detailsget_recipe_concise- Get recipe summarycreate_recipe- Create new recipeupdate_recipe- Update recipe (full replacement)patch_recipe- Update specific fields onlyduplicate_recipe- Clone a recipemark_recipe_last_made- Update last made timestampset_recipe_image_from_url- Set image from URLupload_recipe_image_file- Upload image fileupload_recipe_asset_file- Upload document/assetdelete_recipe- Delete recipe
Shopping List Tools (14 operations)
get_shopping_lists- List all shopping listscreate_shopping_list- Create new listget_shopping_list- Get list by IDdelete_shopping_list- Delete listadd_recipe_to_shopping_list- Add recipe ingredientsremove_recipe_from_shopping_list- Remove recipe ingredientsget_shopping_list_items- List all itemsget_shopping_list_item- Get item by IDcreate_shopping_list_item- Create single itemcreate_shopping_list_items_bulk- Create multiple itemsupdate_shopping_list_item- Update item (preserves fields)update_shopping_list_items_bulk- Update multiple itemsdelete_shopping_list_item- Delete single itemdelete_shopping_list_items_bulk- Delete multiple items
Category Tools (7 operations)
get_categories- List/search categoriesget_empty_categories- Find unused categoriescreate_category- Create new categoryget_category- Get by IDget_category_by_slug- Get by slugupdate_category- Update categorydelete_category- Delete category
Tag Tools (7 operations)
get_tags- List/search tagsget_empty_tags- Find unused tagscreate_tag- Create new tagget_tag- Get by IDget_tag_by_slug- Get by slugupdate_tag- Update tagdelete_tag- Delete tag
Meal Plan Tools (4 operations)
get_all_mealplans- List meal planscreate_mealplan- Create meal plan entrycreate_mealplan_bulk- Create multiple entriesget_todays_mealplan- Get today's meals
Total: 45 tools providing comprehensive Mealie API coverage
š§ Development
Setup
- Clone the repository:
git clone <repository-url>
cd mealie-mcp-server
- Install dependencies:
uv sync
- Configure environment:
cp .env.template .env
# Edit .env with your Mealie instance details
- Run MCP inspector for testing:
uv run mcp dev src/server.py
Project Structure
mealie-mcp-server/
āāā src/
ā āāā mealie/ # API client mixins
ā ā āāā client.py # Base HTTP client
ā ā āāā recipe.py # Recipe operations
ā ā āāā shopping_list.py # Shopping list operations
ā ā āāā categories.py # Category operations
ā ā āāā tags.py # Tag operations
ā ā āāā mealplan.py # Meal plan operations
ā ā āāā __init__.py # MealieFetcher aggregator
ā āāā tools/ # MCP tool definitions
ā ā āāā recipe_tools.py
ā ā āāā shopping_list_tools.py
ā ā āāā categories_tools.py
ā ā āāā tags_tools.py
ā ā āāā mealplan_tools.py
ā ā āāā __init__.py
ā āāā models/ # Pydantic models
ā āāā server.py # MCP server entry point
ā āāā prompts.py # Server prompts
āāā CHANGELOG.md # Version history
āāā README.md
š Important Notes
Filtering by Tags/Categories
When filtering recipes, you must use slugs or UUIDs, not display names:
ā Correct:
"Get recipes with tags=['quick-meals', 'healthy']"
ā Incorrect:
"Get recipes with tags=['Quick Meals', 'Healthy']"
Use get_tags() or get_categories() first to find the correct slugs.
Field Preservation
When updating shopping list items, the server automatically preserves all existing fields. You only need to specify the fields you want to change:
# Only updates 'checked' field, preserves note, quantity, etc.
update_shopping_list_item(item_id="...", checked=True)
š Known Issues
None currently! All features have been tested end-to-end with Claude Desktop.
š Changelog
See CHANGELOG.md for a detailed list of changes and version history.
š¤ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Credits
- Based on the original mealie-mcp-server by @rldiao
- Mealie - The recipe management system
- FastMCP - The MCP framework
š Support
For issues and questions:
- Check the CHANGELOG.md for recent updates
- Review the Mealie API documentation
- Open an issue on GitHub
š Related Links
Related Servers
qa-use
Provides comprehensive browser automation for QA testing capabilities.
Umami MCP Server
Integrate Umami Analytics with any MCP client like Claude Desktop, VS Code, and more.
U301 URL Shortener
Create short URLs using the U301 URL Shortener service.
Google Sheets
Interact with Google Sheets using a Python-based MCP server and Google Apps Script.
@mcp-z/mcp-pdf
Create PDFs without leaving your workflow. Perfect for documentation, reports, and creative projects. Productive PDF generation with full Unicode and emoji support.
Atlassian Jira
Integrates AI with Atlassian Jira to manage projects, search for issues, and view development information like commits and pull requests.
Basecamp by CData
A read-only MCP server by CData that allows LLMs to query live Basecamp data.
waitlister-mcp
MCP server for the Waitlister API. Manage your waitlist subscribers, track signups, and log views through AI assistants like Claude, Cursor, and Windsurf.
eSignatures
Contract and template management for drafting, reviewing, and sending binding contracts.
Browser Control MCP
Enables AI agents to control a local browser, manage tabs, and conduct research via a browser extension.
