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 mcpClaude 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 |
|---|---|---|
contacts | max_contacts_add, _remove, _rename, _block, _unblock | contacts |
polls | max_polls_close | edit |
groups | max_chats_join, _leave, _create, max_chats_admins_add, _remove | groups |
profile | max_account_update — имя и описание, без фото | profile |
Так агент не может включить их сам, дописав флаг в свою же команду запуска. Каждое действие проходит
readOnly, allow и журнал отправок, как команда. --confirm-send показывает форму и для них. В разделе bot
файла настроек mcpTools не принимается.
Инструменты
| Инструмент | Команда | Что делает |
|---|---|---|
max_inbox | max inbox, --since | что пришло: непрочитанное или всё после момента, одним вызовом; с transcribe расшифровывает голосовые; ничего не отмечает и не сдвигает точку max inbox --new |
max_review | max review | все сообщения, свои тоже, во всех изменившихся чатах с момента since (по умолчанию 3 дня) — для обзора обязательств; с transcribe расшифровывает голосовые; chat — только один чат; unanswered_after_hours — только вопросы, на которые столько часов не ответили ни вы, ни админы группы; ничего не отмечает |
max_account_show | max account show | под кем вход |
max_status | max doctor | за какой профиль говорит сервер, есть ли токен, был ли вход и какие пишущие инструменты включены; в MAX не входит |
max_chats_list | max chats list | чаты, с поиском по имени, видом и непрочитанными |
max_chats_show | max chats show | один чат, кто в нём, и настройки группы |
max_chats_events | max chats events | кто вступил, вышел, кого добавили и удалили — по служебным сообщениям; без since — за 7 дней |
max_chats_members | max chats members list | все участники группы или канала от MAX: когда заведён аккаунт, когда был в сети |
max_chats_rules | max chats rules show | правила модерации группы; менять их может только владелец, командой |
max_contacts_list | max contacts list | люди, с кем есть личная переписка |
max_contacts_show | max contacts show | один человек и общие чаты |
max_messages_list | max messages list | сообщения чата; с transcribe расшифровывает голосовые; ничего не отмечает прочитанным |
max_messages_search | max messages search | поиск по уже прочитанному на этой машине |
max_messages_context | max messages show, context | одно сообщение и соседние |
max_messages_photo | max messages download | фото из сообщения как картинка, до 512 КБ; файл, видео, голосовое или фото крупнее — отказ с командой, которая их сохранит. ссылку на фото этот инструмент не отдаёт |
max_messages_scheduled | max messages scheduled | что ждёт отправки в чате, с scheduledFor |
max_messages_transcribe | max messages transcribe | текст голосового, распознанный на этой машине |
max_messages_send | max messages send | отправка, только с --allow-send; с at — позже, как --at-time; reply_to — ответ на сообщение, markdown — оформление |
max_messages_edit | max messages edit | правка своего сообщения, только с --allow-send; markdown — оформление |
max_messages_forward | max messages forward | пересылка в другой чат, только с --allow-send; silent — без уведомления |
max_messages_pin | max messages pin | закрепить в группе или канале, только с --allow-send; без уведомления, если не передан notify |
max_messages_unpin | max messages unpin | открепить, только с --allow-send |
max_reactions_add | max reactions add | поставить реакцию, только с --allow-send и разрешением reaction |
max_reactions_remove | max reactions remove | снять свою реакцию, так же |
max_polls_vote | max polls vote | проголосовать или снять голос, только с --allow-send |
max_polls_create | max polls create | создать опрос, только с --allow-send |
max_chats_mark_read | max chats mark-read | отметить чат прочитанным, только с --allow-mark-read |
max_messages_delete | max messages delete | удалить у владельца, только с --allow-delete |
max_chats_check | max 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-up | since — необязательно | один раз вызывает max_inbox и пересказывает по чатам; ничего не отправляет |
reply | chat | читает чат, пишет черновик и отправляет только после вашего «да» на этот текст |
review | since, groups — необязательно | один раз вызывает max_review и раскладывает на «я должен», «жду от других», «нужно уточнить» с id сообщений; перед «просрочено» ищет, не сделано ли это в группах; напоминания — только черновики до вашего «да»; в конце — since для следующего обзора |
find | text | ищет человека или слова и показывает сообщения вокруг найденного; ничего не отправляет |
Отправка в 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.