Files
mealie-mcp/mealie_mcp/resources/import-pitfalls.md
Fizz f2d233b430 Initial commit: Mealie MCP server
Ports a working Hermes agent skill to an MCP server. The skill's value was not
its Mealie endpoints but ~25 operational rules found by running imports against
the live instance; those are now code with tests rather than prompt text.

The server owns deterministic mechanics — auth, the non-default User-Agent
Cloudflare requires, the `extension` field on cover uploads, PATCH instead of
the 500-ing bulk-action endpoints, decimal-comma normalization, and restoring
Swedish display text after parsing. Language and taste judgement stay with the
model, fed by the four reference notes shipped as MCP resources.

verify_recipe runs the finished-import definition as code so an agent cannot
report success on a recipe with an English ingredient line, a missing cover, or
ingredients still in the "Click Parse" state.

Home Assistant is optional and isolated; the Obsidian meal plan is out of scope.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 07:31:10 +02:00

45 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Allrecipes post-import pitfalls
Den här referensen dokumenterar konkreta fel som observerats i live-körning mot Fredriks Mealie-instans och ska användas när recept importeras från Allrecipes eller andra engelskspråkiga receptsidor.
## Verifierade problem
### 1. `image` i API betyder inte nödvändigtvis att omslagsbilden syns i UI
- Ett recept kan ha ett icke-tomt `image`-fält och ändå sakna synlig omslagsbild i gränssnittet.
- Därför måste importflödet alltid köra ett explicit bildsteg efter import.
- För lokal upload på Fredriks Mealie-instans måste `PUT /api/recipes/<slug>/image` skicka med multipart-fältet `extension` (t.ex. `jpg` eller `webp`). Utan det kan uppladdningen fastna i validering och bilden blir inte korrekt sparad.
### 2. Bulk-actions för taggar/kategorier är opålitliga i denna instans
Följande endpoints gav 500-fel under verkliga körningar:
- `/api/recipes/bulk-actions/tag`
- `/api/recipes/bulk-actions/categorize`
Använd i stället direkt PATCH på receptets `tags` och `recipeCategory`.
### 3. Mealie-parsern kan förstöra svenska display-rader
Exempel på observerade fel:
- `4,7 dl basmatiris` blev något i stil med `4710 liter ...`
- parsern gav konstiga bråktecken, dubblerade enheter och skräptecken i `display`
- vissa parser-resultat gav märkliga `food.name`-värden för svenska rader
### 4. Svensk decimal-komma är känsligt
Parsern hanterar ofta struktur bättre om decimal-komma först normaliseras till punkt för parseranropet, men den normaliserade raden ska inte användas som slutlig `display` i Mealie.
## Rekommenderad motstrategi
1. Bevara alltid en canonical svensk ingrediensrad separat.
2. Använd parsern endast för `quantity`, `unit`, `food`.
3. Återställ den mänskliga svenska raden till `display` och `note` efter parse.
4. Om parsern ger `food.name` utan `id` och du behöver strukturen kvar efter PATCH, skapa/återanvänd riktig Mealie food först.
5. För Allrecipes: om scrape-bild inte blir stabil i UI, ladda ner hero-bilden och använd `PUT /api/recipes/<slug>/image`.
6. Om Köket.se- och YouTube-importer fortsätter att visa fungerande omslagsbilder medan Allrecipes-importer inte gör det, behandla det som ett källspecifikt Allrecipes-problem. Gå då direkt till explicit hero-bild-download + `PUT /api/recipes/<slug>/image` i stället för bredare generell felsökning.
7. Om parsern fortfarande gör visningen ful efter cleanup, välj läsbarhet före struktur för just de trasiga raderna: nollställ `quantity` / `unit` / `food` och spara rena svenska `display` / `note` i stället för att behålla dålig automatisk rendering.
## Definition av klar import
Ett importerat recept räknas inte som klart förrän:
- svensk titel/beskrivning/instruktioner är satta
- `recipeIngredient[].display` ser normala ut för människa
- parsern inte lämnar receptet i `Click Parse`-läge
- bild har satts eller verifierats explicit
- taggar/kategorier är applicerade eller medvetet hoppade över