Что такое Codex MCP и что понадобится до начала?
Коротко: Codex MCP - способ дать агенту доступ к внешнему сервису: документации библиотек, Figma, браузеру, GitHub. Сервер добавляется одной командой в терминале, запись сохраняется в общем файле настроек. Нужны установленный Codex, терминал и, для многих серверов, Node.js.
MCP (Model Context Protocol) - открытый стандарт, по которому ИИ-приложение получает данные и использует инструменты внешней системы. Авторы протокола сравнивают его с портом USB-C: один разъём вместо своего провода под каждое устройство. Короткое определение с примерами есть в словаре ClaudeBase.
MCP-сервер - это программа, которая работает на твоём компьютере или доступна по адресу в интернете. Она предоставляет агенту набор инструментов: найти страницу документации, открыть сайт в браузере, прочитать макет. Агент вызывает такие инструменты сам, когда они нужны для задачи.
Настройки Codex MCP общие для всех способов запуска. По документации OpenAI, терминальная версия, расширение для редактора кода и десктопное приложение ChatGPT с режимом Codex читают один и тот же файл настроек config.toml (обычный текстовый файл) на одном компьютере: сервер достаточно подключить один раз, чтобы он был виден везде. Как устроено приложение после слияния с ChatGPT, разобрано в статье про приложение Codex.
Что понадобится:
- Установленный Codex. Проверка:
codex --version. Если команды нет, начни с инструкции по установке. - Терминал. Если открывал его пару раз, хватит статьи про первый запуск.
- Node.js - бесплатная программа, на которой работают многие серверы. Нужна для тех, что запускаются командой
npx, как Context7 и Playwright. Проверка:node --version. - Аккаунт в сервисе, если сервер просит вход: например, Figma или GitHub.
Команды codex mcp add, list, get, remove и codex doctor ниже прогнаны на Codex CLI 0.160.0 (стабильный выпуск от 1 октября 2026 года) на Linux 2 октября 2026 года. Проверка шла в отдельной папке настроек, без входа в аккаунт OpenAI, запросов к модели не было. Команды codex mcp login и logout сверены только со справкой: вход в сервис не проходился. Всё, что происходит в запущенной сессии (/mcp, подтверждения), взято из документации OpenAI и на практике не проверялось. Приложение ChatGPT, расширение для редактора, Windows и macOS не проверялись.
Нужен ли MCP-сервер, или хватит скилла и файла правил?
Коротко: MCP-сервер нужен, когда агенту надо брать данные или совершать действия во внешнем сервисе: читать макет, открывать страницу, смотреть задачи. Если нужна повторяемая инструкция «как у нас делается», хватит скилла или файла правил проекта.
Сервер даёт агенту доступ к данным и действиям во внешнем сервисе. Скилл и файл правил описывают порядок работы самого агента: что делать и в каком порядке. Если задачу можно решить строкой в файле правил, отдельный сервер не нужен.
| Задача | Что подходит | Почему |
|---|---|---|
| Прочитать макет в Figma и собрать по нему страницу | Сервер Figma | Данные лежат в чужом сервисе |
| Свериться со свежей документацией библиотеки | Сервер Context7 | Документацию агент берёт из внешнего источника |
| Открыть страницу в браузере и посмотреть, как она выглядит | Сервер Playwright | Нужны действия в браузере |
| Всегда оформлять коммиты одним образом | Файл правил проекта AGENTS.md |
Нужна инструкция для агента |
| Собирать еженедельный отчёт по одному шаблону | Скилл | Повторяемая процедура с готовым порядком шагов |
О файле правил рассказывает раздел об AGENTS.md в статье про первый запуск, о скиллах - статья как поставить скиллы в Codex. Серверы и скиллы дополняют друг друга: скилл может подсказать агенту, когда обращаться к серверу.
Где вы сейчас
Коротко: Читать подряд не обязательно. Найди свою ситуацию и переходи к нужному разделу.
- Есть команда
codex mcp addиз инструкции сервиса. Шаг 1 и раздел про перенос команд из чужих инструкций. - Сервер добавлен, но непонятно, работает ли он. Шаг 2: три проверки и то, что каждая доказывает.
- Сервер просит токен или вход. Разделы про удалённый сервер и про секреты.
- После правки
config.tomlперестали работать командыcodex mcp. Раздел «Частые ошибки».
Какие слова из документации и ошибок нужно знать?
Коротко: Эти слова ты встретишь в документации и в сообщениях об ошибках. Ниже каждое объяснено одной строкой.
| Слово | Что оно значит |
|---|---|
| STDIO | Сервер запускается как обычная программа на твоём компьютере, а агент общается с ней через стандартный ввод и вывод. Так устроены серверы, которые стартуют командой npx |
| Streamable HTTP | Сервер уже работает у сервиса, а агент обращается к нему по адресу в интернете |
| OAuth | Вход через браузер: ты подтверждаешь доступ на странице сервиса, пароль агенту не передаётся |
| Токен | Длинная строка, похожая на пароль. Сервис выдаёт её в своих настройках, а программа передаёт её сервису для подтверждения доступа |
| Оболочка | Программа в окне терминала, которая принимает команды |
| Переменная окружения | Именованная ячейка, из которой программы читают значения, например токен. Её задают в оболочке, и она действует, пока открыто окно терминала, если не записана в профиль оболочки |
| Таймаут | Предел ожидания. Если сервер не успел за отведённое время, попытка считается неудачной |
| TOML | Формат файла настроек: строки вида ключ = значение. Разделы файла называются таблицами и начинаются с имени в квадратных скобках, например [mcp_servers.context7] |
npx |
Программа из Node.js: скачивает пакет и запускает его одной командой |
| Репозиторий и README | Репозиторий - папка проекта с историей изменений, обычно на GitHub. README - файл с описанием проекта в этой папке |
Шаг 1. Как добавить локальный сервер командой codex mcp add?
Коротко: Локальный сервер добавляется командой
codex mcp add: имя, два дефиса и команда запуска из инструкции сервиса. Команда только записывает таблицу вconfig.tomlи ничего не запускает. Для первой пробы подходит Context7, сервер документации библиотек.
Для первого Codex MCP-сервера подходит Context7 - бесплатный сервер документации для разработчиков, его пример приведён в документации OpenAI. Для запуска регистрация не нужна. README Context7 рекомендует бесплатный ключ ради более высоких лимитов, с ключом пример не проверялся. Открой терминал в любой папке и выполни:
codex mcp add context7 -- npx -y @upstash/context7-mcp
Команда состоит из четырёх частей:
codex mcp add- записать новый сервер в настройки.context7- имя. Его придумываешь ты, под ним сервер виден в списках. Допустимы буквы, цифры и знаки-,_,:,@,/,.. Имя с пробелом отклоняется сообщениемinvalid server name.--- граница. Всё после неё запускается как программа сервера.npx -y @upstash/context7-mcp- команда запуска. Её берут из инструкции сервиса и не придумывают.
Программа отвечает одной строкой:
Added global MCP server 'context7'.
Слово global означает, что запись добавлена в настройки пользователя. В проверке файл после команды выглядел так:
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
По умолчанию файл лежит в ~/.codex/config.toml. Папку настроек можно сменить переменной CODEX_HOME, по документации она должна существовать заранее. В проверке использовалась отдельная временная папка, поэтому рабочие настройки не затронуты.
В проверке вместо сервера стояла программа-метка, которая при запуске создаёт файл. После codex mcp add, list, get и doctor файла не появилось. Сервер стартует позже, когда при запуске сессии собирается список инструментов: так следует из ключей startup_timeout_sec и mcp_optional_startup_grace_ms в справочнике настроек.
Без терминала сервер добавляют в окне настроек. По документации, в приложении ChatGPT это Settings, MCP servers, Add server, в расширении для редактора - значок шестерёнки, MCP servers, Add server.
В окне нужно указать имя, выбрать STDIO или Streamable HTTP и вписать команду или адрес. После сохранения нажми Restart, в расширении - Restart extension. Эти два пути не проверялись.
Шаг 2. Как проверить, что Codex MCP-сервер подключился?
Коротко: Проверка идёт в три шага:
codex mcp list, затемcodex doctor, затем запрос в сессии. Статус enabled в списке значит только «включён в файле»: сервер с выдуманной командой тоже enabled. Первые два шага запуск сервера не доказывают, это делает третий.
| Проверка | Что показывает | Чего не доказывает |
|---|---|---|
codex mcp list |
Запись есть в файле, она включена, способ входа | Что команда существует и сервер отвечает |
codex doctor, секция mcp |
Не найдена команда, не задана переменная токена | Что сервер запускается и отвечает |
Сессия: /mcp и тестовый запрос |
Активные серверы (по документации) и вызов инструмента | - |
Список показывает записи из файла:
codex mcp list
Name Command Args Env Cwd Status Auth
context7 npx -y @upstash/context7-mcp - - enabled Unsupported
Колонка Status показывает, включена ли запись, колонка Auth - способ входа. Unsupported у локального сервера означает, что входа у него нет. Подробности одного сервера дают codex mcp get context7 и codex mcp get context7 --json.
В отдельном прогоне сервер с выдуманной командой no-such-command-xyz имел в списке статус enabled (строка вывода):
broken no-such-command-xyz - - - enabled Unsupported
Проверка установки - команда codex doctor:
codex doctor
Команда печатает длинный отчёт про установку, настройки, вход и сеть. Тебе нужна секция mcp. В проверке она выявила две проблемы, которые список пропускает (фрагмент отчёта):
⚠ mcp MCP configuration has optional issues
figma bearer token env var FIGMA_OAUTH_TOKEN is not set
broken stdio command "no-such-command-xyz" is not resolvable (not found on PATH)
Первая строка сообщает, что не задана переменная с токеном, вторая - что команда запуска не найдена в PATH, то есть среди папок, где терминал ищет программы. Когда переменная появилась в окружении, предупреждение про неё исчезло.
Флаг --summary оставляет только сводные строки, --json печатает отчёт для программ с замаскированными данными. Сервер codex doctor не запускает и ответ сервера не проверяет. Команда показывает ошибки окружения, а неисправность внутри самого сервера не выявляет.
Запусти сессию командой codex и набери /mcp: по документации, команда показывает активные MCP-серверы. Затем дай задачу, которой нужен инструмент сервера. Если агент его вызвал, подключение работает.
В проверке Context7 предоставил два инструмента, resolve-library-id и query-docs, а сервер @modelcontextprotocol/server-memory - девять. Сессия с агентом в проверке не запускалась, для неё нужен вход в аккаунт OpenAI.
Первый запуск через npx скачивает пакет и потому занимает больше времени. На проверочной машине Context7 при пустом кэше npm ответил на первое сообщение за 13,9 секунды, при тёплом кэше за 1,9; сервер server-memory - за 8,9 и 1,4 секунды.
По умолчанию на запуск даётся 10 секунд. Значит, при первом старте медленный сервер рискует превысить лимит, а при повторном может в него уложиться. Замерен сам сервер на одной машине, сессия не запускалась: у тебя цифры будут другими. Если сервер не успевает, увеличь startup_timeout_sec, как показано в разделе про настройки.
Как подключить удалённый сервер по адресу?
Коротко: Удалённый сервер задаётся адресом:
codex mcp add, имя и флаг--url. Если сервер просит вход, нуженcodex mcp login, если токен - флаг--bearer-token-env-var. Примеры для Figma и GitHub взяты из инструкций их авторов.
Удалённый Codex MCP-сервер (в документации он называется Streamable HTTP) уже работает у сервиса. Локально запускать сервер не нужно, Node.js тоже не нужен: достаточно адреса.
Figma. В инструкции Figma для Codex команда такая:
codex mcp add figma --url https://mcp.figma.com/mcp
Дальше, по инструкции Figma, нужно пройти авторизацию, когда её предложат. Вход можно запустить и вручную:
codex mcp login figma
Флаг --no-browser печатает адрес входа вместо открытия браузера, это пригодится на удалённой машине без экрана. Команды login и logout работают только с удалёнными серверами, которые поддерживают OAuth.
Если сервер просит заранее выданный идентификатор клиента, при добавлении указывают --oauth-client-id, подробности в документации OpenAI.
У Figma свои ограничения. Лимиты вызовов инструментов зависят от тарифа и типа места, данные со страницы Figma на 2 октября 2026 года:
| Тип места | Starter | Professional | Organization | Enterprise |
|---|---|---|---|---|
| View, Collab | до 20 в месяц | до 6 в месяц | до 6 в месяц | до 6 в месяц |
| Dev, Full | до 20 в месяц | до 200 в сутки, 10 в минуту | до 200 в сутки, 15 в минуту | до 600 в сутки, 20 в минуту |
В таблице на странице Figma ячейка Starter «до 20 в месяц» объединяет обе строки, поэтому в строке Dev и Full видны три значения: это Professional, Organization и Enterprise по порядку колонок. Дневные лимиты совпадают с текстом страницы (Organization 200, Enterprise 600), образовательные тарифы для мест Dev и Full равны Professional. Figma оставляет за собой право менять лимиты.
Подключиться к серверу могут только программы из каталога Figma MCP Catalog; Codex в инструкции Figma есть.
GitHub. Сервер GitHub принимает персональный токен доступа (Personal Access Token). Инструкция GitHub просит создать токен с минимально нужными правами и не отправлять его в репозиторий. Задай переменную в оболочке и передай в команде только её имя:
export GITHUB_PAT_TOKEN=ВСТАВЬ_СВОЙ_ТОКЕН
codex mcp add github --url https://api.githubcopilot.com/mcp/ --bearer-token-env-var GITHUB_PAT_TOKEN
Команда export задаёт переменную в текущем окне терминала. В файле остаётся адрес и имя переменной, значения токена там нет:
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/"
bearer_token_env_var = "GITHUB_PAT_TOKEN"
В списке такой сервер выводится отдельной таблицей, в колонке Auth стоит Bearer token:
Name Url Bearer Token Env Var Status Auth
github https://api.githubcopilot.com/mcp/ GITHUB_PAT_TOKEN enabled Bearer token
Переменная действует, пока открыто окно терминала. Для следующих запусков её можно прописать в профиль оболочки. Тогда не придётся задавать её заново, но токен будет храниться в файле профиля. Получение переменных окружения приложением ChatGPT и расширением не проверялось.
Какие серверы подключить первыми?
Коротко: Начни с сервера, которому не нужен вход: Context7 проверит сам механизм без регистрации. Дальше подключай сервис, из которого ты чаще всего копируешь данные в чат. Список ниже взят из документации OpenAI.
В разделе документации OpenAI с примерами полезных MCP-серверов перечислены семь серверов. Описания даны в переводе по смыслу:
| Сервер | Что даёт агенту |
|---|---|
| OpenAI Docs MCP | Поиск и чтение документации разработчиков OpenAI |
| Context7 | Актуальная документация библиотек |
| Figma, локальный и удалённый | Доступ к твоим макетам в Figma |
| Playwright | Управление браузером и проверка страниц |
| Chrome Developer Tools | Управление и осмотр Chrome |
| Sentry | Доступ к журналам ошибок Sentry |
| GitHub | Работа с GitHub сверх обычного git: например, запросы на слияние (pull request) и обсуждения задач |
Если ты делаешь сайт вместе с агентом, логично начать с Playwright и Figma: первый открывает страницу и показывает результат, второй отдаёт исходный макет. Для чтения чужой документации хватит Context7. Инструкции к серверам для Blender и других программ пишут их авторы; в этой статье эти серверы не проверялись.
Как попросить агента воспользоваться сервером?
Коротко: Если агент сам не обращается к серверу, назови сервер в запросе по имени. Для Context7 README советует дописывать в конец запроса
use context7. Шаблоны ниже в запущенной сессии не прогонялись: для неё нужен вход в аккаунт OpenAI.
Имя в запросе - то, которое ты дал серверу в codex mcp add и которое видно в codex mcp list. Ниже три шаблона:
Как в Supabase сделать вход по почте и паролю? use context7
Открой страницу https://example.com через Playwright и опиши, что видно на первом экране.
Через сервер Figma посмотри макет по этой ссылке и перечисли блоки, из которых он состоит: ССЫЛКА
Шаблоны составлены по смыслу: приписка use context7 взята из README Context7, вопрос и остальные запросы измени под свою задачу.
Чтобы не дописывать use context7 каждый раз, README предлагает закрепить правило в файле правил агента. По смыслу оно такое: всегда обращаться к Context7, когда нужна документация библиотеки, генерация кода или шаги настройки. У Codex такой файл называется AGENTS.md, как с ним работать, описано в статье как пользоваться Codex.
Как перенести команду из чужой инструкции в Codex?
Коротко: Большинство инструкций написаны под JSON-файл другого агента. Те же поля становятся частями одной команды:
commandиargsидут после двух дефисов,envпревращается во флаги--env, адрес - во флаг--url, токен в заголовке - во флаг--bearer-token-env-var.
В README сервера Playwright конфигурация названа стандартной и приведена в JSON:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
Для Codex в том же README есть отдельная команда: codex mcp add playwright npx "@playwright/mcp@latest". В 0.160.0 она сработала и записала command = "npx" и args = ["@playwright/mcp@latest"]. Команда сработала без разделителя --; в этой версии он не понадобился и в проверке с флагом -y в аргументах сервера. В справке и документации OpenAI -- есть, поэтому оставляй его: он отделяет собственные флаги команды от аргументов сервера.
Как читать чужие поля:
| В чужой инструкции | В Codex |
|---|---|
"command": "npx", "args": [...] |
codex mcp add имя -- npx ... |
"env": {"КЛЮЧ": "значение"} |
--env КЛЮЧ=значение до двух дефисов (значение попадёт в файл, см. следующий раздел) |
"url": "https://..." |
codex mcp add имя --url https://... |
Заголовок Authorization: Bearer КЛЮЧ |
--bearer-token-env-var ИМЯ_ПЕРЕМЕННОЙ |
claude mcp add --transport http имя адрес |
codex mcp add имя --url адрес |
Последняя строка - перевод с Claude Code: там имя идёт после --transport http, а в Codex сразу после add. Про Claude Code есть парная статья: MCP в Claude Code. README Context7 просит передавать ключ в заголовке Authorization: Bearer, поэтому по тому же принципу его хранят в переменной и передают через --bearer-token-env-var. С Context7 это не проверялось.
Как не оставить токен Codex MCP-сервера в файле настроек?
Коротко: Значение из
--envостаётся вconfig.tomlоткрытым текстом, а ключ в аргументах команды виден целиком даже вcodex mcp list. Надёжнее хранить в файле только имя переменной:bearer_token_env_varдля удалённых серверов,env_varsдля локальных.
В проверке секрет передавали четырьмя способами и смотрели, где он оказался. Значения были выдуманными, настоящие ключи не использовались.
| Как передан | В config.toml | В codex mcp list |
|---|---|---|
--env КЛЮЧ=значение |
значение открытым текстом | КЛЮЧ=***** |
Аргумент сервера, например --api-key значение |
значение открытым текстом в args |
значение целиком |
--bearer-token-env-var ИМЯ |
только имя переменной | имя переменной в колонке Bearer Token Env Var |
env_vars = ["ИМЯ"] |
лишь имя переменной | ИМЯ=***** |
Звёздочки в списке прячут значение только на экране. Файл можно скопировать, показать на встрече, отправить в резервную копию или в репозиторий, и значение уйдёт вместе с ним. Поэтому локальному серверу лучше передавать значение из переменной окружения:
[mcp_servers.weather]
command = "npx"
args = ["-y", "имя-пакета-сервера"]
env_vars = ["WEATHER_API_KEY"]
Саму переменную задаёшь в оболочке до запуска сессии: export WEATHER_API_KEY=твой_ключ. Если переменной нет, codex doctor сообщит об этом в секции mcp: env var WEATHER_API_KEY is not set. После того как переменную задали, предупреждение исчезало.
Если ключ уже попал в файл, замени значение именем переменной и перевыпусти ключ у сервиса: файл мог успеть уйти в копию или в репозиторий. Проектный файл .codex/config.toml, который лежит в репозитории, не должен содержать ни одного секрета.
Где хранятся настройки Codex MCP: для всех проектов или для одного?
Коротко: Команда
codex mcp addпишет в общий файл пользователя. Запись для одного проекта делают вручную в.codex/config.tomlвнутри проекта, и работает она только в доверенном проекте. Если ключи совпадают, приоритет у файла, который ближе к рабочей папке.
По документации OpenAI, настройки имеют следующий порядок приоритета, от высшего к низшему: флаги командной строки, проектные файлы .codex/config.toml (приоритет у ближайшего к рабочей папке, только доверенные проекты), профили, пользовательский ~/.codex/config.toml, настройки от организации, системный файл, значения по умолчанию.
Для сервера, который нужен только в одном репозитории, подходит проектный файл:
# .codex/config.toml в корне проекта
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Команда codex mcp add в проверке писала только в общий файл, в её справке нет флага для выбора проекта. Проектный файл создают руками. Если файл лежит в репозитории проекта, его получают и коллеги: им достаточно обновить проект.
По документации, проектные настройки загружаются только для доверенного проекта, а у недоверенного пропускаются .codex/config.toml, локальные сценарии (хуки) и правила. Статус доверия проекту задают ключом projects.<путь>.trust_level со значениями trusted и untrusted. Диалог доверия при первом запуске в проверке не проходился.
Проектный файл из чужого репозитория может запускать программы на твоём компьютере, потому что команда сервера выполняется с твоими правами. Перед тем как доверять клонированному проекту, открой .codex/config.toml и прочитай каждую строку command.
Какие настройки Codex MCP-сервера стоит знать?
Коротко: Для начала хватит пяти ключей:
enabled,required,startup_timeout_sec,tool_timeout_secиdefault_tools_approval_mode. Остальные ограничивают инструменты и вход. Опечатка в имени ключа таймаута в проверке не вызвала ошибки, значение не применилось, поэтому после правки проверяй результат командойcodex mcp get ИМЯ --json.
Ключи записывают в таблице сервера [mcp_servers.имя]. Значения и настройки по умолчанию взяты из справочника настроек OpenAI.
| Ключ | Что делает | По умолчанию |
|---|---|---|
enabled |
false отключает сервер, не удаляя запись |
включён |
required |
true: если этот включённый сервер не запустился, не стартует и сессия |
- |
startup_timeout_sec |
Время на запуск сервера, в секундах | 10 |
tool_timeout_sec |
Время на один вызов инструмента, в секундах | 60 |
enabled_tools, disabled_tools |
Разрешённые и запрещённые инструменты; список запрещённых применяется после списка разрешённых | - |
default_tools_approval_mode |
auto, prompt, writes или approve; writes просит подтверждение для инструментов без пометки «только чтение» |
- |
tools.<инструмент>.approval_mode |
То же для одного инструмента | - |
Пример, собранный из этих ключей:
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 90
enabled_tools = ["resolve-library-id", "query-docs"]
default_tools_approval_mode = "prompt"
Версия 0.160.0 разобрала такой файл без ошибок (вход и вывод сохранены в материалах проверки). В выводе codex mcp get context7 --json видны startup_timeout_sec: 30.0, tool_timeout_sec: 90.0 и список инструментов, а режим подтверждений не напечатан, поэтому его действие проверяй в сессии. Есть и вариант в миллисекундах: startup_timeout_ms = 2500 дал startup_timeout_sec: 2.5. Осторожнее с required = true: он оправдан, только если без сервера работа не имеет смысла.
Перед ручной правкой config.toml сделай копию файла: cp ~/.codex/config.toml ~/.codex/config.toml.bak. После правки выполни codex mcp list. Если вместо списка появилась ошибка про bootstrap configuration, значит, в файле опечатка в структуре. Верни копию на место и повтори правку по одной строке.
Опечатка в имени ключа может остаться без сообщения об ошибке. В проверке в таблицу сервера записали startup_timeout = 5 вместо startup_timeout_sec = 5. Ошибка не появилась, значение в выводе codex mcp get ИМЯ --json осталось пустым (null означает «не задано»). С верным именем ключа там стояло 5.0. После каждой правки настройки смотри на неё в этом выводе.
Что проверить, прежде чем подключать чужой Codex MCP-сервер?
Коротко: Локальный MCP-сервер - это программа, которая запускается на твоём компьютере с теми же правами, что и агент. Перед добавлением прочитай, что именно запускает команда. По документации OpenAI, для инструментов, которые сервер называет разрушительными, подтверждение запрашивается всегда, если нет пометки «только чтение».
Рекомендации по безопасности от авторов MCP прямо перечисляют риски локальных серверов: выполнение произвольных команд с правами клиента, невозможность увидеть, что именно выполняется, потеря данных. В их примерах злонамеренных команд запуска есть связка, которая после установки пакета отправляет на чужой адрес файл с ключом SSH. Для такой атаки хватает одной строки: команда запуска записана в том же файле настроек, который ты правил, и выполняется с твоими правами.
Короткая проверка перед codex mcp add:
- Команда взята из инструкции самого сервиса: Figma, GitHub, Playwright. Пост с форума источником не считается.
- Ты прочитал её целиком, включая части после
&&и словаsudo,curl,rm. - Для важной работы версия пакета закреплена. В примерах Playwright стоит
@latest, то есть берётся самая свежая версия, и между запусками она может измениться. - Токен выдан с минимальными правами и только на то, что нужно серверу.
- Ты решил, какие действия сервера агент выполняет без подтверждения. По документации OpenAI, вызовы приложений и MCP-инструментов, которые сервер пометил как разрушительные, требуют подтверждения всегда, если у инструмента нет пометки «только чтение». Для остальных можно поставить
default_tools_approval_mode = "prompt".
Пометки инструментов ставит автор сервера. Если сервер ничего не пометил, не рассчитывай, что Codex автоматически запросит подтверждение. Это совет автора статьи; в документации такого требования нет.
Удалённый сервер получает всё, что агент передаёт в вызове инструмента: поисковый запрос, ссылку на файл, кусок текста. Не давай такому серверу того, что нельзя показывать стороннему сервису.
Как отключить и удалить Codex MCP-сервер?
Коротко: Временно сервер выключают ключом
enabled = false, насовсем удаляют командойcodex mcp remove. Сохранённые данные входа через OAuth удаляетcodex mcp logout. Повторное удаление уже удалённого сервера ошибкой не считается: команда сообщает, что такого нет, и завершается без сбоя.
Отключение оставляет запись в файле и выводит сервер из работы. В списке у такого сервера статус disabled:
broken no-such-command-xyz - - - disabled Unsupported
Удаление стирает запись совсем:
codex mcp remove notes
Removed global MCP server 'notes'.
Если выполнить ту же команду ещё раз, она ответит No MCP server named 'notes' found. и завершится без сбоя. Опечатку в имени так легко не заметить, поэтому проверь итог списком codex mcp list.
Для удалённого сервера с OAuth добавь codex mcp logout имя: он удаляет сохранённые данные входа. После удаления записи токен остаётся в переменной окружения, его при необходимости отзывают в настройках сервиса.
Частые ошибки
Коротко: Подключение Codex MCP чаще всего ломается из-за имени сервера, неверного типа значения в
config.toml, опечатки в ключе и медленного первого запуска. Для каждой ошибки ниже указано, как она выглядит и что делать.
invalid server name
Имя сервера содержит пробел или другой запрещённый знак:
Error: invalid server name 'bad name' (use letters, numbers, '-', '_', ':', '@', '/', '.')
Выбери имя из букв, цифр и разрешённых знаков.
failed to load bootstrap configuration
После ручной правки файла codex mcp list и codex mcp get перестают работать:
Error: failed to load bootstrap configuration
Caused by:
invalid type: sequence, expected a string
in `mcp_servers.badtype.command`
В проверке причиной стал command = ["echo", "hi"]: команда - строка, а аргументы идут отдельным ключом args. Исправь тип значения в названной таблице, и команды заработают снова.
Повторное добавление заменяет запись
Повторный codex mcp add с тем же именем не предупреждает. Он заменяет запись и завершается без сбоя. В проверке так @upstash/context7-mcp превратился в @upstash/context7-mcp@latest. Если замена не нужна, сначала посмотри codex mcp list.
Сервер есть в списке, но в сессии его не видно или он не отвечает
Проверь по порядку:
codex doctorи секцияmcp: нет ли незаданной переменной или ненайденной команды.- Время запуска: если сервер скачивает пакет, увеличь
startup_timeout_sec. - Перезапуск: по документации, в приложении и в расширении после сохранения нужен Restart.
- Место записи: общий файл или проектный
.codex/config.toml. Настройки недоверенного проекта пропускаются. - Расширение редактора: на 2 октября 2026 года у OpenAI открыто обращение 6465 о том, что серверы, работающие в терминале, не видны в расширении для VS Code. Проверь тот же сервер в
codex mcp listиз терминала, чтобы отделить проблему файла от проблемы расширения.
Windows
В 2025 году у запуска серверов через npx на Windows были известные проблемы: обращение openai/codex 2555 о версиях 0.23-0.31 закрыто 9 сентября 2025 года. Его автор в итоге перешёл на WSL. Как это ведёт себя в 0.160.0, не проверялось. Если сервер на Windows не стартует, смотри статью Codex на Windows и раздел про WSL2.
Инструкция с codex mcp-server
Это обратная задача: запуск самого Codex в роли MCP-сервера. По справке OpenAI, команда codex mcp-server и одноимённая программа удалены, вместо них предлагается app server. Для подключения чужих серверов она не нужна. Подробнее про изменения - в сравнении Codex и Claude Code.
Что дальше?
Коротко: Когда один Codex MCP-сервер заработал, подключай следующий: тот сервис, из которого ты чаще всего копируешь данные в чат. Рабочие правила закрепляй в самом проекте.
- Если работаешь и в Claude Code, там тот же протокол с другими командами: MCP в Claude Code.
- Готовые серверы с описанием и командами лежат в каталоге: Context7 и Playwright.
- Скилл и MCP-сервер - разные вещи: скилл - папка с инструкцией, сервер - подключение к сервису. Про скиллы в Codex - как поставить скиллы.
- Чтобы агент брал готовые настройки, скиллы и инструкции сам, ClaudeBase подключается к нему как удалённый MCP-сервер по адресу. Ключ виден в кабинете, для Codex там есть готовая строка настроек. По правилам TOML такую строку вставляют в начало файла, до первой таблицы в квадратных скобках. Если вставить её как есть, ключ окажется в
config.tomlоткрытым текстом; чтобы держать его в переменной, используйbearer_token_env_varпо принципу из раздела про токены (именно эту строку в проверке не пробовали).
Чек-лист
Коротко: Подключение Codex MCP закончено, когда выполнены все шесть пунктов.
codex --versionпечатает нужную версию, аcodex mcp listпоказывает сервер под задуманным именем.- В секции
mcpотчётаcodex doctorнет предупреждений про твой сервер. - В сессии
/mcpпоказывает сервер, а тестовый запрос вызвал его инструмент. - В
config.tomlи в аргументах сервера нет токена открытым текстом: стоят только имена переменных. - Ты знаешь, в каком файле запись: в общем
~/.codex/config.tomlили в проектном.codex/config.tomlдоверенного проекта. - Ненужный сейчас сервер выключен через
enabled = false, а совсем ненужный удалён командойcodex mcp remove.
Источники
- Документация OpenAI: подключение MCP-серверов
- Справочник настроек, раздел про серверы MCP
- Основы config.toml и порядок слоёв настроек, документация OpenAI
- Расширенные настройки, проектные файлы и доверие, документация OpenAI
- Команды в терминале, документация OpenAI
- Подтверждения и безопасность агента по версии OpenAI
- Переменные окружения и папка настроек, документация OpenAI
- Заметки к выпуску 0.160.0 на GitHub
- Обращение 2555 на GitHub: сервер Context7 на Windows
- Обращение 6465 на GitHub: серверы не видны в расширении для VS Code
- Что такое MCP, сайт протокола Model Context Protocol
- Рекомендации по безопасности от авторов протокола MCP
- Подключение удалённого MCP-сервера Figma
- Лимиты и доступ к MCP-серверу, документация Figma
- Установка GitHub MCP Server, инструкция GitHub
- README сервера Playwright MCP
- Репозиторий сервера Context7 и его README