Та сама звірка пив, яку робить браузерне розширення на сторінках магазинів,
доступна і напряму зі свого AI-агента: надсилаєш список пив — отримуєш, що з
них ти вже пив (з оцінкою — де збіг певний), а що каталог бота знає про
кожне. Це один інструмент, match_beers.
Знадобиться той самий токен, що й для розширення — див. Частину 1 у
інструкції встановлення розширення (/start → /link →
/import), якщо ти ще не проходив ці кроки.
Надішли боту в Telegram:
/extension
Бот дасть токен у копійованому блоці. Це той самий токен, що й для браузерного розширення — жодного окремого токена для MCP заводити не треба.
Важливо: видача нового токена (повторний
/extension) скасовує попередній. Якщо після цього MCP раптом перестав з'єднуватись — онови токен у налаштуваннях клієнта нижче.
Одна команда:
claude mcp add --transport http warsaw-beer https://beer-api.ysilvestrov-ai.uk/mcp \
--header "Authorization: Bearer ТВІЙ_ТОКЕН"
Заміни ТВІЙ_ТОКЕН на те, що дав бот. Перевірити з'єднання:
claude mcp list
Має з'явитися warsaw-beer зі статусом підключено.
Спочатку постав токен у змінну середовища:
export WARSAW_BEER_TOKEN="ТВІЙ_ТОКЕН"
Тоді одна команда (саме так це підключення й перевіряли наживо):
codex mcp add warsaw-beer --url https://beer-api.ysilvestrov-ai.uk/mcp \
--bearer-token-env-var WARSAW_BEER_TOKEN
Команда сама допише потрібний запис у ~/.codex/config.toml — ось що там
з'явиться:
[mcp_servers.warsaw_beer]
url = "https://beer-api.ysilvestrov-ai.uk/mcp"
bearer_token_env_var = "WARSAW_BEER_TOKEN"
Якщо тобі зручніше редагувати файл руками, можна вписати цей блок і самому —
Codex однаково читає токен зі змінної середовища WARSAW_BEER_TOKEN, а не з
файлу.
Питаєш агента про список пив — у відповіді на кожне буде один із шести статусів:
| Статус | Що означає |
|---|---|
drunk |
ти точно вже пив це пиво — відомо напевно |
probably_drunk |
схоже, що ти вже пив, але збіг неточний — варто перевірити самому; оцінку тут не показуємо, бо не певні, що це те саме пиво |
not_drunk |
твоя історія відома, і в ній цього пива немає |
unknown |
про твою історію взагалі нічого не відомо — це не «ти не пив», а «нам нема звідки це знати» |
not_in_catalog |
прийнятного збігу в каталозі бота не знайшли — пиво може бути в каталозі під іншою назвою |
not_searched |
точного збігу нема, і ширший пошук по всьому каталогу не відбувся — це не «нема», а «не шукали» |
Два з цих статусів варто зрозуміти правильно, бо вони легко переплутуються з іншими:
unknown з'являється, коли в бота взагалі немає твоєї історії пив — а
наповнює її саме браузерне розширення (через /import або синхронізацію
чекінів у розширенні). Поки цього не зроблено, бот не може сказати ні «пив»,
ні «не пив» — він чесно каже «не знаю». Це не привід вважати, що ти нічого не
пив.
not_searched з'являється тому, що пошук по всьому каталогу — не лише по
точних збігах — має бюджет 20 позицій на один виклик. Якщо в списку
більше пив без точного збігу, частина з них лишається без цього ширшого
пошуку: не тому, що їх нема в каталозі, а тому, що до них просто не дійшли за
один раз.
Найважливіше — і найнеочевидніше — саме тут. Забутий або неправильний токен виглядає в обох клієнтах геть не так, як «немає токена».
Claude Code покаже щось на кшталт:
Failed to connect — Dynamic Client Registration rejected (HTTP 404): 404 Not Found
Це не проблема з OAuth і не проблема сервера. Слів «401», «unauthorized» чи «token» у цьому повідомленні не буде взагалі — але означає воно рівно одне: токена нема або він неправильний. Онови його командою вище.
Codex CLI просто скаже моделі, що інструмент недоступний у цій сесії.
Справжня причина — HTTP 401 unauthorized — лежить у технічному потоці
помилок Codex, а не в тому, що бачить агент. Якщо match_beers раптом
«зник» — насамперед перевір, чи задано WARSAW_BEER_TOKEN і чи це свіжий
токен від /extension.
Окремо, і це не про токен. У Codex є ще одна пастка: за замовчуванням він
питає підтвердження перед кожним викликом тули. Якщо в тебе виставлена
політика підтверджень never (автоматично відмовляти на всі запитання),
виклик впаде з помилкою MCP tool call requires approval. Токен тут ні до
чого — причина в цій політиці. Дозволь підтвердження для match_beers (або
зміни політику підтверджень) і повтори запит.
brewery і name), а не
одним рядком — точний збіг залежить від цього.