mcp-bbc-goodfood
mcp-bbc-goodfood
MCP-сервер, который читает рецепты на BBC Good Food. Только чтение, без ключа API, без аккаунта.
Зачем он нужен
BBC Good Food принимает любое значение на фасете поиска и отвечает на неизвестное значение нулём. Спросите glutenfree вместо gluten-free — и сайт скажет, что ничего не соответствует, с той же уверенностью, с какой говорит, что 48 рецептов соответствуют правильному написанию. Модель, которая угадывает написание, получает уверенное отсутствие вместо отказа.
Этот сервер публикует словарь, чтобы вопрос можно было задать правильно.
Related MCP server: mcp-spoonacular
Инструмент
list_filters
Перечисляет оси, по которым можно сузить поиск рецептов, со значениями, которые принимает каждая, и количеством рецептов, которые их несут.
Аргумент | Тип | Значение |
| строка, необязательный | Измеряет количество внутри этого поиска. Опустите его для всего списка сайта. |
Сайт считает свои фасеты по строкам, которые возвращает поиск, поэтому два ответа отвечают на разные вопросы. Внутри chicken параметр diet сообщает gluten-free 48. По всему списку он сообщает gluten-free 2810. Ни одно не сравнимо с другим, и ответ говорит, какую область он измерил.
{
"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": ["…"]
}Что ответы отказываются преувеличивать
Опубликованные значения — это краткий список. Сайт показывает десять самых частых значений на оси и принимает другие, которые никогда не перечисляет: cuisine=mexican сужает поиск до 306 рецептов, не появляясь среди десяти. Ответ говорит, что список является выдержкой, а не называет его набором принятых значений, потому что сервер, который назвал бы его так, отказывал бы значениям, которые работают.
Итог может быть нижней границей. Сайт выдаёт не более 10 000 строк для одного поиска и останавливается. Итог, попадающий ровно на эту цифру, был обрезан, поэтому он указывает нижнюю границу, а не количество, и total_is_ceiling говорит об этом.
Количество, для которого сайт ничего не опубликовал, равно null, а не 0. На шкале, начинающейся с нуля, они были бы неразличимы.
Сайт отвечает на термин, для которого у него ничего нет, строками, которые все одинаковы. Поиск foobar возвращает семь рецептов — среди них ревеневая шипучка и батончик флэпджек — сопоставленных по фрагментам, и ничто не помечает ответ как промах. Поэтому каждый ответ сообщает rows_seen и matched_rows: сколько строк выдал сайт и сколько из них содержат слово из поиска. Когда второе равно нулю, а первое нет, примечание говорит, что количество описывает то, что предложил сайт, а не то, что совпало.
Два числа вместо вердикта. Законный поиск может отсутствовать во всех заголовках, и читатель, видящий 2 из 30, судит лучше, чем флаг, который судит за него.
Установка
npx mcp-bbc-goodfoodClaude Code
claude mcp add bbc-goodfood -- npx -y mcp-bbc-goodfoodЛюбой MCP-клиент
{
"mcpServers": {
"bbc-goodfood": {
"command": "npx",
"args": ["-y", "mcp-bbc-goodfood"]
}
}
}Контейнер
docker build -t mcp-bbc-goodfood .
docker run -i --rm mcp-bbc-goodfoodКонтейнеру нужно добраться до www.bbcgoodfood.com и ни до чего больше. Он не принимает учётных данных, потому что их нечего принимать.
Настройки
Каждая настройка — это переменная окружения, и ни одна не обязательна. Значение вне диапазона отклоняется строкой в stderr, и остаётся значение по умолчанию: настройка, которая не может вступить в силу, говорит об этом, а не молча ограничивается.
Переменная | По умолчанию | Диапазон |
| — | Ваш собственный идентификатор. Идентификатор проекта остаётся добавленным, чтобы сайт мог связаться с человеком. |
| 1500 | от 1000 до 60000 |
| 20000 | от 1000 до 120000 |
| 3 | от 0 до 8 |
| 900000 | от 0 до 86400000, 0 отключает хранение |
| 200 | от 1 до 5000 |
|
|
|
Нижнюю границу темпа нельзя понизить извне. Сайт бесплатен для чтения и не публикует задержку обхода, что является причиной быть осторожным, а не лицензией быть быстрым.
Как библиотека
Слой чтения публикуется отдельно, со своим темпом, своим хранилищем и своим словарём ошибок, без прикреплённого протокола:
import { GoodFoodClient } from "mcp-bbc-goodfood/client";Ошибки
Шесть кодов и не больше. Вызывающий код ветвится по коду, который открывает сообщение.
Код | Что означает |
| На сайте ничего нет по этому адресу |
| Аргументы не могли сформировать запрос |
| Сайт попросил этот клиент замедлиться. Ничего не говорит о том, совпало ли что-нибудь |
| Ответ пришёл в виде, который этот сервер не может прочитать |
| Запрос не удалось выполнить |
| Ответ не пришёл в течение установленного срока |
Атрибуция
Рецепты, названия и количество принадлежат BBC Good Food. Каждый ответ несёт источник, и список, показанный читателю, должен указывать сайт и ссылаться на страницу.
Участие
См. CONTRIBUTING.md. Тесты идут первыми, покрытие имеет нижнюю границу 100%, и правило, которому следует всё, — сервер никогда не говорит того, чего нет в данных.
Лицензия MIT.
mcp-bbc-goodfood (французский)
MCP-сервер, который читает рецепты BBC Good Food. Только чтение, без ключа API и без аккаунта.
Зачем он нужен
BBC Good Food принимает любое значение на фасете поиска и отвечает на неизвестное значение нулём. Спросите glutenfree вместо gluten-free — и сайт ответит, что ничего не соответствует, с той же уверенностью, с какой говорит, что 48 рецептов соответствуют правильному написанию. Модель, которая угадывает написание, получает уверенное отсутствие, а не отказ.
Этот сервер публикует словарь, чтобы вопрос можно было задать.
Инструмент
list_filters
Перечисляет оси, по которым можно сузить поиск рецептов, со значениями, которые принимает каждая, и количеством рецептов, которые их несут.
Аргумент | Тип | Значение |
| строка, необязательный | Измеряет количество внутри этого поиска. Без него они относятся ко всему списку сайта. |
Сайт считает свои фасеты по строкам, которые возвращает поиск, поэтому два ответа отвечают на разные вопросы. Внутри chicken параметр diet сообщает gluten-free 48. По всему списку он сообщает gluten-free 2810. Ни одно не сравнимо с другим, и ответ говорит, какую область он измерил.
Что ответы отказываются утверждать
Опубликованные значения — это выдержка. Сайт показывает десять самых частых значений оси и принимает другие, которые никогда не перечисляет: cuisine=mexican сужает поиск до 306 рецептов, не появляясь среди десяти. Ответ говорит, что список является выдержкой, а не называет его набором принятых значений, потому что сервер, который назвал бы его так, отказывал бы значениям, которые работают.
Итог может быть нижней границей. Сайт выдаёт не более 10 000 строк для одного поиска и останавливается. Итог, попадающий ровно на это число, был обрезан, поэтому он указывает нижнюю границу, а не количество, и total_is_ceiling говорит об этом.
Количество, которое сайт не опубликовал, равно null, а не 0. На шкале, начинающейся с нуля, они были бы неразличимы.
Сайт всё равно отвечает на термин, для которого у него ничего нет. Поиск foobar возвращает семь рецептов, включая коктейль из ревеня и батончик флэпджек, сопоставленных по фрагментам, и ничто не помечает ответ как неудачу. Поэтому каждый ответ возвращает rows_seen и matched_rows: сколько строк выдал сайт и сколько из них содержат слово из поиска. Когда второе равно нулю, а первое нет, примечание говорит, что количество описывает то, что предложил сайт, а не то, что совпало.
Два числа вместо вердикта. Законный поиск может не появиться ни в одном заголовке, и читатель, видящий 2 из 30, судит лучше, чем флаг, который судил бы за него.
Установка
npx mcp-bbc-goodfoodClaude Code
claude mcp add bbc-goodfood -- npx -y mcp-bbc-goodfoodЛюбой MCP-клиент
{
"mcpServers": {
"bbc-goodfood": {
"command": "npx",
"args": ["-y", "mcp-bbc-goodfood"]
}
}
}Контейнер
docker build -t mcp-bbc-goodfood .
docker run -i --rm mcp-bbc-goodfoodКонтейнер должен добраться до www.bbcgoodfood.com и ни до чего другого. Он не принимает никаких идентификаторов, поскольку их нечего принимать.
Настройки
Каждая настройка — это переменная окружения, и ни одна не обязательна. Значение вне границ отклоняется строкой в stderr, и остаётся значение по умолчанию: настройка, которая не может вступить в силу, говорит об этом, а не молча ограничивается.
Переменная | По умолчанию | Границы |
| — | Ваш идентификатор. Идентификатор проекта остаётся добавленным, чтобы сайт мог связаться с человеком. |
| 1500 | от 1000 до 60000 |
| 20000 | от 1000 до 120000 |
| 3 | от 0 до 8 |
| 900000 | от 0 до 86400000, 0 отключает хранение |
| 200 | от 1 до 5000 |
|
|
|
Нижнюю границу темпа нельзя понизить извне. Сайт бесплатен для чтения и не публикует задержку обхода, что является причиной быть осторожным, а не лицензией идти быстро.
Как библиотека
Слой чтения публикуется отдельно, со своим темпом, своим хранилищем и своей таксономией ошибок, без прикреплённого протокола:
import { GoodFoodClient } from "mcp-bbc-goodfood/client";Ошибки
Шесть кодов и не больше. Вызывающий код ветвится по коду, который открывает сообщение.
Код | Что означает |
| На сайте ничего нет по этому адресу |
| Аргументы не могли сформировать запрос |
| Сайт попросил этот клиент замедлиться. Ничего не говорит о том, совпало ли что-нибудь |
| Ответ пришёл в виде, который этот сервер не может прочитать |
| Запрос не удалось выполнить |
| Ответ не пришёл в течение установленного срока |
Код | Значение |
| На сайте ничего нет по этому адресу |
| Аргументы не могли сформировать запрос |
| Сайт попросил замедлиться. Это ничего не говорит о том, что соответствует |
| Ответ пришёл в форме, которую этот сервер не умеет читать |
| Запрос не удалось выполнить |
| Ответ не пришёл в течение отведённого времени |
Атрибуция
Рецепты, названия и аккаунты принадлежат BBC Good Food. Каждый ответ содержит источник, и список, показанный читателю, должен указывать на сайт и содержать ссылку на страницу.
Участие
См. CONTRIBUTING.md. Сначала тесты, минимальный порог покрытия 100 %, и правило, которое управляет всем: сервер никогда не говорит того, чего нет в данных.
Под лицензией 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