CLI tools

MCP-сервер

This page is in Russian.

max mcp отдаёт профиль агенту по MCP — через stdin и stdout, без сети. Сервер ставится вместе с max, отдельно ничего устанавливать не нужно.

Когда он нужен. В Claude Code, Codex и других агентах с терминалом хватает самого max и инструкции для агента: по токенам и по возможностям разницы нет. MCP нужен клиентам без терминала — Claude Desktop, чату Cursor — и тем, кто хочет, чтобы клиент спрашивал разрешения на каждую отправку. ChatGPT и Claude в браузере так не подключить — для них remote.md.

Подключение

Для бота — свой сервер, max <имя> bot mcp (bot.md).

Сначала войти в терминале, как обычно (max session start), — через MCP вход не делается.

Claude Code:

claude mcp add max -- max mcp

С профилем — он идёт первым словом, как в любой команде:

claude mcp add max-work -- max work mcp

Claude Desktop, Cursor и другие — готовую запись для их файла настроек печатает сам max:

max mcp config                  # только чтение
max work mcp config --allow-send
{
  "mcpServers": {
    "max": {
      "type": "stdio",
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": ["C:\\Users\\you\\AppData\\Roaming\\npm\\node_modules\\@leemour\\max-cli\\dist\\bin\\max.js", "mcp"]
    }
  }
}

Запись вставляется в mcpServers файла настроек клиента: у Claude Desktop это %APPDATA%\Claude\claude_desktop_config.json на Windows и ~/Library/Application Support/Claude/claude_desktop_config.json на macOS, у Cursor — ~/.cursor/mcp.json. Сама команда ничего не записывает.

Пути в ней полные, потому что клиент, запущенный не из терминала, не видит PATH терминала, а на Windows max — это файл max.cmd, который клиент без оболочки запустить не может. Флаги --allow-send и другие переносятся в запись. Переменные MAX_CONFIG_DIR, MAX_STATE_DIR и MAX_CACHE_DIR попадают в неё, только если заданы; токен — никогда.

Если Node поставлен через nvm, fnm или Volta, путь к нему относится к одной версии Node — после её смены запустите max mcp config снова. Из npx команда отказывается работать: кэш npx очищается, и путь перестанет существовать.

⚠ Переменные MAX_CONFIG_DIR, MAX_STATE_DIR, MAX_CACHE_DIR меняют, где искать вход. Если в терминале они заданы, а клиенту MCP — нет (или наоборот), сервер ответит «нет сессии», хотя max в терминале работает. Задайте им одно и то же — или не задавайте нигде.

Отправка выключена, пока её не включили

Без флагов и без mcpTools в настройках сервер только читает: инструментов записи нет в списке вообще. Включить отправку:

claude mcp add max -- max mcp --allow-send

Отправка через MCP проходит те же проверки, что max messages send: профиль только для чтения, список разрешённых получателей, лимит в час, журнал отправок (security.md). Кроме того, инструмент помечен как опасный: VS Code и Cursor спрашивают разрешения на каждый вызов, а Claude Code по его документации показывает окно подтверждения даже там, где остальное разрешено заранее.

Подтверждение формой от самого сервера

claude mcp add max -- max mcp --allow-send --confirm-send

С --confirm-send перед каждым действием, которое увидят другие, — отправкой, правкой, пересылкой, закреплением, реакцией, голосом в опросе, отметкой о прочтении, удалением и инструментами из mcpTools — сервер сам показывает форму: в какой чат — название и id, во что разрешилось имя, которое написал агент, — остальные аргументы и текст целиком. Действие выполняется только после Accept — полей в форме нет, одна кнопка. Окно клиента показывает аргументы так, как их написала модель (chat: "Team"); форма — то, на что ты соглашаешься («Team Alpha (111)»).

  • Decline или закрытая форма — ничего не отправлено, агент получает confirmation_required и не должен пробовать снова.
  • Клиент, который не умеет показывать формы, получает ошибку — ничего не отправлено. Claude Code формы показывает.
  • «Да» привязано к тому, что было в форме: если агент подменит чат, текст или инструмент после подтверждения, ничего не будет сделано.
  • «Да» действует один раз и 5 минут. Повтор того же ответа ничего не отправляет.
  • Без --allow-send, --allow-mark-read, --allow-delete, --allow-moderate и без mcpTools в настройках флаг — ошибка запуска: подтверждать нечего.

