Подключение MCP-1C к OpenAI Codex

codexopenaimcp1c

Codex 1С через MCP: где лежит config.toml, минимальная конфигурация stdio-сервера, неблокирующий старт и первая индексация, ключи LLM и разбор частых ошибок подключения.

OpenAI Codex умеет подключаться к MCP-серверам: у него есть отдельная страница документации про Model Context Protocol. Это значит, что связку Codex и 1С можно собрать без адаптеров: MCP-1C запускается как обычный stdio-сервер, а Codex общается с ним через stdin и stdout. Отдельный порт или HTTP-сервер для этого не нужны.

MCP-1C поставляется одним бинарником на Go. В этой инструкции используется платный бинарник mcp-1c-advanced. Он читает метаданные конфигурации 1С и отдаёт инструменты поиска, работы с метаданными и оптимизатора запросов прямо в сессию Codex.

Где Codex хранит настройки MCP

Codex хранит конфигурацию MCP-серверов в файле config.toml. По официальной документации он берётся из двух мест:

Файл Назначение
~/.codex/config.toml пользовательский, в домашнем каталоге
.codex/config.toml в корне проекта, только для доверенных проектов

Один и тот же файл читают и CLI, и расширение Codex в IDE, поэтому достаточно прописать сервер один раз. Подпапку .codex Codex ищет в домашнем каталоге пользователя, поэтому на Windows она находится в каталоге профиля пользователя.

Каждый MCP-сервер описывается таблицей с заголовком вида [mcp_servers.<имя>], где <имя> это произвольный идентификатор. Для stdio-сервера используются поля:

Поле Назначение
command обязательное, команда запуска сервера
args необязательное, массив аргументов
env необязательное, таблица переменных окружения
env_vars необязательное, список переменных для проброса
cwd необязательное, рабочий каталог
enabled необязательное, выключает сервер без удаления записи

Минимальная конфигурация

Откройте ~/.codex/config.toml (или создайте его) и добавьте блок:

[mcp_servers.mcp-1c]
command = "/usr/local/bin/mcp-1c-advanced"
args = [
  "--base", "http://localhost:8080/hs/mcp-1c",
  "--user", "Администратор",
  "--password", "",
]

Поле command это путь к бинарнику. Указывайте абсолютный путь: при запуске по относительному имени файл часто не находится в PATH. Параметры --base, --user, --password совпадают с теми, что используются при ручном запуске сервера.

Флаг --base принимает адрес опубликованного HTTP-сервиса 1С: http://host:port/path/hs/mcp-1c (или https://, если соединение защищённое). Когда баз несколько, он задаётся в форме ИМЯ=URL, и тогда учётные данные каждой базы задаёт --auth: --user и --password действуют, только когда база одна и задана адресом без имени. Для режима длинного опроса вместо HTTP-адреса указывается схема poll://; в этом режиме серверу опроса нужны учётные данные, например --poll-user и --poll-password (пароль не короче 12 символов), если явно не отказаться от проверки подлинности. Флаг --listen задаёт адрес, на котором слушает сервер опроса, по умолчанию :9090, а 1С подключается за задачами по адресу, который обычно задаёт при установке флаг --poll-server-url, и этот адрес должен вести к серверу опроса.

Таймаут запуска и первая индексация

Для stdio-серверов Codex использует два таймаута:

  • startup_timeout_sec (по умолчанию 10) задаёт время на старт сервера;
  • tool_timeout_sec (по умолчанию 60) ограничивает выполнение одного вызова инструмента.

Старт MCP-1C неблокирующий: сервер отвечает на подключение сразу, а если задана выгрузка конфигурации (--dump), поисковый индекс по ней строится в фоне. Поэтому дефолтных значений таймаутов обычно достаточно даже на большой конфигурации, поднимать их специально под индексацию не нужно. Пока индекс строится, поиск по коду возвращает сообщение «Индекс базы ещё не готов. Он строится один раз после запуска сервера, время зависит от размера конфигурации. Повторите запрос позже», такой текст у сообщения с версии 2.41.0. Модуль объекта или менеджера на базе, подключённой к 1С, в это время запрашивается у самой 1С и приходит, если она его отдаёт, а чтение модуля, который сервер берёт только из выгрузки, например общего, отвечает отказом с тем же сообщением в тексте ошибки. Если сборка индекса прервалась, ответ другой: «Не удалось построить индекс базы» с причиной и просьбой перезапустить сервер.

