Enables AI assistants to interact with Mealie for recipe management (search, create, update, import from URLs), meal planning (create, view, update meal plans), and shopping list operations (create lists, add items, generate from meal plans).
Click on "Install 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 Serversearch for chicken recipes for dinner this week"
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
A Model Context Protocol (MCP) server that enables AI assistants to interact with Mealie for recipe management, meal planning, and shopping lists.
Features
Tools (31 total)
Recipes
mealie_recipes_search- Search recipes by name, tags, or categoriesmealie_recipes_get- Get full recipe details including ingredients and instructionsmealie_recipes_list- List all recipes with paginationmealie_recipes_create- Create a new recipemealie_recipes_create_from_url- Import recipe by scraping a URLmealie_recipes_update- Update an existing recipemealie_recipes_update_structured_ingredients- Update recipe with structured ingredients from parsermealie_recipes_delete- Delete a recipe
Meal Planning
mealie_mealplans_list- List meal plans for a date rangemealie_mealplans_today- Get today's mealsmealie_mealplans_get- Get specific meal plan entrymealie_mealplans_get_date- Get meals for a specific datemealie_mealplans_create- Create meal plan entrymealie_mealplans_update- Update meal plan entrymealie_mealplans_delete- Delete meal plan entrymealie_mealplans_random- Get random meal suggestion
Shopping Lists
mealie_shopping_lists_list- List all shopping listsmealie_shopping_lists_get- Get shopping list with itemsmealie_shopping_lists_create- Create new shopping listmealie_shopping_lists_delete- Delete shopping listmealie_shopping_items_add- Add item to listmealie_shopping_items_add_bulk- Add multiple items at oncemealie_shopping_items_check- Mark item checked/uncheckedmealie_shopping_items_delete- Remove item from listmealie_shopping_add_recipe- Add recipe ingredients to listmealie_shopping_generate_from_mealplan- Generate shopping list from meal planmealie_shopping_clear_checked- Clear all checked items
Ingredient Parsing
mealie_parser_ingredient- Parse single ingredient string to structured formatmealie_parser_ingredients_batch- Parse multiple ingredient strings at once
Resources
recipes://list- Browse all recipesrecipes://{slug}- View specific recipemealplans://current- Current week's meal planmealplans://today- Today's mealsmealplans://{date}- Specific date's mealsshopping://lists- All shopping listsshopping://{list_id}- Specific shopping list
Prerequisites
Docker (or Podman)
A running Mealie instance
Mealie API token
Quick Start
1. Get the Docker Image
Option A: Pull from GitHub Container Registry (recommended)
docker pull ghcr.io/mdlopresti/mealie-mcp:latestOption B: Build from source
git clone https://github.com/mdlopresti/mealie-mcp.git
cd mealie-mcp
docker build -t mealie-mcp:latest .2. Get Your API Token
Log into your Mealie instance
Go to User Settings (click your name in sidebar)
Navigate to API Tokens
Create a new token (e.g., "MCP Server")
Copy the token immediately (it won't be shown again)
3. Configure Claude Code
Add to .mcp.json in your project root:
{
"mcpServers": {
"mealie": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MEALIE_URL=https://your-mealie-instance.com",
"-e", "MEALIE_API_TOKEN=your-api-token-here",
"ghcr.io/mdlopresti/mealie-mcp:latest"
]
}
}
}Then add mealie to your ~/.claude/settings.json:
{
"allowedMcpServers": [
{ "serverName": "mealie" }
]
}4. Test the Connection
Restart Claude Code and try:
Can you search for recipes in Mealie?Usage Examples
Clearing Optional Fields
To clear an optional field (remove its value), pass the special sentinel value "__CLEAR__":
# Remove recipe association from a meal plan entry
mealie_mealplans_update(
mealplan_id="abc-123",
recipe_id="__CLEAR__"
)
# Clear the title from an entry
mealie_mealplans_update(
mealplan_id="abc-123",
title="__CLEAR__"
)
# Clear the text/notes from an entry
mealie_mealplans_update(
mealplan_id="abc-123",
text="__CLEAR__"
)
# Clear multiple fields at once
mealie_mealplans_update(
mealplan_id="abc-123",
recipe_id="__CLEAR__",
title="__CLEAR__",
text="__CLEAR__"
)To leave a field unchanged, simply omit it from the call:
# Update only the date, preserving all other fields
mealie_mealplans_update(
mealplan_id="abc-123",
meal_date="2025-12-25"
)Development
Local Development (without Docker)
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export MEALIE_URL=https://your-mealie-instance.com
export MEALIE_API_TOKEN=your-api-token
# Run server
python -m src.serverRunning Tests
Unit/Integration Tests (mock API, always run):
# Run all tests except E2E
pytest -m "not e2e"
# Run all tests with coverage
pytest --cov=src --cov-report=term-missingEnd-to-End Tests (optional):
E2E tests validate against a real Mealie instance. Two modes are supported:
Docker E2E Tests (recommended - isolated environment):
# Install test dependencies
pip install -r requirements-dev.txt
# Run Docker E2E tests
pytest tests/e2e/test_docker_e2e.py -v
# These tests:
# - Start a containerized Mealie instance automatically
# - Run tests in isolated environment
# - Clean up containers and data after tests
# - Require Docker/Podman to be runningLive Instance E2E Tests (test against existing server):
# Set required environment variables
export MEALIE_E2E_URL="https://your-mealie-instance.com"
export MEALIE_E2E_TOKEN="your-test-api-token"
# Run E2E tests against live instance
pytest -m e2e
# These tests are skipped if environment variables are not setSee tests/e2e/README.md for detailed E2E testing documentation.
Note: Live instance E2E tests create and delete test resources. Use a test/development instance, not production!
Project Structure
mealie-mcp/
├── Dockerfile # Container definition
├── requirements.txt # Python dependencies
├── build.sh # Build helper script
└── src/
├── server.py # MCP server entry point
├── client.py # Mealie API client
├── tools/ # MCP tool implementations
│ ├── recipes.py
│ ├── mealplans.py
│ ├── shopping.py
│ └── parser.py
└── resources/ # MCP resource implementations
├── recipes.py
├── mealplans.py
└── shopping.pySecurity
Never commit API tokens - Use environment variables
The API token has full access to your Mealie account
Consider creating a dedicated Mealie user for the MCP server
Requirements
Python 3.12+
Mealie v1.0+ (tested with v3.6.1)
License
MIT
Contributing
Contributions welcome! Please open an issue or PR.
Related
Mealie - Self-hosted recipe manager
Model Context Protocol - MCP specification
FastMCP - Python MCP framework