Настройка Codex MCP: медиа из одного config.toml
Подключите Codex CLI, плагин для IDE и ChatGPT к одному MCP-серверу BananaBanana. Настройка config.toml, пять нюансов и промо-видео Veo за $0.70.

MCP-сервер для Codex — это внешний набор инструментов, который кодинг-ассистент от OpenAI может вызывать сразу из трех своих интерфейсов: CLI, плагина для IDE и вкладки Codex в десктопном приложении ChatGPT. Достаточно добавить один TOML-блок, и агент, который обычно просто правит код, получит новые суперспособности, включая генерацию картинок и видео. Codex отлично справляется с рефакторингом и тестами, но базовая модель не умеет создавать MP4-файлы. Подключите сервер генерации, и задача «сделать промо-ролик для описания релиза» превратится в простую команду в терминале, результатом которой станет готовый файл.
Если вы пришли только за инструкцией, вот вся настройка. Создайте API-ключ в своем профиле BananaBanana и добавьте этот фрагмент в ~/.codex/config.toml:
[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"
Экспортируйте переменную BB_API_KEY=bb_live_YOUR_KEY в окружение и перезапустите Codex. Вот и все: никакого локального процесса, проектов в Google Cloud или подписок. Картинки стоят от $0.03 и списываются с баланса по факту генерации, видео — от $0.10. Демонстрационный ролик ниже я сгенерировал через этот же эндпоинт с реальным ключом прямо во время написания статьи, а детальный отчет о расходах на медиа для этого материала (всего $1.03) можно посмотреть в конце.
Почему один файл конфигурации меняет всё
Большинство MCP-клиентов требуют настраивать каждый интерфейс отдельно. Но с Codex все гораздо удобнее. В официальной документации Codex MCP это сформулировано в одном предложении: «Десктопное приложение ChatGPT, Codex CLI и расширение для IDE используют общую конфигурацию». Достаточно один раз вставить TOML-блок, и все семь инструментов генерации будут доступны вам и в терминале, и в VS Code, и на вкладке Codex десктопного приложения.

Это в корне меняет сценарии использования сервера. В Cursor или VS Code генератор картинок привязан к открытому репозиторию. С Codex же сам терминал превращается в медиаконсоль: вы можете запустить рендеринг видео прямо из консоли без открытия редактора, а проверить результат позже в десктопном приложении. Для тех, кто живет в tmux и заглядывает в графический интерфейс по праздникам, это разница между «каким-то плагином, установленным в недрах IDE» и «командой, которой пользуешься каждый день».
Альтернатива привычна — развернуть локальный MCP-сервер со своим ключом Google API, следить за лимитами и оплачивать счета в личном облачном аккаунте. Рабочий вариант, но требующий постоянного присмотра. Наш удаленный эндпоинт работает на нашей стороне и использует тот же пайплайн, что и веб-генератор BananaBanana, а для авторизации нужен лишь один ключ bb_live_, который всегда можно отозвать.
Как подключить Codex к MCP-серверу?
Все параметры конфигурации проверены на соответствие официальной документации Codex MCP по состоянию на 11 июля 2026 года (OpenAI недавно перенесла ее с developers.openai.com на learn.chatgpt.com, так что не удивляйтесь перенаправлению).
Шаг первый: зарегистрируйтесь и откройте вкладку Профиль → MCP API Keys. Ключ показывается только один раз и хранится у нас в хэшированном виде, так что скопируйте его сразу. На баланс новых аккаунтов начисляется $0.20 — этого хватит на шесть тестовых картинок на самой доступной модели.
Шаг второй: добавьте TOML-блок из начала статьи в файл ~/.codex/config.toml (если его нет, просто создайте). В таблице [mcp_servers.bananabanana] указывается url любого Streamable HTTP-сервера и переменная bearer_token_env_var для авторизации: при запуске Codex считывает значение указанной переменной окружения и передает его в заголовке Authorization. Сам ключ в файле не светится, поэтому конфигурацию можно спокойно коммитить в публичные репозитории с dotfiles. На нашей странице MCP-сервера этот шаблон лежит рядом с таблицей совместимости для всех проверенных клиентов:

Шаг третий: экспортируйте переменную окружения и перезапустите клиент. В CLI после успешного подключения команда codex покажет список доступных инструментов сервера. Если попросить его «вызвать list_models на bananabanana», вы получите актуальные тарифы для всех семи инструментов (от list_models до list_generations). Плагин для IDE и десктопное приложение ChatGPT подхватят эти настройки при следующем запуске без лишних телодвижений.
Предупреждение для пользователей macOS: графическое приложение, запущенное из Dock, не считывает ваш .zshrc. Из-за этого переменная, экспортированная в терминале, для ChatGPT будет просто отсутствовать. Если в CLI инструменты видны, а десктопная программа выдает ошибку авторизации — дело наверняка в этом. Решить проблему можно командой launchctl setenv BB_API_KEY bb_live_…. Да, это костыль, но рабочий.
Можно ли использовать этот же ключ в стандартных коннекторах ChatGPT?
Если коротко: пока нет, и здесь важны детали. В ChatGPT встроена собственная система коннекторов (Настройки → Коннекторы, доступна в режиме разработчика на платных тарифах), которая подключает MCP-серверы к обычному чату, а не к Codex. Но эти коннекторы работают через OAuth. Наш эндпоинт пока поддерживает только Bearer-токены. Мы планируем добавить поддержку OAuth 2.1, и тогда обычный чат ChatGPT тоже сможет использовать наш сервер. А пока расклад простой: интерфейсы Codex (CLI, плагин для IDE, вкладка Codex в приложении) отлично работают через config.toml, а стандартные коннекторы чата — нет. Актуальное состояние со сроками всегда можно проверить в таблице совместимости."
Практический пример: промо-видео продукта без запуска стороннего софта
Представьте ситуацию: день релиза, для списка изменений нужен короткий промо-ролик, а выходить из терминала лень. Вы просите Codex сделать видео продукта в коммерческом стиле, ассистент сам составляет кинематографичный промпт и вызывает generate_video. Инструмент никогда не списывает деньги при первом запросе: сначала он возвращает предварительную стоимость, и агент повторяет вызов, подтверждая списание. Вот реальный лог моей сессии:
→ generate_video {"prompt": "Cinematic product promo shot: matte pearl-white
wireless earbuds in an open charging case on a slowly rotating dark
pedestal, dramatic rim lighting in violet and warm amber, soft haze,
slow dolly-in from a slightly low angle, shallow depth of field,
premium tech commercial style", "model": "veo-3.1-fast",
"duration": 8, "resolution": "720p"}
← {"status": "confirmation_required", "quoted_cost_usd": 0.70,
"message": "This video costs $0.70. Nothing has been charged."}
→ generate_video {..., "confirm_cost": 0.70}
← {"job_id": "cmrgrpxgf0002mk7fvfepg82j", "status": "processing",
"cost_charged_usd": 0.70, "balance_remaining_usd": 1553.37}
→ get_result {"job_id": "cmrgrpxgf0002mk7fvfepg82j", "wait_seconds": 30}
← {"status": "completed", "files": [{"url": "https://…/api/files/…"}]}
Две минуты и пятнадцать секунд от подтверждения до готового файла в разрешении 720p. Вот тот самый ролик, сгенерированный моделью Veo 3.1 Fast с первой попытки, без дублей:
Структура промпта составлена по правилам из нашего руководства по промптам для Veo 3.1: объект, действие, освещение, движение камеры, параметры объектива, стиль. После этого Codex скачивает файл по временной ссылке (она активна 24 часа, а повторный запрос к get_result генерирует новую ссылку) в указанную папку и может сам прописать тег <video> для вашей веб-страницы с описанием релиза.
Честная оговорка о расходах: ролик за $0.70 создается без звука. Видео со звуковыми эффектами на той же модели стоит $1.00, а генерация через Omni Flash со звуком обойдется в $0.10 за секунду — то есть $0.80 за ролик такой же длины. Впрочем, для зацикленного фонового видео на главной странице звук и не нужен; а вот для публикации в соцсетях, пожалуй, имеет смысл доплатить тридцать центов.
Картинки генерируются так же, но без шага с подтверждением стоимости, поскольку они стоят совсем дешево: функция generate_image принимает промпт и выдает ID задачи, а по запросу get_result вы получаете готовый файл и небольшой мини-превью для оценки результата прямо в Codex.
Нюансы работы с Codex, о которых лучше знать заранее
Эти моменты обнаружились во время тестов. Описаны примерно в том порядке, в котором вы на них наткнетесь.

1. CLI-интерфейс не запишет конфигурацию за вас. Команда codex mcp add существует, но, согласно документации, она не умеет работать с Bearer-токенами для удаленных HTTP-серверов. Ее назначение — локальные stdio-серверы и OAuth-авторизация (codex mcp login). Для подключения удаленного сервера с авторизацией по ключу придется открыть ~/.codex/config.toml и отредактировать его руками. Делов на полминуты, но если вы привыкли добавлять серверы одной командой, как в claude mcp add --header, здесь придется действовать иначе.
2. Это TOML, и имя таблицы — mcp_servers. Используется snake_case и квадратные скобки, никакого JSON. Конфигурации для Cursor или Claude с фигурными скобками и стилем mcpServers работать не будут, при этом ошибки синтаксиса в файле TOML обычно замалчиваются. Если сервер не подключается, запустите codex в терминале и внимательно изучите лог запуска — это сэкономит кучу времени.
3. Для секретов есть один правильный параметр и один опасный. Использование bearer_token_env_var позволяет не сохранять сам ключ в файле. Альтернативный параметр http_headers принимает только статические значения — то есть секретный ключ bb_live_ будет лежать открытым текстом в файле конфигурации, который утилиты синхронизации dotfiles могут случайно отправить в публичный репозиторий. Еще есть env_http_headers для произвольных заголовков из переменных окружения. Мое правило: всегда использовать bearer_token_env_var и никогда не писать секреты в http_headers.
4. Стандартный таймаут в 60 секунд — это нормально, но только благодаря логике опроса. По умолчанию Codex прерывает вызов инструмента через tool_timeout_sec = 60. Создание видео занимает от одной до десяти минут, что вроде бы конфликтует с лимитом, но на деле generate_video мгновенно отдает ID задачи, а get_result использует лонг-поллинг максимум по 30 секунд на один запрос. Каждый вызов укладывается в рамки таймаута, а агент просто опрашивает сервер несколько раз подряд. Не пытайтесь «исправить» это, увеличивая таймаут до 600 секунд — это не нужно, а в случае реального зависания сервера ассистент просто зависнет на 10 минут.
5. Режим подтверждений настраивается для каждого сервера индивидуально, и платные вызовы лучше подтверждать вручную через prompt. Согласно документации, параметр default_tools_approval_mode поддерживает значения auto, prompt, writes и approve. Если на сервере есть платные инструменты, я рекомендую оставить ручное подтверждение для каждого списания. Бесплатные функции (вроде list_models, get_account или get_result) можно добавить в белый список, если ваш клиент позволяет настраивать подтверждения точечно. В любом случае, для видео у нас предусмотрен дополнительный предохранитель: деньги за генерацию не спишутся без явного указания confirm_cost.
Сколько стоили медиаматериали для этой статьи?
Обычные тарифы за генерацию — те самые цифры, которые list_models сообщает агенту, без каких-либо скидок:
| Ресурс | Модель | Стоимость |
|---|---|---|
| Демо-ролик, сгенерированный через MCP | Veo 3.1 Fast, 720p, 8 s, без звука | $0.70 |
| Обложка + 2 иллюстрации в тексте | Nano Banana Pro, 1K | $0.33 |
| Скриншот страницы документации | браузер (не генерация) | $0.00 |
| Итого | $1.03 |
Видео получилось отличным с первой же попытки, но я бы не советовал рассчитывать на такое везение постоянно. Кадры с демонстрацией товаров обычно выходят удачными сразу, но если в кадре есть руки или текст, ИИ часто ошибается. Для сложных сцен стоит закладывать бюджет на пару дублей.
Если вы уже используете наш сервер в другом клиенте, вам понадобится только скопировать TOML-блок: ключ, баланс и история генераций останутся прежними. Если вы начинаете с нуля, посмотрите наше руководство по Claude Code — там разобраны еще четыре сценария использования, которые применимы к Codex практически без изменений. Создайте ключ и попросите Codex запустить вашу первую генерацию.
FAQ
Поддерживает ли Codex удаленные MCP-серверы с Bearer-авторизацией?
Да, нативно. Для подключения удаленного сервера в файле ~/.codex/config.toml создается таблица [mcp_servers.<имя>] с полем url, а параметр bearer_token_env_var указывает на переменную окружения, значение которой отправляется в заголовке Authorization. Информация проверена по официальной документации Codex MCP от 11 июля 2026 года. Также поддерживается протокол OAuth (режим авторизации по умолчанию для серверов, где он реализован), но для работы со статическим ключом достаточно этих двух строк.
Действительно ли конфигурация MCP является общей для Codex CLI, плагина для IDE и десктопного приложения ChatGPT?
Да, это так. В документации Codex прямо указано, что десктопный клиент ChatGPT, Codex CLI и расширение для IDE используют общий файл config.toml. Единственный нюанс на практике — это переменные окружения. Экспортированные в шелле переменные видны только CLI, а запущенная через графический интерфейс macOS программа ChatGPT требует установки переменной на уровне операционной системы (через launchctl setenv), иначе авторизация не пройдет при той же конфигурации.
Можно ли добавить сервер через команду codex mcp add вместо ручного редактирования файла?
Для этого типа серверов — нет. Команда codex mcp add в текущей версии не поддерживает флаги для передачи Bearer-токенов удаленным HTTP-серверам, поэтому прописывать настройки придется вручную в файле ~/.codex/config.toml. Плюс ручного редактирования в том, что конфигурация получается наглядной, а сам ключ хранится в переменных окружения, а не в коде.
Почему ключ bb_live_ не работает в настройках коннекторов ChatGPT?
Потому что это другой механизм интеграции. Стандартные коннекторы в чате ChatGPT (в веб-версии и десктопном приложении, доступные при включенном режиме разработчика) авторизуют MCP-серверы через OAuth, а не через прямой ввод API-ключей, поэтому эндпоинты с Bearer-авторизацией сейчас подключить не получится. В то же время интерфейсы Codex считывают настройки из config.toml и без проблем работают с ключом напрямую. После того как мы добавим поддержку OAuth 2.1, обычный чат тоже сможет использовать этот метод подключения, статус разработки можно отслеживать в таблице совместимости.
Умеет ли Codex генерировать видео и сколько это стоит?
Да, причем с обязательным подтверждением стоимости перед запуском. Метод generate_video сначала всегда возвращает предварительную цену в USD, ничего не списывая. Генерация начнется только после повторного вызова с параметром confirm_cost, равным указанной сумме. Цены варьируются от $0.10 за 4-секундный ролик без звука в разрешении 720p на модели Veo 3.1 Lite до $4.40 за премиальный 4K-рендеринг со звуком на флагманской Veo 3.1. а генерация на Omni Flash со звуком тарифицируется по $0.10 за секунду ($0.30–$1.00 за клип). Если генерация по какой-то причине завершится ошибкой, средства автоматически вернутся на баланс.