Индекс кэшируется на диске, поэтому повторный запуск использует готовый кэш и проходит практически мгновенно. Путь кэша по умолчанию это системный каталог кэша ОС; его можно задать флагом --cache-dir или переменной MCP_1C_CACHE_DIR.

Подключение через CLI

Вместо ручной правки файла сервер можно добавить командой. Подкоманда codex mcp управляет MCP-серверами:

codex mcp add mcp-1c -- /usr/local/bin/mcp-1c-advanced --base http://localhost:8080/hs/mcp-1c --user Администратор

Всё, что идёт после --, это команда запуска stdio-сервера с её аргументами; для пользователя без пароля флаг --password не нужен. Переменные окружения передаются флагом --env VAR=VALUE до разделителя --.

Несколько баз

Флаг --base повторяется внутри массива args, по одному на каждую базу 1С:

[mcp_servers.mcp-1c]
command = "/usr/local/bin/mcp-1c-advanced"
args = [
  "--base", "dev=http://localhost:8080/hs/mcp-1c",
  "--base", "prod=http://prod-server:8080/erp/hs/mcp-1c",
  "--auth", "dev=Администратор:",
  "--auth", "prod=Администратор:",
]

Учётные данные для каждой базы задаются флагом --auth ИМЯ=ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ (после двоеточия пустой пароль означает отсутствие пароля).

Профессиональная редакция и ключи LLM

В режиме сервера к внешней LLM обращается только инструмент автогенерации документации (autodoc) Профессиональной редакции: генерация тестов, сборка .epf и навигация по типовым конфигурациям в режиме сервера к LLM не обращаются. autodoc работает только с выгрузкой конфигурации: без --dump он отказывает на любое действие, поэтому для него в аргументы запуска нужно добавить --dump с путём к выгрузке. Инструменты Профессиональной редакции есть только в бинарнике mcp-1c-pro: на бинарнике Расширенной редакции mcp-1c-advanced они недоступны, и одни лишь переменные окружения их не включают. Поэтому для такого сценария укажите в command путь к mcp-1c-pro, а LLM-ключи задайте отдельной таблицей env:

[mcp_servers.mcp-1c-pro]
command = "/usr/local/bin/mcp-1c-pro"
args = [
  "--base", "http://localhost:8080/hs/mcp-1c",
  "--user", "Администратор",
  "--password", "",
]

[mcp_servers.mcp-1c-pro.env]
YANDEXGPT_API_KEY = "AQVN..."
YANDEXGPT_FOLDER_ID = "b1g..."

Поддерживаются провайдеры YandexGPT (переменные YANDEXGPT_API_KEY и YANDEXGPT_FOLDER_ID) и GigaChat (GIGACHAT_CLIENT_ID и GIGACHAT_CLIENT_SECRET). API-ключи нужны действиям generate и regenerate инструмента autodoc, но их недостаточно: без бинарника mcp-1c-pro инструменты Профессиональной редакции не появятся. Базовые инструменты (поиск, метаданные, оптимизатор запросов) от LLM не зависят и работают всегда.

Если что-то не подключилось

Частые причины сбоев подключения к MCP:

  1. Бинарник не находится по указанному пути. Указывайте абсолютный путь в поле command.
  2. Слишком короткий таймаут старта на медленном диске или при холодном старте бинарника. Поднимите startup_timeout_sec.
  3. Каталог проекта не помечен как доверенный, поэтому проектный .codex/config.toml не загружается.
  4. Переменная окружения с токеном не задана на момент запуска.

Совместимость

MCP-1C подключается к Codex по тем же правилам, что и к любому другому MCP-клиенту: транспорт стандартный stdio, клиент запускает бинарник и говорит с ним через stdin и stdout. Тот же подход описан для Claude Desktop и Cursor, отличается только формат файла настроек.

Соседние инструкции: подключение к Cursor, общая документация и главная страница с обзором редакций. В прозе доступны Открытая, Расширенная и Профессиональная редакции. Корпоративная редакция в разработке.