MCP-сервер
Документация: v0.25.0
MCP и документация →Что MCP даёт агенту, как подключить свой клиент и как читать эти доки.max mcp отдаёт профиль агенту по MCP — через stdin и stdout,
без сети. Сервер ставится вместе с max, отдельно ничего устанавливать не нужно.
Когда он нужен. В Claude Code, Codex и других агентах с терминалом хватает самого max и
инструкции для агента: по токенам и по возможностям разницы
нет. MCP нужен клиентам без терминала — Claude Desktop, чату Cursor — и тем, кто хочет, чтобы клиент
спрашивал разрешения на каждую отправку. ChatGPT и Claude в браузере так не подключить — для них
remote.md.
Подключение
Для бота — свой сервер, max <имя> bot mcp (bot.md). У него
доступ определяют настройки профиля бота: readOnly и allow. Его флаги --allow-send,
--allow-delete, --allow-moderate принимаются с предупреждением и ничего не включают.
Описанные ниже флаги max mcp относятся к личному аккаунту и включают его инструменты записи.
Сначала выполните max setup --agent none в локальном терминале — через MCP вход не делается.
Это вход в MAX; max mcp setup ниже отдельно подключает MCP-клиент. Агент может прочитать
max skill show до входа.
Codex или Claude Code на этом компьютере:
max mcp doctor # проверяет запуск MCP и список инструментов
max mcp setup codex # добавляет сервер в Codex
max mcp setup claude-code # или в Claude CodeДля другого профиля сначала ставьте его имя: max work mcp setup codex. Команда установки
использует сам клиент и не переписывает другие серверы. Если запись с тем же именем уже есть,
удалите её в клиенте перед повторной установкой. Если профиль предлагает инструменты записи,
сначала проверьте его разрешения, затем повторите команду с --allow-writes. Этот флаг только
подтверждает установку: права профиля и флаги --allow-send и прочие он не меняет.
mcp doctor не читает сообщения и не входит в MAX: успешная проверка подтверждает запуск MCP,
а не действительность сессии. Число potentialWrites показывает инструменты, у которых нет
объявления «только чтение». Для браузера и телефона требуется отдельное удалённое подключение
(remote.md).
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 попадают в неё, только если заданы; токен — никогда. MAX_CACHE_DIR теперь
относится только к прежнему кэшу, а общую копию задаёт MESSAGING_STORE.
Если 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.
В этом абзаце приведены исторические названия уровней личного MCP. В общем файле правил ask соответствует подтверждению confirm в MCP, а deny и readonly запрещают выполнение. CLI использует уровни из руководства по группам; не переносите старые названия в новые команды.
--allow-moderate даёт агенту инструмент max_chats_check — то же, что max chats moderate: проверить
группу по её правилам и сделать то, что они разрешают. Сам флаг — это то согласие, которого требует
уровень 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Так агент не может включить их сам, дописав флаг в свою же команду запуска. Каждое действие проходит
readOnly, allow и журнал отправок, как команда. --confirm-send показывает форму и для них. В разделе bot
файла настроек mcpTools не принимается.
Инструменты
Списки используют { items, page, limit, hasMore }, id — строки. Форматы MCP и CLI могут
различаться: max_chats_events сохраняет since (в том числе id сообщения) и поля chatId/since;
max_chats_members_list сохраняет chatId/rolesKnown и не принимает опции страниц.
У соответствующих команд CLI новые параметры и форматы описаны в группах.
Ошибка — { 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 это команды через /:
Отправка в reply идёт через max_messages_send, поэтому без --allow-send агент только покажет
черновик.
Чаты доступны как ресурсы max://chat/<id> — в Claude Code их можно упомянуть через @. Ресурс
отдаёт чат и его последние сообщения. Список ресурсов берётся из общей локальной копии messages.db под аккаунтом профиля и в MAX не ходит;
пока локальной копии нет, он пуст. Входит в MAX только чтение одного чата.
Ресурс max://skill — навык max, тот же текст, что печатает max skill show. Он есть и у
max mcp, и у max bot mcp, и в MAX не ходит.
Как он держит соединение
Первый вызов входит в MAX, следующие идут через то же соединение. Оно закрывается после 2 минут без вызовов и в любом случае через 5 минут после входа — список чатов берётся из ответа на вход, и без этого предела агент читал бы устаревший. Следующий вызов входит заново. Вызовы выполняются по одному, даже если клиент прислал их одновременно.
Сервер выходит, как только клиент закрыл stdin, и закрывает соединение с MAX.