Mealie MCP
Exposes a self-hosted Mealie instance to MCP clients, enabling management of recipes, meal plans, shopping lists, and organizers through natural language.
README
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
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 mealiemcp
Run the tests with:
uv run pytest
Environment variables (see src/mealiemcp/config.py for details):
| Variable | Purpose |
|---|---|
MEALIE_BASE_URL |
URL of your Mealie instance |
MEALIE_API_TOKEN |
Mealie API token this server uses to call Mealie |
MCP_TRANSPORT |
stdio (default, for local clients like Claude Desktop/Code) or streamable-http (to expose over a network) |
MCP_HOST / MCP_PORT |
Bind address/port when using streamable-http |
MCP_AUTH_TOKEN |
Bearer token remote clients must present — required when MCP_TRANSPORT isn't stdio |
MCP_AUTH_TOKEN_EXPIRES_AT |
YYYY-MM-DD (UTC) — MCP_AUTH_TOKEN stops being accepted after this date, forcing periodic rotation. Required alongside MCP_AUTH_TOKEN |
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 periodically - Every 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.