mcp-mealie
Allows interaction with a Mealie instance, providing tools for managing recipes, meal plans, and cookbooks, including searching, creating, updating, and deleting recipes, planning meals, and organizing cookbooks.
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., "@mcp-mealieWhat's on the meal plan for today?"
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.
๐ฝ๏ธ mcp-mealie
An MCP server for Mealie, built for agents rather than for API coverage.
Twenty-five curated tools over recipes, meal plans, cookbooks, and library cleanup, with responses trimmed hard enough that a recipe costs a few hundred tokens instead of a few thousand โ and sent once, not in the two copies MCP would otherwise put on the wire.
Works with any MCP client that speaks stdio: Claude Code, Claude Desktop, Cursor, Windsurf, Zed.
๐ Install
No clone or virtualenv needed โ uvx builds it straight from the tag.
{
"command": "uvx",
"args": [
"--from",
"git+https://github.com/mgummich/mcp-mealie@v0.3.1",
"mcp-mealie"
],
"env": {
"MEALIE_URL": "https://mealie.example.com",
"MEALIE_API_TOKEN": "your-token"
}
}Create the token in Mealie under Settings โ API Tokens.
Not on PyPI yet, so installs come from git โuvx mcp-mealie on its own
will not resolve. Keep the @v0.3.1 pin: without a tag you get whatever
main holds the day uv resolves it.
New to this? The howto
(docs/HOWTO.md) walks the whole path in order โ token,
read-only first session, first writes, and the behaviors that surprise people
once. Full docs, including the
changelog, live at
mgummich.github.io/mcp-mealie.
Claude Code
claude mcp add mealie \
--env MEALIE_URL=https://mealie.example.com \
--env MEALIE_API_TOKEN=your-token \
-- uvx --from git+https://github.com/mgummich/mcp-mealie@v0.3.1 mcp-mealieClaude Desktop, Cursor, Windsurf, Zed
Add the JSON block above under mcpServers in the client's config file.
From a local clone
Working on the server itself? Point the client at the checkout and every edit lands on the next restart, no push and no reinstall:
claude mcp add mealie -- uv run --directory /path/to/mcp-mealie mcp-mealie--directory is what makes uv resolve the project from the checkout rather
than from the client's working directory. Credentials can come from the repo's
own .env here, so the --env flags are optional.
Updating
uvx caches the revision it first resolved, so a plain restart keeps running
the old one. To move to a newer release, change the tag in the command and drop
the cached build:
uv cache clean mcp-mealie # then restart the MCP clientRestart the client after any config change; it only reads the file at startup. Released versions are listed in the changelog.
Related MCP server: Mealie MCP Server
โ๏ธ Configuration
Variable | Required | Default | Purpose |
| โ | โ | Base URL of your Mealie instance |
| โ | โ | Long-lived API token |
| โ |
| Hide every write tool |
| โ |
| Set false for self-signed certs (homelab only) |
| โ |
| Log verbosity, to stderr |
Booleans accept 1/true/yes/on and their negations. An unrecognized value is a
startup error rather than a silent false.
These can also live in a .env file in the working directory (or any parent) โ
copy .env.example to .env and fill it in. Real environment variables always
take precedence over the file.
Requires Mealie2.0 or newer. The server checks at startup and refuses to
run against 1.x, which has no /api/households endpoints. CI tests against
2.8.0; 3.x is in use and works, but is not covered by an automated run.
๐งฐ Tools
Category | Tools |
๐ฅ Recipes |
|
๐ Meal plans |
|
๐ Cookbooks |
|
๐ Library reports |
|
๐ง Other |
|
With MEALIE_READ_ONLY=true, twelve read tools remain.
Once connected, ask in plain language โ the agent picks the tools:
๐ฌ What's for dinner this week?
๐ฌ Import https://example.com/that-curry-recipe and tag it "Weeknight".
๐ฌ Plan a random week of dinners, no repeats from last week.
๐ฌ I have "scallion" and "spring onion" as separate foods โ merge them.
โจ Things it does for you
Ingredients as plain text.
create_recipeandupdate_recipeaccept["2 cups flour", "pinch of salt"]and run them through Mealie's parser. Structured objects work too; the two can be mixed. That also makesupdate_recipethe repair for an import that came back empty, which the import tells you about rather than leaving to be discovered later.Tags by name. Mealie's API needs tag objects with a name and a slug. Pass
["Vegan"]and the server resolves or creates it, then tells you which ones were new.Updates don't wipe tags. Mealie's PATCH replaces list fields wholesale.
update_recipemerges tags, categories, and tools by default; passreplace_tagsto overwrite. Renaming a recipe changes its slug โ Mealie derives one from the other โ so the result hands back the new one.Taxonomy cleanup without a script.
manage_taxonomylists (paged, with the total), creates, renames, updates, and deletes foods, units, labels, tags, categories, and tools โ and merges duplicate foods or units through Mealie's own merge endpoints, so every recipe that used the loser is repointed.A random week is one call. Mealie's random endpoint fills one day per request.
random_meal_planloops for you, capped at 14 days.Usage rollups in one call. Mealie has no "how many recipes use this food" endpoint.
library_stats("foods")sweeps the library server-side and returns the most-used foods with their counts plus every unused one โ the answer to "is this safe to delete" without a search per name.Retag a whole shelf at once.
bulk_tag_recipes(slugs, tags=["Weeknight"])files any number of recipes through Mealie's bulk endpoints in one call, creating names that do not exist yet. It only adds; removing still goes throughupdate_recipewithreplace_tags.Batch taxonomy writes.
manage_taxonomy(action="update", items=[...])runs twenty-five renames in one call, and reports per-item failures instead of stopping at the first bad id.Cookbook filters without the syntax.
create_cookbook(tags=["Vegan"])builds thequeryFilterStringfor you, matching your names to Mealie's stored casing.update_cookbookre-filters in place, so the id survives.Sweeps without a call per recipe.
search_recipes(fields=["slug", "tags"])projects results the wayget_recipedoes, so surveying the library is one paged search rather than N follow-up reads.A recipe Mealie chokes on still deletes. Some rows make Mealie's own delete answer 500.
delete_recipefalls back to the bulk endpoint, which gets through, and says so in the result. A typo'd slug still fails.
๐ก๏ธ Safety
MEALIE_READ_ONLY=trueprevents write tools from being registered at all.delete_reciperequires the slug twice:delete_recipe(slug, confirm_slug).Write requests are never retried โ Mealie has no idempotency key, and a retried create would duplicate the recipe.
๐ Agent skill
The workflows the tool list alone doesn't teach โ planning a week without
repeats, filing an imported recipe, writing cookbook filters, cleaning up a
library rollup-first โ live in mealie-skill, which detects this
server and drives it. It builds for Claude Code, Antigravity, Cursor, and
AGENTS.md.
This repository no longer ships its own copy: two skills for one server meant two descriptions in every prompt and two places for the same guidance to drift.
๐ ๏ธ Development
uv sync --extra dev # creates .venv from the committed uv.lock
uv run --extra dev pre-commit install # run the lint gates on every commit
uv run --extra dev pytest # unit tests, fully offline
uv run --extra dev ruff check .
uv run --extra dev ruff format .
uv run --extra dev mypy # type-checks src/pre-commit run --all-files runs the same gates CI does.
Unit tests run entirely offline: shape.py against captured fixtures,
client.py against mocked HTTP.
./scripts/integration.sh # needs Docker: throwaway Mealie on port 19925The integration suite spins up a real Mealie in Docker, runs
tests/integration/ against it, and tears everything down.
scripts/smoke.py hits a live instance of your choosing on demand.
docs/superpowers/specs/2026-08-10-mealie-mcp-current-state.md
describes the server as built โ every tool with its endpoint, the caches, the
write semantics, and which 86% of Mealie's API this deliberately does not
expose.
๐ Related
Knuckles-Team/mealie-mcp takes the opposite approach โ it generates 247 tools from Mealie's OpenAPI spec, one per endpoint. Use it if you want complete API coverage. Use this one if you want a small tool list and short responses.
๐ License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server for Mealie that exposes its REST API to manage recipes, meal plans, shopping lists, cookbooks, and taxonomy through natural language.75MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for managing recipes, meal plans, shopping lists, and more through a self-hosted Mealie instance.1MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for MealMastery AI meal planning that enables users to manage meal plans, recipes, and grocery lists through natural language conversation with AI agents like Claude.67MIT
- AlicenseNot gradedqualityAmaintenanceA MCP server for Mealie recipe management. Exposes 43 tools and 1 prompt for AI assistants to search, create, and manage recipes, meal plans, shopping lists, categories, and tags.7677MIT
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for generating rough-draft project plans from natural-language prompts.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoโฆ
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mgummich/mcp-mealie'
If you have feedback or need assistance with the MCP directory API, please join our Discord server