Как подключить ИИ-агента к 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.