Гайд

Как подключить ИИ-агента к Telegram по MCP: руководство

Подключаем ИИ-агента к каналу по MCP: что подготовить заранее, шаги для claude.ai, ChatGPT, Claude Code и Cursor и что делать, если инструмент отказал.

AdminHub

Короче. До подключения любого клиента должны быть верны три вещи: у воркспейса есть собственный бот, этот бот администратор канала, и владелец нажал 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 → ConnectorsAdd 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.