y83 code / справочник

MCP

MCP — это способ дать агенту готовые инструменты: поиск в интернете, чтение страницы, команды моста, сборка и запуск. Инструменты приходят с сервера, сервер объявляет их каталог, а агент видит их как обычные вызовы.

раздел
Чат с агентом (Codex)
пунктов возможностей
36
источник
docs/codex/mcp.md

Экран 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: у сторонних серверов дефолтов нет, и бюджет у них не показывается, пока не задан вручную.
  • Список обработанных авто-лимитов хранится в настройках приложения: сброс настроек приложения вернёт автоматические значения, а ручные переживут.

Источник: docs/codex/mcp.md. Страница собрана из документации проекта при сборке сайта — без пересказа.