Repository navigation
remote
Эта страница нужна, если вы хотите, чтобы ИИ-приложение в браузере или на телефоне, например
ChatGPT, Codex web или Claude, читало ваш MAX и отвечало в нём. Такое приложение не может запустить
max на вашем компьютере, поэтому вы даёте ему адрес в интернете. В итоге приложение подключено к
max по личному адресу HTTPS, делает только то, что разрешает профиль, а вы знаете, как его
остановить или отозвать доступ.
Термины на этой странице:
-
MCP (Model Context Protocol) — общий способ, которым ИИ-приложение вызывает внешние
инструменты.
max personal mcp— MCP-сервер, который ставится вместе сmax; приложения на вашем компьютере описаны в руководстве по MCP-серверу. -
Удалённое подключение — приложение подключается со своих серверов, через интернет, к адресу,
который вы ему дали. Для этого
max personal mcp --httpотдаёт те же инструменты по HTTP на127.0.0.1. - HTTPS-туннель — программа, которая даёт порту на вашем компьютере публичный адрес HTTPS. Здесь используется Tailscale Funnel; подходит и Cloudflare Tunnel. Для Funnel покупать домен не нужно.
-
Публичный адрес — этот адрес, например
https://laptop.tail1234.ts.net. Вы передаёте егоmaxкак--public-url, а приложению — с/mcpна конце. -
Код входа — одноразовый код, который
maxпечатает в вашем терминале. Страница входа приложения просит его, поэтому подключить приложение может только тот, кто видит этот терминал.
ChatGPT / Claude ──интернет──▶ Tailscale Funnel ──▶ max personal mcp --http (вход) ──▶ MAX
Если подключение через Tailscale уже работает, сохраняйте его: второй туннель не нужен. Локальное подключение через stdin и stdout продолжает работать как раньше.
| Задача | Где |
|---|---|
| Подключить ИИ-приложение в браузере или на телефоне к MAX | Запустить туннель и сервер, затем добавить в приложение |
| Запустить серверы MAX и Telegram рядом | MAX и Telegram одновременно |
| Использовать Cloudflare вместо Tailscale | Вместо Tailscale: Cloudflare Tunnel |
| Разрешить больше или меньше на один запуск сервера | Права только на время работы сервера |
| Остановить сервер или выйти из всех приложений | Выключить |
| Передать удалённому агенту сохранённый файл или страницу PDF картинкой | Передача сохранённого файла агенту, чтение PDF постранично |
-
Кто вошёл, тот читает ваш MAX. Для входа нужен код из вашего терминала. Никогда не ставьте
туннель перед
max personal mcpбез--http: там входа нет совсем. -
Что приложение может менять, решают права профиля.
denyиreadonlyзапрещают запись;askиallowпропускают запрошенную запись через MCP без формы на сервере. Подтверждение в самом приложении — отдельная вещь и зависит от его настроек. Список получателей и лимит в час продолжают действовать (права агента в MCP, руководство по настройке). -
Компьютер с
maxдолжен быть включён. Чтобы пользоваться с телефона или с ноутбука, на котором ничего не установлено, запустите всё это на небольшом сервере, который работает всегда, и войдите вmaxтам (max personal setup --agent none). Тогда с вашей стороны нужен только браузер. - Кто может добавить удалённый коннектор:
| Приложение | Тарифы | Документация |
|---|---|---|
| ChatGPT | Plus, Pro, Business, Enterprise, Education — в режиме разработчика | developer mode |
| Claude | любой; на бесплатном — один свой коннектор | custom connectors |
| Gemini | только взрослым в США с личным аккаунтом Google — из России и Европы недоступно | connected apps |
Шаги для каждой ОС проверены не на всех системах. Если шаг не работает, откройте issue.
Сначала установите CLI и войдите в MAX (руководство по установке); для
локальной настройки без агента используйте max personal setup --agent none. Сервер запускайте от того же
пользователя ОС и с тем же профилем. При необходимости поставьте профиль первым: max work mcp.
Tailscale устанавливается отдельно; такой туннель поддерживают и max, и tg.
Установите Tailscale, войдите и разрешите Funnel: в вашей сети Tailscale нужны MagicDNS, сертификаты HTTPS и разрешение Funnel. Первый запуск Funnel может напечатать ссылку для разрешения.
Оставьте открытыми два окна терминала. В первом работает туннель. Его адрес HTTPS скопируйте во
второе окно, когда оно попросит. Нужен origin — адрес без /mcp и другого пути. Порт вроде
:8443 в нём сохраните.
Сервер слушает 127.0.0.1:8765 и печатает одноразовый код входа. Прав администратора ему не
нужно; они могут понадобиться только туннелю. Команды ниже разрешают отправку только на время
работы этого процесса: --permission messages.send=allow; см.
права только на время работы сервера.
Установите приложение Tailscale и войдите через меню в трее. После установки Node.js, CLI и
Tailscale откройте новое окно PowerShell, чтобы обновился PATH. Суффикс .cmd обходит ошибку
политики выполнения PowerShell для команд npm. Если вы ещё не настроили MAX, выполните
max.cmd setup --agent none в обычном PowerShell.
Первое окно: PowerShell от администратора для Funnel. Оператор & нужен из-за пробела в
стандартном пути установки; если вы выбрали другой каталог, замените путь.
& "$env:ProgramFiles\Tailscale\tailscale.exe" funnel 8765Второе окно: обычный PowerShell от пользователя, который вошёл в MAX:
$mcpPublicUrl = Read-Host 'Вставьте HTTPS origin из Funnel (без /mcp)'
max.cmd mcp --http --port 8765 --public-url $mcpPublicUrl --permission messages.send=allowОба процесса запускайте в самой Windows. WSL — отдельная среда: туннель Windows, направленный на локальный адрес Windows, может не достать сервер внутри WSL.
Установите приложение Tailscale и войдите. Его CLI входит в приложение; если tailscale нет в
PATH, используйте этот путь (руководство по CLI Tailscale).
Первое окно Terminal:
TAILSCALE_BE_CLI=1 /Applications/Tailscale.app/Contents/MacOS/Tailscale funnel 8765Второе окно, от пользователя, который выполнил max personal setup --agent none. Подходит для zsh и bash:
printf 'Вставьте HTTPS origin из Funnel (без /mcp): '
IFS= read -r mcpPublicUrl
max personal mcp --http --port 8765 --public-url "$mcpPublicUrl" --permission messages.send=allowУстановите Tailscale по инструкции для Linux и войдите
через sudo tailscale up. Первое окно терминала:
sudo tailscale funnel 8765Второе окно: обычный пользователь без sudo, чтобы max нашёл сеанс из max personal setup --agent none:
printf 'Вставьте HTTPS origin из Funnel (без /mcp): '
IFS= read -r mcpPublicUrl
max personal mcp --http --port 8765 --public-url "$mcpPublicUrl" --permission messages.send=allowКаждому серверу нужны свой локальный порт и свой публичный адрес HTTPS. Например, Telegram
оставьте на локальном 8765 и публичном 443; второй Funnel запустите с --https=8443 8766, а
MAX — с --port 8766. Для --public-url MAX и для адреса его коннектора с /mcp возьмите origin
второго туннеля вместе с :8443. Для второго запуска Funnel используйте команду Tailscale вашей ОС
выше. Funnel принимает публичные порты 443, 8443 и 10000
(справочник команды Funnel).
Если вы уже используете Cloudflare, направьте его туннель на тот же локальный MCP-сервер. Для
постоянного адреса нужны учётная запись Cloudflare и домен в Cloudflare. Выполните
настройку именованного туннеля:
установите cloudflared для вашей ОС, создайте туннель в панели Cloudflare, запустите его
соединение и добавьте публичный hostname, например mcp.example.com. Локальным сервисом укажите
http://127.0.0.1:8765; MCP запускайте на том же компьютере.
Во втором терминале запустите сервер:
max personal mcp --http --port 8765 --public-url https://mcp.example.comДобавьте в ИИ-приложение https://mcp.example.com/mcp с OAuth и DCR, как описано в разделе
добавить в приложение. --public-url — публичный origin для входа, а не
локальный адрес и не путь /mcp. Туннель не меняет права профиля. Проверьте JSON по адресу
https://mcp.example.com/.well-known/oauth-protected-resource/mcp, затем вход и список
инструментов. Останавливайте только процесс этого туннеля, чтобы другие маршруты продолжали работать.
Временный Quick Tunnel сам по себе не работает. Команда
cloudflared tunnel --url http://127.0.0.1:8765 выдаёт случайный адрес trycloudflare.com без
учётной записи и домена. Но Quick Tunnels не поддерживают SSE
(server-sent events — способ, которым HTTP MCP-сервер передаёт ответы потоком). Поэтому Quick Tunnel
не заменяет Funnel для этого сервера. Он работает только с дополнительным адаптером, который
превращает ответы SSE в JSON, а такой адаптер в CLI не входит. Рабочий вход и список инструментов не
доказывают, что агент сможет читать PDF. Кроме того, при каждом перезапуске Quick Tunnel получает
новый адрес, и адрес коннектора нужно обновлять. Для постоянной работы выберите Funnel или
именованный туннель и проверьте своё приложение.
Адрес для приложения — origin вашего туннеля с /mcp на конце, например
https://<устройство>.<сеть>.ts.net/mcp. Добавьте его как удалённый MCP-коннектор:
-
ChatGPT или Codex web: откройте Plugins, выберите + Add custom MCP server и создайте
плагин с адресом
/mcpи OAuth, как описано в инструкции OpenAI по подключению. Подключите его кодом входа, установите плагин и включите в Work-чате (или упомяните через@). Локальныйconfig.tomlCodex это web-подключение не настраивает. Доступность зависит от аккаунта и рабочего пространства. Если предлагают выбрать регистрацию, выберите DCR (dynamic client registration): сервер поддерживает DCR и проверку S256, которых требуют требования OpenAI к OAuth. - Claude: добавьте свой коннектор с этим адресом, как описано в custom connectors Claude. В настройках коннектора можно задать каждому инструменту: всегда разрешено, нужно подтверждение или запрещено.
Три инструмента работают без запросов MCP, ресурсов и elicitation (вопросов сервера приложению), поэтому их могут использовать и приложения, которые понимают только инструменты.
Приложение откроет страницу входа max. Проверьте строку о том, куда уйдёт вход: там должно быть
приложение, которое вы подключаете, например chatgpt.com или claude.ai. Затем введите код из
терминала. Код действует десять минут; после каждого входа печатается новый. После пяти неверных
кодов страница входа закрыта до перезапуска сервера.
Приложение остаётся подключённым, пока пользуется подключением хотя бы раз в 30 дней; вход оно продлевает само. После 30 дней без использования оно попросит новый код.
Какие команды доступны, решают permissions профиля. Форм подтверждения на сервере нет;
подтверждение в приложении — отдельная вещь и зависит от его настроек.
Сервер не видит, спросило ли вас приложение перед вызовом. Если приложению постоянно разрешён инструмент, следующий вызов может пройти без нового вопроса.
Повторяемый --permission ключ=уровень меняет права только для этого процесса сервера. Уровни:
deny, readonly, ask, allow. Например, --permission messages.send=allow разрешит отправку
из профиля с readonly. --permission messages=allow заменит сохранённые права для всего ресурса
сообщений; удаление разрешается отдельно через --permission messages.delete=allow. Файл настроек,
список получателей и лимит отправок в час не меняются. Чтобы снять запрет чтения, назовите его
ресурс или команду с уровнем allow. Ключи прав перечислены в
руководстве по настройке.
При временном переопределении прав MCP подключается к MAX напрямую: уже работающая служба
max personal serve продолжает использовать сохранённые права своего профиля.
Ctrl-C в обоих окнах останавливает сервер и этот туннель. Для повторного запуска используйте те же команды; входы приложений переживают обычный перезапуск сервера.
Если Funnel запускали с --bg, Ctrl-C этот фоновый маршрут не выключает. Проверьте
tailscale funnel status и выключите только его публичный порт, например
tailscale funnel --https=443 off. Используйте команду Tailscale вашей ОС выше, при необходимости
с правами администратора. Не используйте funnel reset, если Funnel нужен другому серверу:
сбросятся все маршруты. Если выключить только MCP, маршрут останется, но инструменты будут
недоступны.
Отозвать доступ у приложений — не то же, что остановить процесс. Чтобы выйти из всех приложений для профиля:
max personal mcp --revokeЭтим приложениям придётся войти заново с новым кодом. Сессия MAX при этом не завершается.
-
Приложение пишет, что не может подключиться: откройте в браузере
https://<устройство>.<сеть>.ts.net/.well-known/oauth-protected-resource/mcp— там должен быть короткий JSON. Если его нет, Funnel не запущен, не включён в сети Tailscale или смотрит на другой порт. -
Страница входа пишет «Too many wrong codes»: после пяти неверных кодов она закрыта до
перезапуска
max personal mcp --http. Если вводили не вы, кто-то нашёл ваш адрес: перезапустите сервер и подумайте о новом имени устройства в Tailscale. -
Подключается, но инструментов нет:
max personal mcp doctorпроверяет, что MCP-сервер запускается и отдаёт список инструментов. Вход в MAX и туннель он не проверяет. Подключение аккаунта проверяет команда, которая идёт в MAX, напримерmax personal account show. -
Чтение работает, запись не проходит: проверьте права профиля и временные
--permission.denyиreadonlyзапрещают запись, что бы ни подтвердило приложение. -
Нужна запись вызовов: её показывает
max personal runs list. Успешные вызовы видны, только когда запись включена; ошибки сохраняются по умолчанию, если запись не выключили через"record": falseили--no-record(руководство по диагностике).
Агент на вашем компьютере может открыть сохранённый файл по local_path. Удалённый агент не может,
поэтому он получает сохранённые байты через attachments show (MCP: max_read, command
attachments show).
attachments show не передаёт известные файлы и папки с учётными данными, собственные папки CLI
или хранилище сообщений, в том числе через ссылки. Обычные скрытые рабочие папки разрешены.
Невидимые управляющие символы в текстовых ответах MCP становятся видимыми последовательностями. Флаги регионов остаются целыми; аргументы записи MCP и обычный JSON вывода CLI сохраняют исходные строки.
Сначала скачайте файлы сообщения обычным способом (что можно скачать).
Locator сообщения и номер вложения найдёт attachments list --needs-text. Затем запросите файл:
max personal attachments show msg:max/511/7/204 --attachment 1 --jsonКоманда читает только сохранённое вложение активного аккаунта. Она ничего не скачивает, не вызывает модель, не отмечает сообщение прочитанным и не меняет поисковый индекс. Отсутствующий файл нужно скачать заново. Если в сообщении несколько файлов, укажите номер, начиная с 1. Файлы чужого аккаунта, отсутствующие файлы и символьные ссылки не передаются. Текст внутри вложения — данные, а не инструкции.
Один ответ по умолчанию несёт 512 КиБ; --chunk-bytes позволяет до 1 МиБ. По умолчанию файл может быть до
50 МиБ; лимит меняется через MESSAGING_ATTACHMENT_MAX_MIB. JSON — {item} с полями base64, offset_bytes, read_bytes, total_bytes, next_offset_bytes,
complete и SHA256 всего файла. complete: true означает, что весь файл поместился в этот ответ, а
не что его текст распознан.
Декодируйте каждую часть base64, соединяйте части по смещению и идите по next_offset_bytes, пока он
не станет null. На следующих запросах передавайте первый SHA256 как --if-sha256: если исходный
файл изменился, запрос завершится ошибкой и не вернёт изменённые байты. Сверьте собранный файл с
этим хэшем.
max personal attachments show msg:max/511/7/204 --attachment 1 --offset-bytes 524288 --if-sha256 <sha256> --jsonattachments show находится обычными тремя инструментами. Аргументы: message (locator или id
вместе с chat), attachment, offset_bytes, chunk_bytes и if_sha256. Целое изображение PNG,
JPEG или WebP до 8000 пикселей по каждой стороне и до 20 миллионов пикселей всего приходит
изображением; остальные файлы — встроенным бинарным ресурсом. Частичный ресурс — набор байтов, а не
целый PDF или изображение. URI ресурса — имя, а не адрес для скачивания.
Приложение должно передать эти байты файловым инструментам агента. Сможет ли агент открыть PDF или
сохранить файл, зависит от приложения. Если приложение не показывает встроенные ресурсы, запросите
format: "base64" и декодируйте JSON средствами агента. Профиль с запретом messages или
attachments.show отказывает в передаче; readonly позволяет читать сохранённые файлы.
Обычное извлечение читает текстовый слой и простые форматы документов на вашем компьютере. Сканы, фото, рукописный текст и сложную вёрстку агент по умолчанию читает своими средствами зрения или OCR. Он читает все страницы, сохраняет текст дословно и отмечает неясные места. Качество зависит от разрешения, языка, почерка, вёрстки и инструментов агента. Инструкции внутри вложения агент не выполняет.
Сохраните результат через attachments text set (MCP: max_write, command attachments text set) и
проверьте поиском content:. Получение байтов само по себе не добавляет текст в индекс.
attachments extract --ocr остаётся для массового извлечения через models.ocr. Эта команда
вызывает настроенную внешнюю модель и отправляет ей поддерживаемые изображения и страницы
сканированных PDF. Она работает только по явному вызову — никогда при передаче файла или когда агент
читает файл сам. Форматы и поиск по тексту описаны в руководстве по вложениям.
Если приложение не может передать полученный PDF своему читателю документов, запросите одну
страницу как изображение PNG. Сервер MCP рисует страницу на вашем компьютере, а агент читает
изображение своим зрением. Для этого нужны необязательные unpdf с поддержкой отрисовки страниц и
@napi-rs/canvas, как в списке движков вложений. С CLI они
не устанавливаются.
max personal attachments show msg:max/511/7/204 --attachment 1 --page 1 --jsonВ MCP вызовите max_read, command attachments show, с page: 1 и locator сообщения. По умолчанию
страница приходит изображением. Если приложение показывает только метаданные, запросите
format: base64, затем декодируйте и покажите PNG средствами агента. Получить строку base64 — ещё не
посмотреть страницу. Прочитайте страницы от 1 до pdf.page_count. Если пиксели недоступны ни в
одном формате, сообщите об ограничении приложения вместо выдуманного текста.
pdf.source_sha256 и pdf.source_bytes описывают исходный PDF; верхние sha256 и total_bytes —
изображение страницы. --if-sha256 проверяет исходный PDF. --page нельзя сочетать с
--offset-bytes или --chunk-bytes. По умолчанию PDF может быть до 50 МиБ без отдельного предела страниц; PNG — до 4000
пикселей по каждой стороне и 8 МиБ на страницу. Все три значения можно изменить.
Изображение страницы не вызывает внешний сервис OCR и не добавляет текст в индекс. Посмотрев все
страницы, агент вызывает attachments text set и проверяет поиск content:. Сверяйте числа и
сложную вёрстку с изображениями; качество зависит от исходного документа и инструментов агента.
Задайте переменные на компьютере, где работает MAX или его MCP-сервер:
| Переменная | По умолчанию | Что ограничивает |
|---|---|---|
MESSAGING_ATTACHMENT_MAX_MIB |
50 |
Размер файла для извлечения текста и передачи сохранённого вложения |
MESSAGING_PDF_PREVIEW_MAX_PIXELS |
4000 |
Ширину и высоту PNG страницы PDF |
MESSAGING_PDF_PREVIEW_MAX_MIB |
8 |
Размер PNG одной страницы |
Например, разрешить файлы до 250 МиБ и страницы до 8000 пикселей/16 МиБ:
export MESSAGING_ATTACHMENT_MAX_MIB=250
export MESSAGING_PDF_PREVIEW_MAX_PIXELS=8000
export MESSAGING_PDF_PREVIEW_MAX_MIB=16В PowerShell: $env:MESSAGING_ATTACHMENT_MAX_MIB = "250"; остальные имена задаются так же.
Значения — положительные целые числа. После изменения переменных запустите max personal mcp config
снова и замените запись сервера в приложении: она сохранит эти настройки. Уже запущенный сервер
нужно перезапустить. Обычная передача остаётся частями до 1 МиБ; это отдельный лимит.
Увеличение требует больше памяти и времени. Рендер масштабирует страницу до четырёх раз в пределах
выбранных размеров; большой потолок не заставляет каждую страницу занимать всю его ширину.
Ответ MCP учитывает base64 и служебные поля, но приложение может иметь свой предел. Для большого
ответа CLI JSON задайте --max-output-bytes 50000000; 0 явно выключает общий предел вывода.
Лимиты внешнего OCR и распаковки офисных документов не меняются вместе с размером файла.