--allow-mark-read даёт агенту инструмент max_chats_mark_read — отметить чат прочитанным. Собеседник это видит, поэтому флаг отдельный и --allow-send его не включает. Отметка проходит те же проверки, что отправка.

--allow-delete даёт агенту инструмент max_messages_delete — удалить до 10 сообщений только у владельца; у собеседника они остаются. Удаления нельзя отменить, поэтому флаг отдельный и --allow-send его не включает. Удалить сообщение «у всех» этим инструментом нельзя — это команда max messages delete --for-everyone или проверка группы по правилам (ниже). Удаление проходит те же проверки, что отправка, и каждое сообщение считается в sendsPerHour.

--allow-moderate даёт агенту инструмент max_chats_check — то же, что max chats check: проверить группу по её правилам и сделать то, что они разрешают. Сам флаг — это то согласие, которого требует уровень flag: с ним сервер удаляет сообщения и людей из группы там, где правило стоит на flag или allow. Для уровня confirm сервер сначала ничего не делает и показывает вам одну форму со всеми такими действиями; после «да» делает ровно их, а если за это время нашлось что-то новое — откажет, и проверку надо запустить снова. forbid не делается никогда. С dry_run инструмент только показывает план. Нужны разрешения профиля delete и groups.

Флаги включают инструменты, а allow в профиле решает, какие из них агент вообще увидит: нужны оба. max mcp --allow-send --allow-delete для профиля с allow = send покажет отправку, но не правку, пересылку, закрепление и удаление. Инструменты чтения видны всегда.

Изменения аккаунта — только из файла настроек

Контакты, закрытие опроса, вступление в группы и выход из них, создание групп, админы и профиль флагом не включаются. Их включает только mcpTools в файле настроек, по группам:

max config set mcpTools contacts,polls      # профилю по умолчанию
max work config set mcpTools groups         # профилю work
ГруппаИнструментыРазрешение в allow
contactsmax_contacts_add, _remove, _rename, _block, _unblockcontacts
pollsmax_polls_closeedit
groupsmax_chats_join, _leave, _create, max_chats_admins_add, _removegroups
profilemax_account_update — имя и описание, без фотоprofile

Так агент не может включить их сам, дописав флаг в свою же команду запуска. Каждое действие проходит readOnly, allow и журнал отправок, как команда. --confirm-send показывает форму и для них. В разделе bot файла настроек mcpTools не принимается.

Инструменты

