REST API v1 · Разработчикам

MCP-сервер: управляйте Discord-сервером из ИИ-ассистентов

BotGG предоставляет удалённый сервер Model Context Protocol. Подключите к нему ИИ-ассистента — и он сможет пользоваться теми же эндпоинтами, что и REST API, с теми же правами, лимитами и проверками, для одного сервера, на который вы дали доступ.

Документация для разработчиков
На этой странице

Подключение клиента

Адрес сервера — https://console.botgg.app/mcp (MCP через Streamable HTTP). Клиенты входят одним из двух способов:

  • Вход через Discord (OAuth) — рекомендуется. Клиенту нужен только адрес. Он откроет BotGG в браузере, вы войдёте через Discord, выберете один сервер и разрешения и подтвердите. Ничего копировать не нужно, а отключить приложение можно в любой момент.
  • API-ключ. Для клиентов без OAuth: создайте ключ в консоли (см. авторизацию) и передавайте его как Authorization: Bearer botgg_….

Claude (claude.ai и Claude Desktop)

  1. Откройте Settings → Connectors и выберите Add custom connector.
  2. Назовите его BotGG, вставьте адрес https://console.botgg.app/mcp и нажмите Add.
  3. Нажмите Connect: откроется BotGG, войдите через Discord и подтвердите (см. экран согласия).

ChatGPT

  1. Откройте Settings → Apps & Connectors. Для своих коннекторов нужен Developer mode (в Advanced settings) на вашем тарифе.
  2. Выберите Create, назовите коннектор BotGG, вставьте https://console.botgg.app/mcp как адрес MCP-сервера и выберите аутентификацию OAuth.
  3. Создайте коннектор и войдите, когда ChatGPT откроет BotGG.

Cursor

Добавьте сервер в ~/.cursor/mcp.json (или в .cursor/mcp.json проекта). Рядом с ним Cursor покажет Needs login — нажмите, чтобы войти через Discord в браузере.

.cursor/mcp.json
{
  "mcpServers": {
    "botgg": { "url": "https://console.botgg.app/mcp" }
  }
}

Claude Code

Terminal
claude mcp add --transport http botgg https://console.botgg.app/mcp
# then run /mcp inside Claude Code and choose "Authenticate"

Любой клиент с API-ключом

Конфигурация MCP-клиента (JSON)
{
  "mcpServers": {
    "botgg": {
      "type": "http",
      "url": "https://console.botgg.app/mcp",
      "headers": { "Authorization": "Bearer botgg_…" }
    }
  }
}

Когда клиент входит, BotGG показывает, кто запрашивает доступ и куда вы вернётесь после ответа. Приложения регистрируются сами, поэтому их название не проверено — одобряйте только подключение, которое начали вы.

  1. Войдите через Discord (если вы ещё не вошли в консоль).
  2. Выберите один сервер. Показаны серверы, где у вас есть право «Управлять сервером»; на выбранном должен быть BotGG. Подключение всегда относится ровно к одному серверу.
  3. Выберите разрешения. Это те же права, что и у API-ключей. Чувствительные (действия над участниками, данные модерации) по умолчанию не отмечены; для их выбора нужно дополнительное подтверждение.
  4. Разрешите или отклоните. Приложение получает короткоживущий токен доступа (1 час) и токен обновления, который меняется при каждом использовании.

Каждое подключение видно в консоли в разделе Сервер → Подключённые приложения: права, кто подключил и когда приложение последний раз использовалось. Любой администратор сервера может отключить его там — доступ пропадает сразу. Если человек, подключивший приложение, теряет право «Управлять сервером», доступ прекращается автоматически при следующем вызове.

Инструменты

На каждый эндпоинт REST API приходится один инструмент — например, bank.getBalance становится инструментом bank_get_balance. Входные данные — поля пути, запроса и тела эндпоинта; ID сервера не передаётся, он берётся из подключения. Список инструментов всегда совпадает со справочником API, а клиент видит только инструменты, право на которые есть у его подключения.

  • Инструменты только для чтения помечены соответственно; инструменты, которые меняют или удаляют данные, помечены как деструктивные, и ассистенту предписано сначала подтвердить точное действие у вас.
  • Каждый вызов проходит тот же путь, что и запрос к REST API: проверки прав и модуля, валидацию, коды ошибок и лимит запросов тарифа для подключения (у API-ключа один общий лимит на REST и MCP).
  • Ошибки возвращаются как результат инструмента с теми же кодами error, что и в REST API, поэтому ассистент может их объяснить или исправить.
  • Изменения через MCP записываются в журнал аудита сервера с названием приложения.
