mcp-recipes 3.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,73 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.1.0
4
+
5
+ - **Node.js 24.22.1 or later**, inside the Node.js 24 line. The package, the
6
+ extension manifest and the image all declare it.
7
+ - **zod `^4.6.7`.** Below 4.6.6, zod can exhaust memory while
8
+ validating oversized constrained collections, and the range accepts none of
9
+ those versions.
10
+ - **Dependency floors:** `@modelcontextprotocol/sdk` `^1.32.2`, `mcp-bbc-goodfood` `^1.1.0`, `mcp-marmiton` `^2.1.0`, `mcp-pequerecetas` `^1.1.0`, `mcp-supertoinette` `^1.1.0`, `mcp-wikibooks-cookbook` `^2.1.0`.
11
+
12
+ ## 4.0.0
13
+
14
+ - **The published client entry renames a field on `SourceProfile` and
15
+ `SourceReport`.** A program importing `mcp-recipes/client` reads
16
+ `rowsThatAreNotRecipes` where it read `mixesReferencePages`: a sentence in the
17
+ source's own words saying what else one of its rows can be, and null where
18
+ every row is a recipe. The boolean forced one wording on two different
19
+ situations, a page about an ingredient filed beside the recipes using it and
20
+ an article that gathers recipes, and one sentence could only describe one of
21
+ them truthfully. The tools' own answers are unaffected: `per_source` never
22
+ published the field, and the note it produces now names each source in that
23
+ source's terms.
24
+ - **`get_recipe` answers in two shapes, and `kind` says which.** One source
25
+ publishes articles that gather recipes at the same kind of address as a
26
+ recipe. Such an answer carries `collection` with the headings and the recipes
27
+ it points at, and no `recipe`; a recipe carries `recipe` and no `collection`.
28
+ A caller that read the article as a recipe would have offered a dish nobody
29
+ can cook. `compare_recipes` leaves such a page out and says why.
30
+ - **Pequerecetas is added**, under the id `pequerecetas`, beside the five
31
+ sources already read. It publishes in Spanish, states no total anywhere, and
32
+ addresses a recipe by the slug in its own address.
33
+ - **Spanish is read and written like the other two languages.** The scaler
34
+ reads a Spanish line for what it is, keeps a huevo whole, halves a diente,
35
+ quarters a cebolla, moves a cucharada into the cucharadita before rounding
36
+ it, multiplies the count of a pizca while leaving the size of one to the
37
+ cook, and agrees nouns and adjectives with the number in front of them. A
38
+ list holding all three languages comes back with each line written in its
39
+ own. `scale_ingredients` takes `es` beside `fr`, `en` and `auto`.
40
+ - **A line naming a tool is recognised and never multiplied.** Some sites write
41
+ what a recipe is cooked with among its ingredients, so a mould or an air
42
+ fryer arrives in the same list as the chicken. Every ingredient line carries
43
+ `is_equipment`, and `scale_ingredients` reports `equipment_count` beside the
44
+ counts of what was scaled: a recipe made for more people uses the same pan.
45
+ - **Each site is read at the pace it asks for.** Two of the sites declare three
46
+ seconds between two requests where the shared default is one second, and they
47
+ were being read four times faster than that. A setting posted for every
48
+ source can now only make this server more patient than the slowest of them
49
+ asks for.
50
+ - **A row that does not name the dish is no longer called a recipe for it.**
51
+ One of the sources answers any wording with something, so a question asked in
52
+ a language it does not publish in came back as several confident recipes for a
53
+ dish nobody published. Every source's rows are now arranged with the ones
54
+ naming the dish first, `per_source` carries `names_the_dish` beside `count`,
55
+ and the answer opens on "rows" rather than "recipes" where no source named it.
56
+ - **The library section of the README states the API the client actually has.**
57
+ It documented a call that does not exist.
58
+ - **An amount stated per eater is recognised in every language.** "50 g par
59
+ personne" and "50 g por persona" were multiplied by the factor, which asks for
60
+ twice as much on every plate; only the English wording was read. A length of
61
+ time is read the same way, in whichever language names it.
62
+ - **The backstop over one source allows what a reader actually spends.** It was
63
+ computed on the shared spacing and left out the wait a site asks for by name,
64
+ so it could fire while the reader was still working: the read was abandoned
65
+ while its requests carried on reaching the site.
66
+ - **An article that gathers recipes is returned bounded.** It was the one answer
67
+ with no ceiling on it, and an article can point at a hundred recipes.
68
+ `max_gathered` says how many to return and `gathered_count` how many there
69
+ are.
70
+
3
71
  ## 3.0.1
4
72
 
5
73
  - **Every tool is documented, with its arguments and what its answer carries.**
