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

·
  • codex
  • openai
  • mcp
  • 1c

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", "acc=http://localhost:8080/hs/mcp-1c",
  "--user", "Администратор",
  "--password", "",
]

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

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

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

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

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

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

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

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

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

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

Всё, что идёт после --, это команда запуска stdio-сервера с её аргументами. Переменные окружения передаются флагом --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. Эти инструменты есть только в бинарнике Профессиональной редакции 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", "acc=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-ключи необходимы, но их недостаточно: без бинарника 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, общая документация и главная страница с обзором редакций. В прозе доступны Открытая, Расширенная и Профессиональная редакции. Корпоративная редакция в разработке.