{"id":"797a851a-e2cd-4f89-a2cc-3bafc24b651e","slug":"mymeal","kind":"mcp","name":"mymeal","summary":"Self-hosted recipes, AI meal planning, pantry & smart shopping lists — Home Assistant native (add-on + HACS integration, MCP, Assist voice)","owner":"Amantux","repoUrl":"https://github.com/Amantux/mymeal","license":"AGPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":1,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-07-19T21:06:10.000Z","addedAt":"2026-10-21T09:21:55.488Z","logoUrl":"https://avatars.githubusercontent.com/u/15953669?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["design-media"],"tags":["ai","hacs","home-assistant","home-assistant-addon","homeassistant","meal-planner","meal-planning","recipes"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-21T14:03:03.397Z","sample":false,"url":"https://conduits.dev/tools/mymeal","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\">\n  <img src=\"docs/banner.png\" alt=\"myMeal — recipes, AI meal planning & smart shopping lists\" width=\"820\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FAmantux%2Fmymeal\"><img src=\"https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg\" alt=\"Add add-on repository to My Home Assistant\"></a>\n  &nbsp;\n  <a href=\"https://my.home-assistant.io/redirect/hacs_repository/?owner=Amantux&repository=mymeal&category=integration\"><img src=\"https://my.home-assistant.io/badges/hacs_repository.svg\" alt=\"Add integration to HACS via My Home Assistant\"></a>\n</p>\n\n<p align=\"center\">\n  <sub><b>Left:</b> installs the add-on (runs myMeal). <b>Right:</b> installs the HACS integration (entities, calendar, voice).<br>\n  Most people want <b>both</b> — see <a href=\"#home-assistant\">Home Assistant</a>.</sub>\n</p>\n\n# myMeal\n\n[![HA validate](https://github.com/Amantux/mymeal/actions/workflows/ha-validate.yml/badge.svg)](https://github.com/Amantux/mymeal/actions/workflows/ha-validate.yml)\n[![CI](https://github.com/Amantux/mymeal/actions/workflows/ci.yml/badge.svg)](https://github.com/Amantux/mymeal/actions/workflows/ci.yml)\n[![HACS: custom](https://img.shields.io/badge/HACS-custom-41BDF5.svg)](https://hacs.xyz/docs/faq/custom_repositories)\n[![Home Assistant add-on](https://img.shields.io/badge/Home%20Assistant-add--on-41BDF5.svg?logo=home-assistant&logoColor=white)](https://www.home-assistant.io/addons/)\n[![Min HA version](https://img.shields.io/badge/Home%20Assistant-%E2%89%A5%202023.1.0-41BDF5.svg)](https://www.home-assistant.io/)\n[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE)\n\n**Self-hosted recipes, AI meal planning & smart shopping lists — with a\nHome Assistant cooking assistant built in.**\n\nmyMeal is a privacy-first, self-hosted kitchen companion. Keep your recipe\ncollection, let an AI help you plan the week and cook, track what's in your\nand generate consolidated shopping lists — all runnable standalone or as\na Home Assistant add-on with voice control through Assist.\n\n> **Status:** all five milestones shipped — core recipe management, AI recipe\n> import + pluggable providers, meal planning, smart shopping lists, the\n> conversational cooking agent, the MCP server, and the Home Assistant\n> integration. See the [CHANGELOG](CHANGELOG.md).\n\n## Highlights (target feature set)\n\n- 📖 **Recipe manager** — structured ingredients & steps, images, categories,\n  tags, favorites, fast search.\n- 🤖 **Pluggable AI** — Claude, Ollama, or OpenAI behind one interface. Import a\n  recipe from a URL or pasted text, ask \"what can I cook with what I have\", and\n  generate weekly meal plans.\n- 🗓️ **Meal planning** — a weekly planner that also feeds your calendar.\n- 🧺 **Inventory-aware** — with the companion [Edibl](https://github.com/Amantux/edibl) app connected, get suggestions ranked by what's actually on hand. myMeal itself stores no pantry; Edibl owns inventory.\n- 🛒 **Smart shopping lists** — auto-built from your plan, deduped and grouped by\n  aisle.\n- 💬 **Cooking agent** — chat with an assistant that helps you build and cook\n  recipes.\n- 🔌 **Home Assistant native** — an MCP server exposes tools to Assist so you can\n  ask \"what's for dinner?\" and manage your list by voice.\n\n## Architecture\n\n```\nbackend/          Flask API (app factory, /api/v1), SQLAlchemy models, MCP server\nfrontend/         Vue 3 + Vite SPA (served by the backend)\ncustom_components/ Home Assistant (HACS) integration — config flow, sensors, calendar, services, card\nmymeal/           Home Assistant add-on config\nDockerfile        Multi-stage build (frontend → python runtime)\n```\n\nThe backend serves both the JSON API under `/api/v1` and the built SPA. Auth is\nJWT by default, or disabled (`MYMEAL_DISABLE_AUTH=true`) when running behind\nHome Assistant ingress, which already authenticates the user.\n\n## Running\n\n### Docker (standalone)\n\n```bash\ndocker compose up --build\n# → http://localhost:7850\n```\n\nSet a strong `MYMEAL_SECRET_KEY` in `docker-compose.yml` before exposing it.\n\n### Local development\n\n```bash\n# Backend\ncd backend\npip install -r requirements.txt\npython run.py            # http://localhost:7850\n\n# Frontend (separate terminal, proxies /api to :7850)\ncd frontend\nnpm install\nnpm run dev              # http://localhost:5173\n```\n\n## Home Assistant\n\nmyMeal ships **two independent install paths**. They are complementary, not\nalternatives — the add-on runs the app, the integration surfaces it as entities.\n\n### Path 1 — the add-on (runs myMeal inside HA)\n\n[![Add repository to My Home Assistant](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FAmantux%2Fmymeal)\n\nOne click adds the repository to your Home Assistant. Then install **myMeal**\nand click **Open Web UI**.\n\n<details>\n<summary>Manual alternative</summary>\n\n**Settings → Add-ons → Add-on Store → ⋮ → Repositories → Add**\n\n```\nhttps://github.com/Amantux/mymeal\n```\n</details>\n\n**You will not be asked to sign in.** Ingress is enabled (`ingress: true`,\n`ingress_port: 7850`) and the add-on ships `disable_auth: true` by default:\nHome Assistant has already authenticated you at the ingress layer, so a second\nlogin would be pure friction. The frontend asks the backend directly\n(`GET /api/v1/misc/auth-mode`) whether sign-in is required rather than inferring\nit, so a transient error can never bounce you to a login screen inside HA. The\nMCP server is exposed on port `7851` for the Home Assistant MCP Client.\n\n> Running myMeal **outside** HA? Auth stays fully on — `disable_auth` only flips\n> in the add-on. Never set `MYMEAL_DISABLE_AUTH=true` on anything reachable from\n> an untrusted network: it binds every request to a single local user.\n\n### Path 2 — the HACS integration (entities, calendar, voice)\n\n[![Open in HACS](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Amantux&repository=mymeal&category=integration)\n\nOne click opens it in HACS (requires HACS installed). Then **Download** →\nrestart HA → **Settings → Devices & Services → Add Integration → myMeal**.\n\n<details>\n<summary>Manual alternative</summary>\n\n**HACS → ⋮ → Custom repositories** → add `https://github.com/Amantux/mymeal`\nwith category **Integration**, then download it.\n</details>\n\nIf you installed the add-on, it advertises itself via Supervisor discovery and\nthe integration should offer to configure itself with no URL or token typing.\n\nYou get:\n\n| Kind | What |\n|---|---|\n| Sensors | today's meals, shopping-list count |\n| Calendar | your meal plan as a native HA calendar entity |\n| Services | `add_to_shopping_list`, `plan_week`, `whats_for_dinner` |\n| Voice | Assist sentences — *\"what's for dinner?\"*, *\"add milk to my shopping list\"* |\n| Lovelace | `mymeal-card.js` dashboard card |\n\n### Pending external steps\n\nThese require action outside this repo and are **not** done:\n\n- **Brand icons** — the `mymeal` domain is not yet registered in\n  [home-assistant/brands](https://github.com/home-assistant/brands), so HA shows\n  a generic icon. That needs a PR against that upstream repo; the `brands` check\n  is explicitly ignored in `ha-validate.yml` rather than silently passing.\n- **Default HACS listing** — myMeal installs as a *custom repository*. Inclusion\n  in the default HACS store is a separate application to HACS.\n\n## Configuration\n\nAll configuration is via `MYMEAL_`-prefixed environment variables:\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `MYMEAL_SECRET_KEY` | `change-me…` | JWT signing key (set in production) |\n| `MYMEAL_DISABLE_AUTH` | `false` | Single-tenant mode behind a trusted proxy / HA ingress |\n| `MYMEAL_ALLOW_REGISTRATION` | `true` | Allow public sign-up |\n| `MYMEAL_DATA_DIR` | `./data` | SQLite DB + uploaded images |\n| `MYMEAL_PORT` | `7850` | HTTP port |\n| `MYMEAL_AI_PROVIDER` | _(blank)_ | `claude` \\| `ollama` \\| `openai` (AI features) |\n\n## Development\n\n```bash\ncd backend && ruff check . && pytest -q     # lint + tests\ncd frontend && npm run build                # type/build check\n```\n\n## License\n\n[AGPL-3.0](LICENSE). (myMeal is original, clean-room software; the license\nchoice mirrors the project owner's other self-hosted tools and can be changed.)\n"}