mcp-bbc-goodfood
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-bbc-goodfoodShow me the available diet filters for chicken recipes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-bbc-goodfood
An MCP server that reads recipes on BBC Good Food. Read-only, no API key, no account.
Why it exists
BBC Good Food accepts any value on a search facet, and answers one it does not
know with a total of zero. Ask for glutenfree instead of gluten-free and the
site says nothing matches, with the same confidence it says 48 recipes match the
correct spelling. A model that guesses a spelling gets a confident absence
instead of a refusal.
This server publishes the vocabulary, so the question can be asked properly.
Related MCP server: mcp-spoonacular
The tool
list_filters
Lists the axes a recipe search can be narrowed along, with the values each one takes and how many recipes carry them.
Argument | Type | Meaning |
| string, optional | Measure the counts inside this search. Leave it out for the site's whole listing. |
The site counts its facets over the rows a search returns, so the two answer
different questions. Within chicken, diet reports gluten-free 48. Across
the whole listing it reports gluten-free 2810. Neither is comparable to the
other, and the answer says which scope it measured.
{
"query": "chicken",
"filters": [
{
"name": "diet",
"label": "Diets",
"options": [{ "value": "gluten-free", "label": "Gluten-free", "count": 48 }],
"option_count": 10
}
],
"filter_count": 9,
"total_available": 363,
"total_is_ceiling": false,
"rows_seen": 30,
"matched_rows": 30,
"source": "BBC Good Food",
"notes": ["…"]
}What the answers refuse to overstate
The published values are a shortlist. The site shows the ten most frequent
values on an axis and accepts others it never lists: cuisine=mexican narrows a
search to 306 recipes without appearing among the ten. The answer says the list
is an excerpt rather than calling it the set of accepted values, because a
server that called it that would refuse values that work.
A total can be a floor. The site serves at most 10 000 rows for one search
and stops there. A total landing exactly on that figure was cut, so it states a
floor rather than a count, and total_is_ceiling says so.
A count the site published nothing for is null, never 0. On a scale that
starts at zero the two would be indistinguishable.
The site answers a term it holds nothing for with rows all the same. Searching
foobar returns seven recipes — among them a rhubarb fizz and a flapjack bar —
matched on fragments, with nothing marking the answer as a miss. Every answer
therefore reports rows_seen and matched_rows: how many rows the site served,
and how many of them carry a word of the search. When the second is zero and the
first is not, a note says the count describes what the site offered rather than
what matched.
Two counts rather than a verdict. A legitimate search can be absent from every
title, and a reader seeing 2 of 30 judges better than a flag that judges for
them.
Install
npx mcp-bbc-goodfoodClaude Code
claude mcp add bbc-goodfood -- npx -y mcp-bbc-goodfoodAny MCP client
{
"mcpServers": {
"bbc-goodfood": {
"command": "npx",
"args": ["-y", "mcp-bbc-goodfood"]
}
}
}Container
docker build -t mcp-bbc-goodfood .
docker run -i --rm mcp-bbc-goodfoodThe container needs to reach www.bbcgoodfood.com and nothing else. It takes no
credentials, because there are none to take.
Settings
Every setting is an environment variable, and none is required. A value outside its range is refused with a line on stderr and the default stands: a setting that cannot take effect says so rather than being quietly clamped.
Variable | Default | Range |
| — | Your own identifier. This project's stays appended, so the site can reach a human. |
| 1500 | 1000 to 60000 |
| 20000 | 1000 to 120000 |
| 3 | 0 to 8 |
| 900000 | 0 to 86400000, 0 turns storage off |
| 200 | 1 to 5000 |
|
|
|
The pacing floor cannot be lowered from outside. The site is free to read and publishes no crawl delay, which is a reason to be careful rather than a licence to be fast.
As a library
The reading layer is published on its own, with its pacing, its storage and its error vocabulary and no protocol attached:
import { GoodFoodClient } from "mcp-bbc-goodfood/client";Errors
Six codes and no more. A caller branches on the code that opens the message.
Code | What it means |
| The site holds nothing at that address |
| The arguments could not produce a request |
| The site asked this client to slow down. It says nothing about whether anything matched |
| An answer arrived in a shape this server cannot read |
| The request could not be completed |
| No answer arrived within the deadline |
Attribution
Recipes, titles and counts belong to BBC Good Food. Every answer carries the source, and a listing shown to a reader should credit the site and link the page.
Contributing
See CONTRIBUTING.md. Tests come first, coverage has a floor of 100%, and the rule everything follows is that the server never says anything the data does not carry.
Licensed under MIT.
mcp-bbc-goodfood (français)
Un serveur MCP qui lit les recettes de BBC Good Food. En lecture seule, sans clé d'API et sans compte.
Pourquoi il existe
BBC Good Food accepte n'importe quelle valeur sur une facette de recherche, et
répond à une valeur qu'il ne connaît pas par un total de zéro. Demandez
glutenfree au lieu de gluten-free et le site répond que rien ne correspond,
avec l'assurance qu'il met à dire que 48 recettes correspondent à la bonne
orthographe. Un modèle qui devine une orthographe reçoit une absence confiante
plutôt qu'un refus.
Ce serveur publie le vocabulaire, pour que la question soit posable.
L'outil
list_filters
Liste les axes le long desquels une recherche de recettes peut être restreinte, avec les valeurs que chacun prend et le nombre de recettes qui les portent.
Argument | Type | Sens |
| chaîne, optionnel | Mesure les comptes à l'intérieur de cette recherche. Sans lui, ils portent sur le listing entier du site. |
Le site compte ses facettes sur les lignes qu'une recherche rend, donc les deux
répondent à des questions différentes. Dans chicken, diet annonce
gluten-free 48. Sur le listing entier, il annonce gluten-free 2810. Aucun des
deux n'est comparable à l'autre, et la réponse dit quelle portée elle a mesurée.
Ce que les réponses refusent d'affirmer
Les valeurs publiées sont un extrait. Le site montre les dix valeurs les plus
fréquentes d'un axe et en accepte d'autres qu'il ne liste jamais :
cuisine=mexican restreint une recherche à 306 recettes sans figurer parmi les
dix. La réponse dit que la liste est un extrait au lieu de l'appeler l'ensemble
des valeurs acceptées, parce qu'un serveur qui l'appellerait ainsi refuserait des
valeurs qui marchent.
Un total peut être un plancher. Le site sert au plus 10 000 lignes pour une
recherche et s'arrête là. Un total qui tombe exactement sur ce nombre a été
coupé, donc il énonce un plancher plutôt qu'un compte, et total_is_ceiling le
dit.
Un compte que le site n'a pas publié vaut null, jamais 0. Sur une échelle
qui commence à zéro, les deux seraient indiscernables.
Le site répond quand même à un terme dont il n'a rien. Chercher foobar rend
sept recettes, dont un cocktail à la rhubarbe et une barre de flapjack,
rapprochées par fragments, sans que rien ne marque la réponse comme un échec.
Chaque réponse rend donc rows_seen et matched_rows : combien de lignes le
site a servies, et combien d'entre elles portent un mot de la recherche. Quand la
seconde vaut zéro et la première non, une note dit que le compte décrit ce que le
site a proposé plutôt que ce qui correspond.
Deux comptes plutôt qu'un verdict. Une recherche légitime peut n'apparaître dans
aucun titre, et un lecteur qui voit 2 sur 30 juge mieux qu'un drapeau qui
jugerait pour lui.
Installation
npx mcp-bbc-goodfoodClaude Code
claude mcp add bbc-goodfood -- npx -y mcp-bbc-goodfoodN'importe quel client MCP
{
"mcpServers": {
"bbc-goodfood": {
"command": "npx",
"args": ["-y", "mcp-bbc-goodfood"]
}
}
}Conteneur
docker build -t mcp-bbc-goodfood .
docker run -i --rm mcp-bbc-goodfoodLe conteneur doit joindre www.bbcgoodfood.com et rien d'autre. Il ne prend
aucun identifiant, puisqu'il n'y en a aucun à prendre.
Réglages
Chaque réglage est une variable d'environnement, et aucune n'est obligatoire. Une valeur hors bornes est refusée par une ligne sur stderr et le défaut tient : un réglage qui ne peut pas prendre effet le dit, plutôt que d'être borné en silence.
Variable | Défaut | Bornes |
| — | Votre identifiant. Celui du projet reste ajouté, pour que le site puisse joindre une personne. |
| 1500 | 1000 à 60000 |
| 20000 | 1000 à 120000 |
| 3 | 0 à 8 |
| 900000 | 0 à 86400000, 0 éteint le stockage |
| 200 | 1 à 5000 |
|
|
|
Le plancher du rythme ne peut pas être abaissé de l'extérieur. Le site est gratuit à lire et ne publie aucun délai d'exploration, ce qui est une raison d'être prudent plutôt qu'une licence d'aller vite.
Comme bibliothèque
La couche de lecture est publiée seule, avec son rythme, son stockage et sa taxonomie d'erreurs, sans protocole attaché :
import { GoodFoodClient } from "mcp-bbc-goodfood/client";Erreurs
Six codes et pas un de plus. Un appelant branche sur le code qui ouvre le message.
Code | Ce qu'il veut dire |
| Le site n'a rien à cette adresse |
| Les arguments ne pouvaient pas produire de requête |
| Le site a demandé de ralentir. Cela ne dit rien sur ce qui correspond |
| Une réponse est arrivée dans une forme que ce serveur ne sait pas lire |
| La requête n'a pas pu aboutir |
| Aucune réponse n'est arrivée dans le délai |
Attribution
Les recettes, les titres et les comptes appartiennent à BBC Good Food. Chaque réponse porte la source, et un listing montré à un lecteur doit créditer le site et lier la page.
Contribuer
Voir CONTRIBUTING.md. Les tests d'abord, un plancher de couverture à 100 %, et la règle qui gouverne tout : le serveur ne dit jamais quelque chose que la donnée ne porte pas.
Sous licence MIT.
Maintenance
Tools
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables querying food nutritional information, discovering recipes by ingredients or diet type, getting ingredient substitutions, and receiving personalized food recommendations based on mood and season.
- AlicenseNot gradedqualityCmaintenanceProvides access to the Spoonacular food API for recipes, nutrition, ingredients, and meal plans.MIT
- FlicenseNot gradedqualityDmaintenanceEnables browsing recipes, searching by category, and viewing detailed recipe information from the Gousto cookbook API via natural language.
- AlicenseNot gradedqualityCmaintenanceEnables querying Open Food Facts product database by barcode, full-text search, category, brand, or country.12MIT
Related MCP Connectors
Spoonacular food API: recipes, nutrition, ingredients, meal plans. Free 150/day.
Recipes MCP — wraps TheMealDB API (free tier, no auth)
Federated commerce search across independent WooCommerce merchants. Keyless, read-only MCP server.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/smeet666/mcp-bbc-goodfood'
If you have feedback or need assistance with the MCP directory API, please join our Discord server