package/PRIVACY.md CHANGED
@@ -8,7 +8,7 @@ _[Version française](#confidentialité)_
8
8
 
9
9
  ## What this server is
10
10
 
11
- `mcp-recipes` is a read-only client for five recipe sites: [Marmiton](https://www.marmiton.org), the [Wikibooks Cookbook](https://en.wikibooks.org/wiki/Cookbook:Table_of_Contents), [Ptitchef](https://www.ptitchef.com), [BBC Good Food](https://www.bbcgoodfood.com) and [Supertoinette](https://www.supertoinette.com). It runs on your
11
+ `mcp-recipes` is a read-only client for six recipe sites: [Marmiton](https://www.marmiton.org), the [Wikibooks Cookbook](https://en.wikibooks.org/wiki/Cookbook:Table_of_Contents), [Ptitchef](https://www.ptitchef.com), [BBC Good Food](https://www.bbcgoodfood.com), [Supertoinette](https://www.supertoinette.com) and [Pequerecetas](https://www.pequerecetas.com). It runs on your
12
12
  own machine, as a process your MCP host starts, and it speaks over stdio. It
13
13
  listens on no port.
14
14
 
@@ -16,7 +16,7 @@ It needs no API key and no account, so there is no credential for it to hold and
16
16
 
17
17
  ## What leaves your machine, and where it goes
18
18
 
19
- **5 hosts are contacted**, and nothing else.
19
+ **6 hosts are contacted**, and nothing else.
20
20
 
21
21
  | Host | What is read there |
22
22
  | ----------------------- | ------------------------------------------------------------------------------------------------ |
@@ -25,6 +25,7 @@ It needs no API key and no account, so there is no credential for it to hold and
25
25
  | `www.ptitchef.com` | the site's pages |
26
26
  | `www.bbcgoodfood.com` | a JSON route the site's own front end uses, for a search; the recipe's page itself, for a recipe |
27
27
  | `www.supertoinette.com` | the site's pages |
28
+ | `www.pequerecetas.com` | the site's pages |
28
29
 
29
30
  A Cookbook page is linked as `en.wikibooks.org`, which is where a reader opens
30
31
  it. That host is never contacted by this server: the pages themselves are read
@@ -38,7 +39,7 @@ What a request carries:
38
39
  | A `User-Agent` | `mcp-recipes/<version> (+https://github.com/smeet666/mcp-recipes)`, so the site can reach a person about the traffic it receives. |
39
40
  | Your IP address | Sent by your network to any host you contact, as with any web request. |
40
41
 
41
- Your requests reach the five sites above. What is done with them there is governed by each site's own privacy policy, which this project does not control.
42
+ Your requests reach the six sites above. What is done with them there is governed by each site's own privacy policy, which this project does not control.
42
43
 
43
44
  ## What is kept, and for how long
44
45
 
@@ -90,7 +91,7 @@ Ce serveur ne collecte rien sur vous et n'envoie rien à son auteur.
90
91
 
91
92
  ## Ce qu'est ce serveur
92
93
 
93
- `mcp-recipes` est un client en lecture seule pour cinq sites de recettes : [Marmiton](https://www.marmiton.org), le [Cookbook des Wikibooks](https://en.wikibooks.org/wiki/Cookbook:Table_of_Contents), [Ptitchef](https://www.ptitchef.com), [BBC Good Food](https://www.bbcgoodfood.com) et [Supertoinette](https://www.supertoinette.com). Il
94
+ `mcp-recipes` est un client en lecture seule pour six sites de recettes : [Marmiton](https://www.marmiton.org), le [Cookbook des Wikibooks](https://en.wikibooks.org/wiki/Cookbook:Table_of_Contents), [Ptitchef](https://www.ptitchef.com), [BBC Good Food](https://www.bbcgoodfood.com), [Supertoinette](https://www.supertoinette.com) et [Pequerecetas](https://www.pequerecetas.com). Il
94
95
  tourne sur votre machine, comme un processus que votre hôte MCP démarre, et il
95
96
  parle en stdio. Il n'écoute sur aucun port.
96
97
 
@@ -98,7 +99,7 @@ Il ne demande ni clé d'API ni compte, donc il ne détient aucun identifiant et
98
99
 
99
100
  ## Ce qui quitte votre machine, et où cela va
100
101
 
101
- **5 hôtes sont joints**, et rien d'autre.
102
+ **6 hôtes sont joints**, et rien d'autre.
102
103
 
103
104
  | Hôte | Ce qui y est lu |
104
105
  | ----------------------- | ----------------------------------------------------------------------------------------------------------- |
@@ -107,6 +108,7 @@ Il ne demande ni clé d'API ni compte, donc il ne détient aucun identifiant et
107
108
  | `www.ptitchef.com` | les pages du site |
108
109
  | `www.bbcgoodfood.com` | une route JSON qu'emploie l'interface du site, pour une recherche ; la page de la recette, pour une recette |
109
110
  | `www.supertoinette.com` | les pages du site |
111
+ | `www.pequerecetas.com` | les pages du site |
110
112
 
111
113
  Une page du Cookbook est liée sous `en.wikibooks.org`, où un lecteur l'ouvre. Ce
112
114
  serveur ne joint jamais cet hôte : les pages elles-mêmes sont lues par la
@@ -120,7 +122,7 @@ Ce qu'une requête emporte :
120
122
  | Un `User-Agent` | `mcp-recipes/<version> (+https://github.com/smeet666/mcp-recipes)`, pour que le site puisse joindre une personne au sujet du trafic qu'il reçoit. |
121
123
  | Votre adresse IP | Transmise par votre réseau à tout hôte que vous joignez, comme pour n'importe quelle requête web. |
122
124
 
123
- Vos requêtes atteignent les cinq sites ci-dessus. Ce qui en est fait là-bas relève de la politique de confidentialité propre à chaque site, que ce projet ne contrôle pas.
125
+ Vos requêtes atteignent les six sites ci-dessus. Ce qui en est fait là-bas relève de la politique de confidentialité propre à chaque site, que ce projet ne contrôle pas.
124
126
 
125
127
  ## Ce qui est conservé, et combien de temps
126
128