Як підключити ШІ-агента до Telegram через MCP: посібник
Підключаємо ШІ-агента до каналу по MCP: що підготувати заздалегідь, кроки для claude.ai, ChatGPT, Claude Code і Cursor та що робити, коли інструмент відмовив.
Коротко. До підключення будь-якого клієнта мають справджуватися три речі: у воркспейсу є власний бот, цей бот адміністратор каналу, і власник натиснув Start в особистій переписці з ним. Далі обираєте спосіб — адресу сервера
https://backend-git-production-cb93.up.railway.app/mcpяк користувацький конектор із входом через Telegram, або ключ у заголовкуAuthorizationз розділу «Налаштування → ШІ-агенти (MCP)». Потім з’являються чотирнадцять інструментів: п’ять читають канал, сім працюють із постами, два — з аудиторією. Нічого про товари, замовлення й особисті переписки, і взагалі нічого без бота. Кроки клієнтів звірено 8 вересня 2026 року.
Це практична половина порівняння MCP-серверів для Telegram: там вирішується, чи потрібен вам узагалі шлях через бота, а тут — як підключитися і що робити, коли не вийшло.
Що підготувати заздалегідь
Майже всі відмови трапляються тут, до першого виклику інструмента.
Воркспейсу потрібен власний бот. MCP-сервер AdminHub публікує через бота, якого власник завів для свого каналу, — ніколи через спільного бота AdminHub і ніколи через особистий акаунт. Без бота інструменти не деградують мовчки: вони відмовляють із кодом bot_required і посиланням, що створює бота в один дотик, — telegram.me/tg_adminhub_bot?startapp=bot. get_workspace — виняток, він відповідає й без бота, щоб агент міг зрозуміти, чого саме бракує.
Бот має бути адміністратором каналу. Бот, який просто перебуває в каналі, публікувати не може, і Telegram повідомить про це лише в мить невдалої відправки. Саме тому list_channels віддає в кожного каналу ознаку bot_is_admin, а create_post відхиляє канал, де її вимкнено, з помилкою channel_not_postable — замість того щоб прийняти пост, який потім загубиться.
Особиста переписка власника з ботом має бути відкрита. Це потрібно тільки для картинок, і це правило Telegram, а не наше: бот може отримати file id лише для файлу, який надіслав сам. Тому add_post_image завантажує картинку, один раз пересилає її через особисту переписку власника з ботом, забирає звідти ідентифікатор, прикладає до поста і видаляє переслане повідомлення. Якщо власник жодного разу не натискав там Start, інструмент відмовить заздалегідь, ще до завантаження файлу, з кодом owner_bot_not_started.
Побічний ефект варто назвати прямо: кожна прикладена агентом картинка з’являється — ненадовго і зі сповіщенням — у переписці власника з його ж власним ботом. Повідомлення потім видаляється, але воно було доставлене, і людина, яка картинки не замовляла, гадатиме, звідки та взялася. get_workspace віддає поле owner_dm_open, тож це перевіряється заздалегідь, а не за фактом відмови.
Два способи підключення
За адресою сервера, без ключа. Для claude.ai, ChatGPT, Claude Desktop і Claude Code. Ви додаєте користувацький конектор на https://backend-git-production-cb93.up.railway.app/mcp, відкривається сторінка AdminHub, ви входите через Telegram, обираєте воркспейс і натискаєте «Дозволити». Воркспейс без бота у списку видно, але обрати його не можна — публікувати в ньому не було б чим. Доступ видається одразу на всі три права: channel:read, posts:write і audience:read.
Ключем у заголовку. Для Claude Code, Cursor і всього, що вміє слати заголовок Authorization. Відкрийте «Налаштування» → «ШІ-агенти (MCP)» → «Створити ключ». Ключ показується рівно один раз, другого разу не буде: у базі зберігається тільки хеш. Відкликаються обидва способи там само, і відкликане підключення перестає працювати одразу.
Одне варто спланувати заздалегідь: ключ і підключення за адресою — це два підключення, а на Free доступне одне.
claude.ai
Customize → Connectors → Add custom connector → вставити адресу → Add. Налаштування автентифікації можна лишити за замовчуванням: сервер приймає і розміщені в Anthropic метадані клієнта, і динамічну реєстрацію, тож заповнювати вручну нічого. Далі підключаєтеся, проходите вхід через Telegram і вмикаєте конектор у тому чаті, де він потрібен.
Користувацькі конектори доступні на Free, Pro, Max, Team і Enterprise; на Free можна завести лише один. В організаціях Team і Enterprise конектор додає власник організації, у Organization settings → Connectors, а решта підключається до нього потім на своїй сторінці Connectors.
ChatGPT
Конектори в липні 2026 року перейменували на Apps, і користувацькому MCP-серверу додатково потрібен режим розробника: Settings → Security and login → Developer mode, після чого застосунок створюється з розділу Apps — адреса сервера плюс OAuth як спосіб автентифікації. У робочому просторі режим розробника вмикає адміністратор у розділі Permissions & Roles, він же публікує застосунок із налаштувань простору.
Два обмеження, про які краще знати заздалегідь: це функція вебверсії, на мобільних її немає; і повний MCP — та половина, що пише, — зараз доступний акаунтам Business і Enterprise/Edu, тоді як акаунт Pro підключає сервер лише з правами читання і завантаження. Тобто на Pro варто розраховувати на читальні інструменти і не розраховувати на публікаційні.
Claude Desktop
Той самий шлях через конектори, що й у claude.ai, а не через файл конфігурації: claude_desktop_config.json — про локальні stdio-сервери, а наш не такий. До віддаленого конектора Claude ходить з інфраструктури Anthropic, а не з вашої машини, — тут це нічого не змінює, адреса публічна.
Claude Code
Claude Code вміє обома способами, і це варто знати до того, як заводити ключ, який може й не знадобитися. З ключем:
claude mcp add --transport http adminhub https://backend-git-production-cb93.up.railway.app/mcp --header "Authorization: Bearer <ключ>"
Без ключа додайте той самий сервер без заголовка і дайте Claude Code провести вхід самому:
claude mcp add --transport http adminhub https://backend-git-production-cb93.up.railway.app/mcp
а потім виконайте /mcp і пройдіть вхід у браузері. Беріть ключ, якщо підключення має жити довше за браузерну сесію; беріть вхід, якщо не хочете тримати секрет у файлі конфігурації.
Cursor та інші клієнти із заголовком
Cursor читає ~/.cursor/mcp.json для всіх проєктів і .cursor/mcp.json для одного. Віддалений сервер — це запис із url і headers; поля транспорту в неї немає, віддаленою її робить саме url:
{
"mcpServers": {
"adminhub": {
"url": "https://backend-git-production-cb93.up.railway.app/mcp",
"headers": {
"Authorization": "Bearer ${env:ADMINHUB_MCP_KEY}"
}
}
}
}
Cursor підставляє ${env:...} всередину url і headers, тож ключ може жити у змінній оточення, а не у файлі, який легко закомітити. Усе інше, що говорить на Streamable HTTP, підключається так само: адреса плюс ключ як bearer-токен.
Чотирнадцять інструментів
| Інструмент | Що робить |
|---|---|
get_workspace | Воркспейс, тариф, статус бота, owner_dm_open, витрата постів за місяць |
list_channels | Усі канали з числом підписників, bot_is_admin та is_active |
get_channel_stats | Підсумки і прихід-відхід за днями, вікно до 90 днів |
list_posts | Останні пости, з фільтром за каналом або статусом |
get_post | Текст поста, статус доставки і помилка по кожному каналу |
create_post | Текст в один або кілька каналів: чернетка, за розкладом або одразу |
publish_post | Надсилає збережену чернетку |
update_post | Змінює текст, заголовок або час чернетки, запланованого чи невдалого поста |
edit_published_post | Змінює текст поста, який уже в каналі |
cancel_post | Видаляє чернетку, запланований чи невдалий пост — опубліковані лишаються |
retry_post_delivery | Повторює відправку в канали, де вона провалилася або була скасована |
add_post_image | Прикладає одну картинку за URL через особисту переписку власника |
list_subscribers | Підписники каналу: ім’я, юзернейм, телеграм-ідентифікатор |
get_subscriber | Те саме по одній людині |
Текст поста — це Telegram HTML, а не Markdown, і в часу публікації обов’язково має бути зсув UTC. Публікація йде чергою: пишучі інструменти повертають відповідь одразу, а доставка відбувається протягом хвилини, тому результат читають із get_post.
Чого тут немає
Ані товарів, ані замовлень, ані міні-CRM, ані бази знань — комерційна половина AdminHub і підтримка на ШІ через MCP не віддаються взагалі. Ані особистих переписок, ані довільних чатів, ані історії повідомлень: жоден інструмент не торкається діалогу, і в цьому вся різниця між таким сервером і юзерботом.
Про дані аудиторії варто сказати окремо, бо межу всередині них легко не помітити. Імена, юзернейми і телеграм-ідентифікатори віддаються за правом audience:read; суми витрат і довічна цінність разом із ними не приходять — вони з’являються, тільки якщо агент передав у цьому виклику include_spend. Межу проведено навмисно, і зважити її варто до підключення, а не після того, як агент підсумує ваших найкращих покупців.
Якщо не вийшло
Усі інструменти відмовляють із bot_required. У воркспейсу немає бота. Посилання на створення приходить прямо в тексті помилки, і до появи бота нічого працювати не буде.
Пост створився, але в канал не пішов. Зачекайте хвилину — доставка йде чергою — і викличте get_post, там у кожного каналу свої status та error. Звична причина: бот більше не адміністратор цього каналу. Поверніть права і викличте retry_post_delivery.
Картинка не прикладається. owner_bot_not_started означає, що власник жодного разу не відкривав особистої переписки з ботом воркспейсу. Попросіть його відкрити бота і натиснути Start; поле owner_dm_open у get_workspace це підтвердить. Сусідній випадок — owner_unreachable: переписка була відкрита, але бота відтоді заблокували.
plan_limit_reached. На Free доступні одне підключення і тридцять постів, створених через MCP, на місяць. Лічильник рахує створення, тому чернетки теж ідуть у залік, а пости з невдалою відправкою — ні. Ліміт підключень спільний для обох способів: ключ і підключення за адресою однаково займають єдиний слот, і друге відмовляє в мить створення, а не виклику. На Pro обох обмежень немає.
Агент не бачить підписників. Або в підключення немає права audience:read — ключі, випущені до появи цього права, несуть лише два попередні, і лікується це випуском нового ключа, — або клієнт запитав під час входу неповний набір прав, а сервер таке відхиляє цілком, замість того щоб тихо видати урізаний доступ. Підключіться наново, запитавши всі три права.
На сторінці MCP є адреса, список інструментів і відповіді на часті запитання, а ключ — за два дотики в налаштуваннях.
Джерела
Кроки клієнтів звірено 8 вересня 2026 року за документацією самих вендорів: довідковий центр і документація конекторів Anthropic для claude.ai і Claude Desktop, документація Claude Code по MCP для claude mcp add, посібник OpenAI із режиму розробника і довідковий центр для застосунків ChatGPT, документація Cursor по MCP для формату mcp.json. Усе, що стосується поведінки самого AdminHub, — чотирнадцять інструментів, названі відмови, права і ліміти Free — зі сторінки MCP.
Що зазвичай запитують
- Що треба підготувати до підключення MCP-сервера AdminHub?
- Три речі, і всі три про бота. Воркспейсу потрібен власний Telegram-бот: агент публікує через нього, а не через спільного бота AdminHub, і без бота кожен інструмент відмовляє з помилкою bot_required. Цей бот має бути адміністратором у кожному каналі, куди ви збираєтеся публікувати, інакше create_post відхилить канал одразу. І у власника має бути відкрита особиста переписка з цим ботом, тобто він хоча б раз натиснув Start, — без неї не можна прикладати картинки.
- Чи потрібен ключ, щоб підключитися?
- Лише тим клієнтам, що підключаються заголовком. claude.ai, ChatGPT, Claude Desktop і Claude Code беруть саму адресу сервера і проводять власний вхід: відкривається сторінка AdminHub, ви входите через Telegram, обираєте воркспейс і надаєте доступ. Claude Code, Cursor і все інше, що вміє слати заголовок Authorization, можуть замість цього узяти ключ. Ключ створюється в розділі Налаштування, ШІ-агенти (MCP), Створити ключ і показується один раз: у базі лежить тільки хеш, тому загублений ключ не відновлюють, а випускають наново.
- Що агент бачить про підписників?
- Імена, юзернейми і телеграм-ідентифікатори — і лише за окремим правом audience:read: підключення без нього дістане помилку прав, а не порожній список. Грошові поля, тобто сума витрат, довічна цінність і кількість платежів, не віддаються, доки агент не передасть у цьому виклику include_spend. Межу проведено навмисно: «хто підписаний» і «скільки він заплатив» — два різні питання, і друге треба поставити вголос.
- Що дає тариф Free по MCP?
- Одне підключення і тридцять постів, створених через MCP, на місяць. Обидва числа рахуються рівно так, як звучать. Ключ і підключення за адресою — це два підключення, тому на Free доступне одне з двох, а не обидва одразу. Лічильник постів рахує створені, включно з чернетками, а не доставлені; пости зі статусом невдалої відправки не рахуються взагалі. На Pro обох обмежень немає.
- Агент каже, що пост пішов, а в каналі порожньо. Чому?
- Публікація йде чергою, тож зачекайте хвилину і викличте get_post: він показує статус і помилку окремо по кожному каналу. Найчастіша причина — бот більше не адміністратор каналу. create_post відхиляє канал, куди бот не може писати, тому до доставки доживає випадок, коли бота понизили вже після створення поста. Поверніть права і викличте retry_post_delivery.