Экран MCP — это список того, что подключено, и ручки управления: что включено, что выключено, сколько токенов агент потратит на ответ того или иного инструмента.
Проще говоря: если агент чем-то пользуется «со стороны», этот экран показывает, чем именно и не отключено ли что лишнее.
Возможности
- Шапка
codex@mcpсо счётчиками: сколько серверов включено, сколько строк инструментов в них и сколько серверов выключено. - Кнопка обновления перечитывает конфиг и состояние серверов.
- Кнопка копирования кладёт в буфер текстовую сводку: серверы, их состояние, авторизация, число инструментов и все нестандартные настройки. Удобно вставить в отчёт или отправить кому-то.
- Кнопка поиска открывает строку поиска по серверам и инструментам.
- Раскрывающаяся шпаргалка «// что такое MCP» с пятью пунктами: что даёт сервер, что за сервер подключён у нас, что делают тумблеры, как выдаются большие списки и откуда берётся состояние сервера. Раскрыта по умолчанию.
- Карточка каждого сервера: имя, метка «вкл»/«выключен», строка состояния, авторизация, число инструментов, число ресурсов и версия.
- Тумблер сервера включает или выключает его целиком.
- Описание сервера показывается под карточкой, ошибка сервера — красным.
- Ссылка «инструменты (N)» раскрывает и сворачивает список инструментов сервера. По умолчанию списки раскрыты.
- Ссылка «Войти» появляется только когда сервер прямо отвечает, что вход не выполнен.
- Строка инструмента: имя в виде
сервер/инструмент, метка, тумблер, описание инструмента. - Чип бюджета вывода: показывает текущий лимит инструмента, его дефолт или пометку, что лимит задан вручную. По нажатию открывается поле ввода.
- Кнопка-треугольник у инструмента проверяет его пробным вызовом прямо из экрана.
- Строка под шапкой показывает результат последнего действия: записано, не применилось или ошибка записи.
- Отдельная секция «// выключенные» собирает выключенные серверы и сворачивается, чтобы не мешать. Как только в поиске есть слово, секция раскрывается сама: иначе совпадение было бы не видно.
Технические данные
| Параметр | Значение |
|---|---|
| Где лежат настройки | ~/.codex/config.toml |
| Ключ тумблера сервера | mcp_servers.<имя>.enabled |
| Ключ тумблера инструмента | mcp_servers.<имя>.disabled_tools |
| Ключ лимита | mcp_servers.<имя>.tools.<тул>.output_token_limit |
| Границы лимита | от 1 до 1 000 000 токенов |
| Дефолт лимита, обычный инструмент | 6 000 токенов |
| Дефолт лимита, тяжёлый вывод | 10 000 токенов |
| Без авто-лимита | инструменты поиска, страниц и веб-ИИ |
| Способ записи | config/value/write, стратегия upsert |
| Применение | config/mcpServer/reload, без перезапуска |
| Авто-лимиты ставятся только для | сервера y83 |
| Повторная установка авто-лимита | не бывает, обработанные инструменты запоминаются |
Тяжёлыми считаются инструменты с большим структурным выводом: чтение файлов, JSON, работа с репозиторием, команды моста и журналы.
Без автоматического лимита остаются ровно шесть инструментов: web_search, web_fetch, research, research_verify, ai_ask, ai_export. Их вывод резать нельзя — с обрезанным ответом инструмент бесполезен.
Что делают тумблеры
Тумблер сервера пишет ключ включения. Тумблер инструмента пишет список выключенных инструментов сервера целиком: список пустой — ключ снимается целиком. Оба действуют сразу во всех тредах, а не только в том, где вы нажали, потому что настройка лежит в общем конфиге агента.
Состояние тумблера на экране берётся из конфига, а не из «живого» статуса сервера. Это сделано специально: пока не открыт тред, агент не поднимает серверы, и живой статус у всех был бы «не запущен» — выключенный сервер выглядел бы включённым.
После записи экран перечитывает конфиг и сверяет результат. Если запись прошла, но сервер её не принял, в строке под шапкой появляется предупреждение с именем ключа. Молча вернувшийся тумблер выглядел бы как поломка экрана, поэтому честное сообщение полезнее.
Тумблер не «прыгает»: слева от него всегда есть место под спиннер, а рядом подписано текущее состояние. Карточка выключенного сервера не уезжает в другую секцию — она остаётся на своём месте в списке и просто гаснет.
Бюджет вывода
Это ограничение того, сколько токенов ответа инструмента попадёт в контекст агента. Нужен, чтобы один болтливый инструмент не съел всё окно.
Когда сервер y83 впервые попадает на экран, для его инструментов проставляются начальные лимиты один раз: обычным 6 000, инструментам с тяжёлым выводом 10 000. Инструменты поиска, чтения страниц, исследований и веб-ИИ остаются без автоматического лимита — обрезать их вывод нельзя, это ломает результат. О том, что лимиты проставлены, экран сообщает строкой под шапкой.
Обработанные один раз инструменты повторно не трогаются: новый дефолт не перезапишет вашу настройку. Помеченные значения сохраняются в настройках приложения отдельным списком.
В диалоге лимита поле уже подставлено текущим значением или дефолтом. Пустое поле снимает лимит совсем, кнопка «Вернуть default» возвращает дефолт. Ноль не принимается: сервер истолковал бы его как «не отдавать ничего». Некорректное значение подписано прямо под полем, кнопка «Сохранить» при нём не нажимается.
Проверка инструмента
Кнопка-треугольник открывает окно вызова инструмента. Форма собирается из описания инструмента: обязательные поля отмечены звёздочкой, логическое поле становится тумблером, поле со списком вариантов — чипами, числа — числовой клавиатурой. Пока обязательное поле пустое, кнопка выполнения недоступна и под формой перечислены незаполненные поля.
Любую форму можно переключить в режим JSON — вручную, а для инструментов без описания полей он открывается сразу. В JSON отправляется ровно то, что написано, так что этим способом удобно проверять сервер на нестандартные случаи.
Подача результата зависит от того, что вернул сервер:
- если в ответе есть поле с ответом, он показывается как обычный форматированный текст, а ссылки внутри него кликабельны;
- если ответ — это данные, они выводятся полями, а вложенные данные отдельным блоком JSON;
- если ответ — простой текст, он остаётся текстом моноширинным шрифтом.
Отдельно показываются блок «размышления», если сервер его вернул, и список ссылок «источники и результаты», если сервер отдал ссылки. Ошибка выводится красным и подписывается, а не прячется. Ответ можно скопировать целиком.
Картинки в этом окне не показываются: путь к файлу или ссылка приходят обычной строкой. В ленте чата тот же ответ уже умеет показываться картинкой.
Вызов уходит в текущий тред агента, поэтому в хабе инструментов, где треда нет, кнопки проверки нет вообще, а окно результата не показывается даже если вызов как-то случился. В треде окно открывается сразу после нажатия и пока вызов идёт — надпись «Выполняется».
Вход в сервер
Серверы, которым нужна авторизация, показывают в карточке ссылку «Войти». По нажатию сервер отдаёт ссылку, а приложение показывает её в окне и предлагает скопировать. Сам браузер оно не открывает: ссылку нужно открыть самому, в своём браузере, и подтвердить вход там. Сервер узнаёт об успехе по уведомлению. Если сервер ссылку не вернул, экран честно об этом сообщает.
Что агент умеет
Отдельных инструментов агента для управления MCP нет: он не может сам включить сервер, выключить инструмент или поставить лимит. Это настройки его же конфигурации, и он не имеет к ним доступа из своих инструментов.
Что агент умеет со своей стороны:
- знать список доступных инструментов и видеть в промпте только включённые;
- вызывать разрешённые инструменты в ходе работы;
- сообщить, какой инструмент ему нужен, если того нет в списке.
Выключенный инструмент агент вообще не видит: его нет в промпте, поэтому о самом факте выключения агент не узнает — это видно только на экране.
Открыть этот экран командой моста агент может: пункт MCP есть в каталоге инструментов, а мост умеет открывать экраны по этому каталогу. Проверено живым вызовом — экран открывается и показывает своё состояние.
Инструменты картинок
Отдельная группа тулов — генерация и правка изображений через y83.media (экран интеграций хранит URL и токен). Агент видит шесть инструментов:
Что из этого получается на практике:
- кадр из текста — промпт, негатив, размеры до 2048 px, шаги, CFG, мегапиксели,
seedдля повторяемости,batch_sizeдо 4 иpost_upscale×2/×4 после генерации; - правка готового — img2img целиком, инпейнт маской или до 8 прямоугольниками, аутпейнт на любую сторону; источником может быть прошлая генерация, файл на устройстве или публичный URL;
- стиль по референсу — до 12 картинок с рецептом и силой: перенести стиль, скопировать свет, позу, кадрирование, палитру, материал, оставить только фон;
- понятия слайдерами — до 8 штук со шкалой −6…+6 (туман, детализация, фотореализм, боке и другие), плюс до двух LoRA с разной силой;
- работа переживает перезапуск — статус с эхом параметров, список сохранённых задач, отмена и остаток минутного лимита до запуска пачки;
- результат остаётся в проекте — файл скачивается в рабочую папку, и агент отдаёт путь. Видео сервис не умеет: режимы видео из него вырезаны, поэтому инструменты обещают кадры, правку и апскейл.
| Инструмент | Что делает |
|---|---|
image_generate | Новый кадр: prompt, model (Krea 2 Turbo / Flux Klein 4B), размеры, steps, cfg, seed, до двух LoRA, krea_4step, post_upscale, style_refs, concept_sliders |
image_edit | Правка готового кадра: img2img, inpaint по PNG-маске (mask_path/mask_url) или по прямоугольникам (mask_region), outpaint (anypaint_padding), перенос стиля референсом. Источник — source_id, source_path или source_url |
image_status | Статус job'а по id (и wait_s), плюс source.image_url/source.mask_url для цепочки правок |
image_jobs | Список сохранённых job'ов |
image_cancel | Отмена job'а |
image_quota | Остаток минутного лимита media API |
Маска для image_edit — это PNG размера исходника, где белое = перерисовать (≤8 МБ); она взаимоисключающая с mask_region. Референс стиля — это style_refs[{source_id|source_path|source_url, recipe, strength}]: Krea 2 читает картинку как референс (палитра, свет, текстура, медиум), а не как пиксельную инициализацию, поэтому «сделать похоже, но сохранить» идёт через референс или маску, а не через img2img. Каталог LoRA и рецептов — GET /api/v1/image-jobs/options (единый источник — internal/imagegen/loras.go).
Тот же путь доступен человеку без агента: в просмотрщике картинки кисть открывает маску (Object — тап по объекту, Brush с Erase, Box — рамка), а Edit открывает окно правки (промпт, denoise, seed, LoRA, референсы) и запускает POST /api/v1/image-jobs напрямую. Подробности и параметры — в ../tech/image-generation.md.
Ограничения
- Состояние серверов относится к открытому треду: пока треда нет, видно только включённость из конфига и общую подсказку вместо статусов. Эта подсказка в хабе написана по-английски — так она и выглядит на экране.
- Обход всех тумблеров разом на экране нет: серверы и инструменты переключаются по одному.
- Поиск показывает и выключенные серверы — фильтра по состоянию нет. Пустой результат не отличает «нет такого сервера» от «есть, но выключен».
- До первого хода в треде состояния могут показывать «не запущен»: серверы поднимаются лениво, по требованию. Это не поломка, а нормальная картина только что открытого чата.
- Если сервер не отдал каталог инструментов, карточка остаётся почти пустой: приложение не знает о них само и показать не может.
- Если инструмент выключен, сервер может перестать отдавать его вообще — поэтому выключенный, но записанный в конфиге инструмент помечен отдельной подписью и остаётся в списке.
- Проверка вызовом идёт в реальный тред: вызов может изменить данные, если инструмент что-то меняет.
- Авто-лимиты проставляются только серверу
y83: у сторонних серверов дефолтов нет, и бюджет у них не показывается, пока не задан вручную. - Список обработанных авто-лимитов хранится в настройках приложения: сброс настроек приложения вернёт автоматические значения, а ручные переживут.