io.github.smeet666/mcp-wikibooks-cookbook
NPM · MCP-WIKIBOOKS-COOKBOOK · 2 COMPONENTS · SCANNED AUG 12
Search the Wikibooks Cookbook, read a recipe and rescale it to any number of servings.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 30 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to smeet666/mcp-wikibooks-cookbook). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability59
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2138 tokens (~534/item across 4 items; 4 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management20
- Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage94
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 79% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · mcp-wikibooks-cookbook
claude mcp add smeet666-mcp-wikibooks-cookbook -- npx -y mcp-wikibooks-cookbook
codex mcp add smeet666-mcp-wikibooks-cookbook -- npx -y mcp-wikibooks-cookbook
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"smeet666-mcp-wikibooks-cookbook": {
"type": "local",
"command": [
"npx",
"-y",
"mcp-wikibooks-cookbook"
],
"enabled": true
}
}
} openclaw mcp add smeet666-mcp-wikibooks-cookbook --command npx --arg -y --arg mcp-wikibooks-cookbook
mcp_servers:
smeet666-mcp-wikibooks-cookbook:
command: "npx"
args: ["-y", "mcp-wikibooks-cookbook"] {
"mcpServers": {
"smeet666-mcp-wikibooks-cookbook": {
"command": "npx",
"args": [
"-y",
"mcp-wikibooks-cookbook"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 12 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Aug 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 10 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Aug 26 −1
- Schema quality: 415 → 534 ▼ functional
- Package version: 1.2.0 → 1.3.0 functional
- 8 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Aug 26 +15
- Known CVEs: partial → unverified ▼ security
- Provenance: fail → pass ▲ security
- Known CVEs: partial → pass ▲ security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- The attested source repository moved: smeet666/mcp-wikibooks-cookbook security
- Dependency health: partial → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Stability: unverified → 0.03 ▲ functional
- Security disclosure: fail → pass ▲ functional
- Dependency health: partial → 0.85 functional
- Package version: 1.0.0 → 1.2.0 functional
- Package version: 1.0.0 → 1.1.0 functional
- 6 Aug 26 +26
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: excellent functional
- First check of Tool coverage: 100 functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 79 functional
- First check of Schema quality: fail functional
- 5 Aug 26 35
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 12 Aug 2026 · Analysed npm/mcp-wikibooks-cookbook@1.3.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | smeet666/mcp-wikibooks-cookbook |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/smeet666/mcp-wikibooks-cookbook/.github/workflows/publish.yml@refs/tags/v1.3.0 |
| Rekor log index | 2397454089 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:617dd430d8606ba4ca20a1c8690c98d778a9d77ca8d6300bfdd23f1c921eac62baf1f65c710f3a0365a3ede3a03621226aa83fc95cb59264424485726 |
Dependencies 95 packages
| Packages resolved | 95 |
|---|---|
| Stale | 30 |
| Tree resolution | Complete |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
get_recipe Read a recipe ~784
Read one Wikibooks Cookbook page: ingredients, equipment, steps, yield, time, difficulty, category, and the nutrition panel when the page carries one. 'id' is the page key from search_recipes or list_recipes, such as 'Cookbook:Spaghetti_alla_Carbonara'. A plain dish name is accepted and the Cookbook namespace is added. Pass 'servings' to rescale: a countable thing lands on the smallest share a cook can take out of one of it, which is a whole one where half of one cannot be measured out at all, such as an egg or a whole clove, a half where half of one pours, weighs or splits, such as a can or a packet, and a quarter where a knife or the size of the thing goes further, such as an onion, a slice of bread or a jar; a measurement is moved to a smaller unit before rounding so nothing disappears; and anything that cannot be multiplied is flagged instead. Read 'scaling' on each ingredient rather than doing the arithmetic yourself. A page that groups its ingredients by what they are for, such as a cake and its glaze, states that group on every line; a page that lists them flat states null. Two lines can read alike and belong to different parts of the dish. A page offering several versions of the dish states which one each line came from in 'variant'. Those lists replace one another: one of them is used, even where the procedure says to mix all the ingredients. A measurement the page writes as a conversion template is read as the value and the unit the page wrote, and the counterpart the template computes is left out: nothing here is converted between measuring systems. A line asking for as much as is needed and giving an indication in brackets, such as 'water as required (about 1 ½ cups)', states a quantity: the indication is scaled with the recipe and the wording in front of it is left as the page wrote it. A line offering an alternative in brackets, such as '4 eggs (or 8 egg yolks)', has both branches scaled, since a cook takes one of them. The Cookbook keeps recipes and…
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Page key from a search, such as 'Cookbook:Spaghetti_alla_Carbonara'. |
| max_description_chars | integer | – | – |
| servings | integer | – | Rescale the ingredients to this many servings. |
| Name | Type | Req | Description |
|---|---|---|---|
| attribution | string | yes | – |
| author | – | yes | Always null: the Cookbook is written collectively. |
| categories | array | yes | Every category the page files itself under. |
| category | – | yes | – |
| cook_minutes | – | yes | The phase the page labels as cooking. Null when it labels none. |
| description | – | yes | – |
| difficulty | – | yes | – |
| difficulty_max | number | yes | The scale 'difficulty' sits on. |
| energy | – | yes | Energy per serving as the page states it. |
| equipment | array | yes | – |
| id | string | yes | The page that was read, which differs from 'id' after a redirect. |
| ingredients | array | yes | – |
| license | – | yes | – |
| notes | array | yes | – |
| nutrition | – | yes | – |
| prep_minutes | – | yes | The phase the page labels as preparation. Null when it labels none. |
| rating | – | yes | Always null: the Cookbook carries no reader score. |
| redirected_from | array | yes | Redirect pages walked to reach this one. Empty when the page was reached directly. |
| revised_at | – | yes | – |
| source | string | yes | – |
| steps | array | yes | – |
| time_phases | array | yes | Each duration the page states, in the order it states them. |
| time_text | – | yes | The time in the page's own wording. |
| tips | array | yes | Notes, tips and variations the page publishes. |
| title | string | yes | – |
| total_minutes | – | yes | The whole dish, stated only where the page states a total: one duration, or a phase the page itself calls the total. Null where the page states phases and no total, since a fermentation, a marinade o… |
| url | string | yes | – |
| yield | object | yes | – |
No examples provided.
list_recipes Browse the Cookbook ~235
Browse the Wikibooks Cookbook by cuisine, by kind of dish, or by main ingredient. Give at least one of the three; giving several narrows the result. This is built on the Cookbook's search, because the route this server is allowed to use publishes no way to list the members of a category. What comes back is therefore a ranked sample and not the category itself: it is neither complete nor ordered, and its length says nothing about how many recipes the Cookbook holds on the subject. The Cookbook also holds reference pages on ingredients and techniques, and those rank alongside recipes. Open a row with get_recipe before describing it as a recipe. Use search_recipes instead when there is a dish name to look up.
| Name | Type | Req | Description |
|---|---|---|---|
| cuisine | string | – | A cuisine or a country, such as 'Italian' or 'Thai'. |
| dish_type | string | – | A kind of dish, such as 'soup', 'dessert' or 'bread'. |
| limit | integer | – | – |
| main_ingredient | string | – | The ingredient a recipe is built on, such as 'chicken' or 'lentils'. |
| Name | Type | Req | Description |
|---|---|---|---|
| cuisine | – | yes | – |
| dish_type | – | yes | – |
| main_ingredient | – | yes | – |
| notes | array | yes | – |
| query | string | yes | The search this server built from the arguments. |
| result_count | integer | yes | – |
| results | array | yes | – |
| source | string | yes | – |
| total_available | – | yes | Always null: no route reports how many recipes a category holds. |
No examples provided.
scale_ingredients Rescale an ingredient list ~502
Rescale a list of English ingredient lines. This contacts no website and works on a list from anywhere, including one the user pasted in. Give either 'factor' directly, or 'from_servings' and 'to_servings' and the factor is computed. Grams, millilitres, ounces and pounds are multiplied and rounded to what a scale can show; a quantity that would fall below one is moved to a smaller unit first, so it never rounds away to nothing. Countable things land where a kitchen can follow, and what decides is the content rather than the container: a can, a packet, a sheet of gelatine or a spoon lands on a half, because half of one pours, weighs or cuts. An egg, a yolk, a white, a zest or a whole clove lands on a whole one, since there is no half of it to measure out, which is what stops an answer like '2.4 eggs'. A bottle, a jar, a block and a slice go one step further, to the quarter, as a whole food a knife shares out does. An approximate measure is scaled as a count, so a pinch taken from 6 servings to 25 is 4 pinches; the note gives the everyday equivalence, and the quantity stays in the unit the line used. That covers the gestures, such as a pinch, a dash, a glug or a handful, and anything named after what holds it, such as a capful or a spoonful. A line with no quantity at all comes back untouched and flagged. A bracketed equivalent, as in '450 g (1 pound)', is scaled with the amount it restates rather than left to contradict it, and so is one written after a slash, as in '500 g / 1.1 lb'. A line offering a choice, as in '2 tablespoons butter OR 30 g margarine', has both branches scaled, so whichever one the cook takes carries the same share. Prefer this over doing the arithmetic yourself.
| Name | Type | Req | Description |
|---|---|---|---|
| factor | number | – | Multiplier to apply. Use this or the from/to pair. |
| from_servings | number | – | How many servings the list is written for. |
| ingredients | array | yes | Ingredient lines, for example ['450 g (1 pound) spaghetti', '5 egg yolks', 'Salt']. |
| to_servings | number | – | How many servings are wanted. |
| Name | Type | Req | Description |
|---|---|---|---|
| factor | number | yes | – |
| ingredients | array | yes | – |
| notes | array | yes | – |
| rounded_count | integer | yes | Lines whose value was moved to stay usable, not lines that could have been. |
| scaled_count | integer | yes | Lines whose arithmetic came out exact. |
| unscaled_count | integer | yes | Lines carrying nothing that can be multiplied. |
No examples provided.
search_recipes Search the Cookbook ~282
Search the Wikibooks Cookbook for a recipe, by dish name or by an ingredient it uses. 'text' searches the whole of each page, which is what finds a dish from an ingredient inside it; 'title' matches the page name only, which is exact and misses a dish the Cookbook names differently. The Cookbook also holds reference pages on ingredients, techniques and cuisines, and those rank alongside recipes: a row is a page, and only get_recipe can say whether it carries an ingredient list. A full-text row can be a page that merely names the dish: when the titles do not say the words searched for, the notes say so, because the Cookbook links to dishes it does not hold. On a title search the same rows are pages the Cookbook files under another name, such as 'Eggplant' for 'aubergine', since that search opens no page. 'total_available' is null because the search route reports no total and offers no second page. Narrow the query rather than asking for more. Every row carries an 'id', which get_recipe takes.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | yes | A dish, such as 'carbonara', or an ingredient, such as 'guanciale'. |
| search | string | – | 'text' reads the whole page; 'title' matches the page name only. |
| Name | Type | Req | Description |
|---|---|---|---|
| notes | array | yes | – |
| query | string | yes | – |
| result_count | integer | yes | Rows returned by this call. |
| results | array | yes | – |
| source | string | yes | – |
| total_available | – | yes | Always null: the search route publishes no total and no paging. |
No examples provided.