Skip to main content
Glama
smeet666

mcp-bbc-goodfood

mcp-bbc-goodfood

CI npm licence MIT

MCP-сервер, который читает рецепты на BBC Good Food. Только чтение, без ключа API, без аккаунта.

Французская версия


Зачем он нужен

BBC Good Food принимает любое значение на фасете поиска и отвечает на неизвестное значение нулём. Спросите glutenfree вместо gluten-free — и сайт скажет, что ничего не соответствует, с той же уверенностью, с какой говорит, что 48 рецептов соответствуют правильному написанию. Модель, которая угадывает написание, получает уверенное отсутствие вместо отказа.

Этот сервер публикует словарь, чтобы вопрос можно было задать правильно.

Related MCP server: mcp-spoonacular

Инструмент

list_filters

Перечисляет оси, по которым можно сузить поиск рецептов, со значениями, которые принимает каждая, и количеством рецептов, которые их несут.

Аргумент

Тип

Значение

query

строка, необязательный

Измеряет количество внутри этого поиска. Опустите его для всего списка сайта.

Сайт считает свои фасеты по строкам, которые возвращает поиск, поэтому два ответа отвечают на разные вопросы. Внутри 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-goodfood

Claude 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, и остаётся значение по умолчанию: настройка, которая не может вступить в силу, говорит об этом, а не молча ограничивается.

Переменная

По умолчанию

Диапазон

BGF_USER_AGENT

Ваш собственный идентификатор. Идентификатор проекта остаётся добавленным, чтобы сайт мог связаться с человеком.

BGF_MIN_INTERVAL_MS

1500

от 1000 до 60000

BGF_TIMEOUT_MS

20000

от 1000 до 120000

BGF_MAX_RETRIES

3

от 0 до 8

BGF_CACHE_TTL_MS

900000

от 0 до 86400000, 0 отключает хранение

BGF_CACHE_MAX_ENTRIES

200

от 1 до 5000

BGF_LOG_LEVEL

error

silent, error, info, debug

Нижнюю границу темпа нельзя понизить извне. Сайт бесплатен для чтения и не публикует задержку обхода, что является причиной быть осторожным, а не лицензией быть быстрым.

Как библиотека

Слой чтения публикуется отдельно, со своим темпом, своим хранилищем и своим словарём ошибок, без прикреплённого протокола:

import { GoodFoodClient } from "mcp-bbc-goodfood/client";

Ошибки

Шесть кодов и не больше. Вызывающий код ветвится по коду, который открывает сообщение.

Код

Что означает

not_found

На сайте ничего нет по этому адресу

invalid_input

Аргументы не могли сформировать запрос

rate_limited

Сайт попросил этот клиент замедлиться. Ничего не говорит о том, совпало ли что-нибудь

parse_failure

Ответ пришёл в виде, который этот сервер не может прочитать

network_error

Запрос не удалось выполнить

timeout

Ответ не пришёл в течение установленного срока

Атрибуция

Рецепты, названия и количество принадлежат BBC Good Food. Каждый ответ несёт источник, и список, показанный читателю, должен указывать сайт и ссылаться на страницу.

Участие

См. CONTRIBUTING.md. Тесты идут первыми, покрытие имеет нижнюю границу 100%, и правило, которому следует всё, — сервер никогда не говорит того, чего нет в данных.

Лицензия MIT.


mcp-bbc-goodfood (французский)

MCP-сервер, который читает рецепты BBC Good Food. Только чтение, без ключа API и без аккаунта.

Зачем он нужен

BBC Good Food принимает любое значение на фасете поиска и отвечает на неизвестное значение нулём. Спросите glutenfree вместо gluten-free — и сайт ответит, что ничего не соответствует, с той же уверенностью, с какой говорит, что 48 рецептов соответствуют правильному написанию. Модель, которая угадывает написание, получает уверенное отсутствие, а не отказ.

Этот сервер публикует словарь, чтобы вопрос можно было задать.

Инструмент

list_filters

Перечисляет оси, по которым можно сузить поиск рецептов, со значениями, которые принимает каждая, и количеством рецептов, которые их несут.

Аргумент

Тип

Значение

query

строка, необязательный

Измеряет количество внутри этого поиска. Без него они относятся ко всему списку сайта.

Сайт считает свои фасеты по строкам, которые возвращает поиск, поэтому два ответа отвечают на разные вопросы. Внутри 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-goodfood

Claude 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, и остаётся значение по умолчанию: настройка, которая не может вступить в силу, говорит об этом, а не молча ограничивается.

Переменная

По умолчанию

Границы

BGF_USER_AGENT

Ваш идентификатор. Идентификатор проекта остаётся добавленным, чтобы сайт мог связаться с человеком.

BGF_MIN_INTERVAL_MS

1500

от 1000 до 60000

BGF_TIMEOUT_MS

20000

от 1000 до 120000

BGF_MAX_RETRIES

3

от 0 до 8

BGF_CACHE_TTL_MS

900000

от 0 до 86400000, 0 отключает хранение

BGF_CACHE_MAX_ENTRIES

200

от 1 до 5000

BGF_LOG_LEVEL

error

silent, error, info, debug

Нижнюю границу темпа нельзя понизить извне. Сайт бесплатен для чтения и не публикует задержку обхода, что является причиной быть осторожным, а не лицензией идти быстро.

Как библиотека

Слой чтения публикуется отдельно, со своим темпом, своим хранилищем и своей таксономией ошибок, без прикреплённого протокола:

import { GoodFoodClient } from "mcp-bbc-goodfood/client";

Ошибки

Шесть кодов и не больше. Вызывающий код ветвится по коду, который открывает сообщение.

Код

Что означает

not_found

На сайте ничего нет по этому адресу

invalid_input

Аргументы не могли сформировать запрос

rate_limited

Сайт попросил этот клиент замедлиться. Ничего не говорит о том, совпало ли что-нибудь

parse_failure

Ответ пришёл в виде, который этот сервер не может прочитать

network_error

Запрос не удалось выполнить

timeout

Ответ не пришёл в течение установленного срока

Код

Значение

not_found

На сайте ничего нет по этому адресу

invalid_input

Аргументы не могли сформировать запрос

rate_limited

Сайт попросил замедлиться. Это ничего не говорит о том, что соответствует

parse_failure

Ответ пришёл в форме, которую этот сервер не умеет читать

network_error

Запрос не удалось выполнить

timeout

Ответ не пришёл в течение отведённого времени

Атрибуция

Рецепты, названия и аккаунты принадлежат BBC Good Food. Каждый ответ содержит источник, и список, показанный читателю, должен указывать на сайт и содержать ссылку на страницу.

Участие

См. CONTRIBUTING.md. Сначала тесты, минимальный порог покрытия 100 %, и правило, которое управляет всем: сервер никогда не говорит того, чего нет в данных.

Под лицензией MIT.

Install Server
A
license - permissive license
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables querying food nutritional information, discovering recipes by ingredients or diet type, getting ingredient substitutions, and receiving personalized food recommendations based on mood and season.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables browsing recipes, searching by category, and viewing detailed recipe information from the Gousto cookbook API via natural language.
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying Open Food Facts product database by barcode, full-text search, category, brand, or country.
    12
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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