Права API-ключей
ПравоЧто разрешает
guild:readЧтение данных сервера — Название, иконка, число участников, язык и включённые функции сервера; роли, каналы и основные данные участника (роли, ник, дата входа).
bank:readЧтение Банка — Балансы, история операций участника и таблица лидеров.
bank:writeИзменение балансов — Начислять и списывать валюту участникам. Каждое изменение попадает в журнал Банка.
levels:readЧтение Уровней — Уровень, опыт и место участника, таблица лидеров по опыту.
levels:writeИзменение опыта — Начислять, списывать и задавать опыт участникам. Роли-награды и объявления о новом уровне работают как с командами /levels; каждое изменение попадает в журнал аудита.
invites:readЧтение приглашений — Счётчики приглашений и место участника, таблица лидеров по приглашениям.
invites:writeИзменение бонусных приглашений — Добавлять и убирать бонусные приглашения, как /invites add. Награды за рубежи выдаются автоматически; каждое изменение попадает в журнал аудита.
shop:readЧтение Магазина — Магазины, товары, инвентарь участников и история покупок.
shop:write ЧувствительноеУправление Магазином — Покупать товары за участников (списывается с их баланса в Банке, роли выдаются), выдавать товары бесплатно, возвращать покупки, пополнять запас и включать или выключать товары.
giveaways:readЧтение розыгрышей — Идущие и завершённые розыгрыши: число участников, победители и список участников.
giveaways:writeУправление розыгрышами — Запускать розыгрыши, завершать их досрочно и перевыбирать победителей. Бот публикует и обновляет их в Discord.
flows:readЧтение сценариев — Список сценариев (название, вкл./выкл., триггер), статус и результат запусков.
flows:run ЧувствительноеЗапуск сценариев — Запускать включённые сценарии с триггером «Вручную» или «Вебхук» со своими входными данными. Сценарий выполняет все свои шаги; запуски учитываются в дневном лимите тарифа.
tickets:readЧтение тикетов — Список и данные тикетов (автор, панель, статус, ответы формы) и сохранённые расшифровки закрытых тикетов.
tickets:writeЗакрытие тикетов — Закрывать открытые тикеты с причиной — бот сохраняет расшифровку, пишет в лог и уведомляет автора, как при закрытии персоналом.
applications:readЧтение заявок — Формы и поданные заявки, включая ответы кандидатов, голоса и решения.
applications:writeРешения по заявкам — Принимать и отклонять открытые заявки. Бот выдаёт / снимает роли формы, пишет кандидату в ЛС и обновляет обсуждение, как при решении персонала.
appeals:readЧтение апелляций — Апелляции на бан с ответами, причиной бана и перепиской (внутренние заметки персонала не передаются).
appeals:write ЧувствительноеРешения по апелляциям — Одобрять (разбанивать) или отклонять открытые апелляции с причиной; бот разбанивает и пишет в ЛС, как при решении персонала.
Одобрение апелляции снимает бан с участника.
moderation:read ЧувствительноеЧтение дел модерации — Дела модерации (предупреждения, тайм-ауты, кики, баны…) с причинами, ссылками-доказательствами и модераторами, и статус действий через API.
Открывает доступ к истории модерации участников.
moderation:write ЧувствительноеМодерация участников — Предупреждать, давать тайм-аут, кикать, банить и разбанивать от имени создателя ключа: только пока у него есть нужное право Discord, только участников ниже его и бота по роли, с причиной, не больше 10 действий в минуту.
Любой, у кого есть этот ключ, может наказывать участников от вашего имени. Храните его в секрете и отзывайте, когда он не нужен.

Ограничения

Ограничения MCP
ЧтоОграничение
Вызовы инструментов на подключениеЛимит API тарифа в минуту: Free 60, Pro 600
Прочие MCP-запросы (список инструментов, рукопожатия)300 в минуту на подключение
Токен доступа / токен обновления1 час / 30 дней, обновляется при каждом обновлении
Размер запроса64 КБ на MCP-сообщение; 8 КБ на тело инструмента, как в REST API

Безопасность

  • Подтверждение деструктивных действий запрашивает ваше ИИ-приложение на основе пометок инструментов — BotGG не видит ваш чат. Не отключайте подтверждения в клиенте.
  • Запись через MCP не использует Idempotency-Key, поэтому ассистенту не стоит вслепую повторять неудавшуюся запись — сначала проверьте результат. Для автоматических записей с повторами используйте REST API.
  • Токены привязаны к этому адресу и к одному Discord-серверу; BotGG хранит только их хеши. Повторно использованный токен обновления из предосторожности отключает приложение — просто подключите его снова.

Решение проблем

Частые ответы и решения
ОтветЧто делать
401 с error="invalid_token"Токен истёк, отозван или приложение отключено — войдите снова из клиента.
403 с error="insufficient_scope"У подключения нет права из scope. Подключитесь заново и отметьте его на экране согласия.
403 «Origin not allowed»Браузерные клиенты должны работать с разрешённого origin; десктопные и серверные клиенты Origin не отправляют.
Результат инструмента BANK_DISABLED / FEATURE_DISABLEDВключите модуль для сервера в консоли.
Нет данных для входа или они недействительны
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://console.botgg.app/.well-known/oauth-protected-resource/mcp"
Не хватает права
HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer resource_metadata="…", error="insufficient_scope", scope="bank:write"

Частые вопросы

Может ли одно подключение управлять несколькими серверами?

Нет. Каждое подключение привязано к одному выбранному серверу. Чтобы пользоваться приложением на другом сервере, подключите его ещё раз и выберите тот сервер.

Кто видит и может отключить подключённые приложения?

Любой администратор сервера — на странице «Подключённые приложения» сервера в консоли.

Получает ли ассистент доступ к моему аккаунту Discord?

Нет. Он получает токен BotGG, ограниченный одним сервером и одобренными вами правами. Вход в Discord остаётся у BotGG.

Готовы прокачать свой сервер?

Добавьте BotGG бесплатно и включайте нужные функции в веб-консоли.