Подключить Context7 MCP к Codex CLI (шаблон в ~/dotfiles) #15

Closed
opened 2026-07-30 17:47:47 +03:00 by ddmitry · 1 comment
Owner

Зачем

AGENTS.md требует сверять спорные API (Airflow и провайдеры, DDL ClickHouse)
через MCP Context7 до написания кода. У Клода Context7 подключён коннектором
claude.ai, а Codex тянет MCP только из своего конфига — и там пусто.
Проверено 2026-07-30 на codex-cli 0.145.0: codex mcp list пуст, секции
mcp_servers в ~/.codex/config.toml нет.

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

Что сделать

Подключить Context7 к Codex CLI. Место решения — не этот репозиторий, а
~/dotfiles: шаблон MCP-конфига, чтобы подключение действовало во всех
проектах, а не только здесь.

Критерии приёмки

  • В ~/dotfiles есть шаблон конфига MCP для Codex, раскатываемый обычным
    для dotfiles способом.
  • После раскатки codex mcp list показывает Context7.
  • Codex в свежем треде отвечает на проверочный вопрос по API ClickHouse,
    сославшись на ответ Context7, а не на память.
  • Если для сервера нужен ключ — он лежит вне git, а в шаблоне только
    ссылка на переменную окружения.

Границы

  • Правку AGENTS.md здесь не делаем: правило верное, чинится инструмент.
  • Другие MCP-серверы для Кодекса — по желанию, но не обязательны.

Сначала прочитать

  • AGENTS.md, раздел «Проверка API через MCP Context7».
  • codex mcp --help и текущий ~/.codex/config.toml.
## Зачем AGENTS.md требует сверять спорные API (Airflow и провайдеры, DDL ClickHouse) через MCP Context7 до написания кода. У Клода Context7 подключён коннектором claude.ai, а Codex тянет MCP только из своего конфига — и там пусто. Проверено 2026-07-30 на codex-cli 0.145.0: `codex mcp list` пуст, секции `mcp_servers` в `~/.codex/config.toml` нет. Из-за этого правило контракта формально нарушается на каждой задаче, отданной Кодексу: он честно отчитывается «Context7 недоступен» и сверяется по официальной документации. Сейчас сверку приходится вешать на Клод-субагента. ## Что сделать Подключить Context7 к Codex CLI. Место решения — не этот репозиторий, а `~/dotfiles`: шаблон MCP-конфига, чтобы подключение действовало во всех проектах, а не только здесь. ## Критерии приёмки - [ ] В `~/dotfiles` есть шаблон конфига MCP для Codex, раскатываемый обычным для dotfiles способом. - [ ] После раскатки `codex mcp list` показывает Context7. - [ ] Codex в свежем треде отвечает на проверочный вопрос по API ClickHouse, сославшись на ответ Context7, а не на память. - [ ] Если для сервера нужен ключ — он лежит вне git, а в шаблоне только ссылка на переменную окружения. ## Границы - Правку AGENTS.md здесь не делаем: правило верное, чинится инструмент. - Другие MCP-серверы для Кодекса — по желанию, но не обязательны. ## Сначала прочитать - AGENTS.md, раздел «Проверка API через MCP Context7». - `codex mcp --help` и текущий `~/.codex/config.toml`.
ddmitry added the ready-for-human label 2026-07-30 17:47:47 +03:00
Author
Owner

Сделано

Context7 подключён к Codex CLI 0.145.0 как remote-сервер:

codex mcp add context7 --url https://mcp.context7.com/mcp --bearer-token-env-var CONTEXT7_API_KEY

В ~/.codex/config.toml — три строки без секрета: url и
bearer_token_env_var. Ключ лежит в ~/.env.secrets (права 600), файл
создаётся из готового образца bash/.env.secrets.example в dotfiles и
подхватывается bash/.bash_custom.

Проверка: codex exec в свежем треде на вопрос о синтаксисе TTL для MergeTree
вызвал context7/resolve-library-id и context7/query-docs и ответил со
ссылкой на library ID /websites/clickhouse, а не по памяти.

Решение: шаблона в ~/dotfiles не будет

Первый критерий приёмки снимается. Конфиг раскатался бы на все машины, а ключ —
нет, и получается разъезжающаяся конструкция.

Отдельно проверено: если сервер прописан, а CONTEXT7_API_KEY в окружении нет,
Codex не ругается — работает молча. То есть машина без ключа не дала бы ошибку,
а тихо вернула бы ответы по памяти. Это довод против шаблона, а не за него.

Команда подключения записана в личные заметки — на новой машине это ручной шаг.

Что стоит помнить

  • Первым вариантом был локальный запуск через
    npx -y @upstash/context7-mcp@latest --api-key .... Он рабочий, но кладёт
    ключ в argv (виден в ps) и в config.toml, плюс переразрешает пакет при
    каждом старте. Remote выбран ради гигиены ключа и скорости старта.
  • Своих HTTP-заголовков Codex не умеет, только Authorization: Bearer.
    Context7 его принимает — проверено запросом к эндпоинту.
  • ~/.bash_custom подключается только в интерактивной оболочке. При запуске
    Кодекса из cron, systemd или скрипта переменную придётся передать отдельно.
## Сделано Context7 подключён к Codex CLI 0.145.0 как remote-сервер: ``` codex mcp add context7 --url https://mcp.context7.com/mcp --bearer-token-env-var CONTEXT7_API_KEY ``` В `~/.codex/config.toml` — три строки без секрета: `url` и `bearer_token_env_var`. Ключ лежит в `~/.env.secrets` (права 600), файл создаётся из готового образца `bash/.env.secrets.example` в dotfiles и подхватывается `bash/.bash_custom`. Проверка: `codex exec` в свежем треде на вопрос о синтаксисе TTL для MergeTree вызвал `context7/resolve-library-id` и `context7/query-docs` и ответил со ссылкой на library ID `/websites/clickhouse`, а не по памяти. ## Решение: шаблона в ~/dotfiles не будет Первый критерий приёмки снимается. Конфиг раскатался бы на все машины, а ключ — нет, и получается разъезжающаяся конструкция. Отдельно проверено: если сервер прописан, а `CONTEXT7_API_KEY` в окружении нет, Codex не ругается — работает молча. То есть машина без ключа не дала бы ошибку, а тихо вернула бы ответы по памяти. Это довод против шаблона, а не за него. Команда подключения записана в личные заметки — на новой машине это ручной шаг. ## Что стоит помнить - Первым вариантом был локальный запуск через `npx -y @upstash/context7-mcp@latest --api-key ...`. Он рабочий, но кладёт ключ в `argv` (виден в `ps`) и в `config.toml`, плюс переразрешает пакет при каждом старте. Remote выбран ради гигиены ключа и скорости старта. - Своих HTTP-заголовков Codex не умеет, только `Authorization: Bearer`. Context7 его принимает — проверено запросом к эндпоинту. - `~/.bash_custom` подключается только в интерактивной оболочке. При запуске Кодекса из cron, systemd или скрипта переменную придётся передать отдельно.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/clickstream-data-platform#15