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>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
# 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 `47⁄10 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
|
||||
Reference in New Issue
Block a user