ИнструментКомандаЧто делает
max_inboxmax inbox, --sinceчто пришло: непрочитанное или всё после момента, одним вызовом; с transcribe расшифровывает голосовые; ничего не отмечает и не сдвигает точку max inbox --new
max_reviewmax reviewвсе сообщения, свои тоже, во всех изменившихся чатах с момента since (по умолчанию 3 дня) — для обзора обязательств; с transcribe расшифровывает голосовые; chat — только один чат; unanswered_after_hours — только вопросы, на которые столько часов не ответили ни вы, ни админы группы; ничего не отмечает
max_account_showmax account showпод кем вход
max_statusmax doctorза какой профиль говорит сервер, есть ли токен, был ли вход и какие пишущие инструменты включены; в MAX не входит
max_chats_listmax chats listчаты, с поиском по имени, видом и непрочитанными
max_chats_showmax chats showодин чат, кто в нём, и настройки группы
max_chats_eventsmax chats eventsкто вступил, вышел, кого добавили и удалили — по служебным сообщениям; без since — за 7 дней
max_chats_membersmax chats members listвсе участники группы или канала от MAX: когда заведён аккаунт, когда был в сети
max_chats_rulesmax chats rules showправила модерации группы; менять их может только владелец, командой
max_contacts_listmax contacts listлюди, с кем есть личная переписка
max_contacts_showmax contacts showодин человек и общие чаты
max_messages_listmax messages listсообщения чата; с transcribe расшифровывает голосовые; ничего не отмечает прочитанным
max_messages_searchmax messages searchпоиск по уже прочитанному на этой машине
max_messages_contextmax messages show, contextодно сообщение и соседние
max_messages_photomax messages downloadфото из сообщения как картинка, до 512 КБ; файл, видео, голосовое или фото крупнее — отказ с командой, которая их сохранит. ссылку на фото этот инструмент не отдаёт
max_messages_scheduledmax messages scheduledчто ждёт отправки в чате, с scheduledFor
max_messages_transcribemax messages transcribeтекст голосового, распознанный на этой машине
max_messages_sendmax messages sendотправка, только с --allow-send; с at — позже, как --at-time; reply_to — ответ на сообщение, markdown — оформление
max_messages_editmax messages editправка своего сообщения, только с --allow-send; markdown — оформление
max_messages_forwardmax messages forwardпересылка в другой чат, только с --allow-send; silent — без уведомления
max_messages_pinmax messages pinзакрепить в группе или канале, только с --allow-send; без уведомления, если не передан notify
max_messages_unpinmax messages unpinоткрепить, только с --allow-send
max_reactions_addmax reactions addпоставить реакцию, только с --allow-send и разрешением reaction
max_reactions_removemax reactions removeснять свою реакцию, так же
max_polls_votemax polls voteпроголосовать или снять голос, только с --allow-send
max_polls_createmax polls createсоздать опрос, только с --allow-send
max_chats_mark_readmax chats mark-readотметить чат прочитанным, только с --allow-mark-read
max_messages_deletemax messages deleteудалить у владельца, только с --allow-delete
max_chats_checkmax chats checkпроверить группу по правилам и сделать, что они разрешают, только с --allow-moderate
max_contacts_*, max_polls_close, max_chats_join и другиеmax contacts …, max polls close, max chats …, max account updateтолько если группа названа в mcpTools (выше)

Ответы — те же, что --json у команды: список — { items, page, limit, hasMore }, id — строки. Ошибка — { error: { code, message, … } } с теми же кодами, что у CLI; неоднозначное имя чата отвечает списком candidates и ничего не отправляет.

at у max_messages_send — те же правила, что у --at-time: 2026-09-25T09:00 (местное время) или 30m, 2h, 1d, от минуты до года, с округлением вниз до минуты. С silent и с send_id — отказ. В часовой лимит сообщение идёт в тот час, когда уйдёт. С --confirm-send форма показывает время отправки. Если ответа нет, повтора не будет: проверьте очередь через max_messages_scheduled.

Команды и чаты по @

Сервер даёт четыре готовых запроса — в Claude Code это команды через /:

ЗапросАргументЧто делает агент
catch-upsince — необязательноодин раз вызывает max_inbox и пересказывает по чатам; ничего не отправляет
replychatчитает чат, пишет черновик и отправляет только после вашего «да» на этот текст
reviewsince, groups — необязательноодин раз вызывает max_review и раскладывает на «я должен», «жду от других», «нужно уточнить» с id сообщений; перед «просрочено» ищет, не сделано ли это в группах; напоминания — только черновики до вашего «да»; в конце — since для следующего обзора
findtextищет человека или слова и показывает сообщения вокруг найденного; ничего не отправляет

Отправка в reply идёт через max_messages_send, поэтому без --allow-send агент только покажет черновик.

Чаты доступны как ресурсы max://chat/<id> — в Claude Code их можно упомянуть через @. Ресурс отдаёт чат и его последние сообщения. Список ресурсов берётся из локальной копии и в MAX не ходит; пока локальной копии нет, он пуст. Входит в MAX только чтение одного чата.

Ресурс max://skill — навык max, тот же текст, что печатает max skill show. Он есть и у max mcp, и у max bot mcp, и в MAX не ходит.

Как он держит соединение

Первый вызов входит в MAX, следующие идут через то же соединение. Оно закрывается после 2 минут без вызовов и в любом случае через 5 минут после входа — список чатов берётся из ответа на вход, и без этого предела агент читал бы устаревший. Следующий вызов входит заново. Вызовы выполняются по одному, даже если клиент прислал их одновременно.

Сервер выходит, как только клиент закрыл stdin, и закрывает соединение с MAX.

On this page