codex-mcp-bridge
codex-mcp-bridge
MCP-сервер для Claude Desktop, чтобы отправлять prompt прямо в существующий thread Codex через общий app-server Codex. Работает на macOS, Windows и Linux.
Это не codex exec (создаёт новую сессию каждый раз). Bridge общается по JSON-RPC с настоящим app-server Codex, поэтому thread сохраняет историю, cwd, модель и rollout-файл.
Архитектура
Claude Desktop ──stdio──> codex-mcp-bridge ──WebSocket──> codex app-server (ws://127.0.0.1:8791)
│
Codex TUI ──codex --remote ws://127.0.0.1:8791───────────────────┘ (cùng app-server, cùng thread live)App-server — синглтон по порту. Bridge опрашивает
http://127.0.0.1:8791/readyz; если он ещё не жив, сам запускает detached (codex app-server --listen ws://127.0.0.1:8791), и этот app-server продолжает работать независимо после выхода bridge.Любой клиент, указывающий на тот же URL, использует один общий app-server →
thread/resumeсthreadIdпереподключается к тому же запущенному thread, а не открывает новую сессию.Bridge держит ровно один WebSocket, один раз выполняет
initializeи маршрутизирует уведомления поthreadId, поэтому параллельные thread не перемешиваются.
Related MCP server: webgpt MCP
Tools
Tool | Задача |
| Отправляет prompt как user turn в |
| Перечисляет thread (id, title, cwd, время обновления, status) — чтобы получить правильный |
| Открывает новый thread Codex в указанном |
| Читает недавний диалог thread, ничего не отправляя. |
| Останавливает выполняющийся turn. |
| macOS: открывает thread в Codex desktop app через |
| Сообщает окружение: platform, разрешённый бинарник |
send_to_codex_thread принимает также timeoutSec (по умолчанию 240), cwd, model, effort и openInApp (macOS — открыть thread в приложении перед отправкой для просмотра в реальном времени). По истечении таймаута turn не отменяется — bridge возвращает всё, что уже получено, вместе с turnId; продолжить чтение можно через read_codex_thread, остановить — через interrupt_codex_turn.
Установка в Claude Desktop
npm install
node scripts/install-claude-desktop.mjsСкрипт сам определяет platform, создаёт файл конфигурации, если его нет, делает резервную копию старого (*.bak-<дата>-codexbridge) и сохраняет все существующие ключи:
OS | Путь к конфигу |
macOS |
|
Windows |
|
Linux |
|
Результат на macOS:
{
"mcpServers": {
"codex-bridge": {
"command": "/Users/<user>/.local/node/v24.18.0/bin/node",
"args": ["/Users/<user>/code/codex-mcp-bridge/src/index.mjs"],
"env": {
"CODEX_BIN": "/Users/<user>/.local/bin/codex",
"CODEX_APP_SERVER_URL": "ws://127.0.0.1:8791"
}
}
}
}Перезапустите Claude Desktop после установки.
Поиск бинарника codex: Claude Desktop (и launchd) запускает MCP-сервер с урезанным PATH, поэтому codex обычно отсутствует в PATH. Bridge ищет в порядке — CODEX_BIN → привычные места установки для платформы → PATH:
OS | Порядок поиска |
macOS / Linux |
|
Windows |
|
На macOS/Linux codex — это Node-скрипт с shebang #!/usr/bin/env node, поэтому bridge также заново прописывает PATH (текущая директория node + /opt/homebrew/bin + /usr/local/bin + системные каталоги) для дочернего процесса — без этого шага spawn app-server умирает прямо на shebang.
macOS
App-server в фоне через launchd
node scripts/install-launch-agent.mjsСоздайте ~/Library/LaunchAgents/com.codex-mcp-bridge.app-server.plist (RunAtLoad + KeepAlive при сбое, ThrottleInterval 10s), затем launchctl bootstrap gui/$UID. App-server уже работает с момента входа в систему, поэтому bridge не нужно запускать его самостоятельно, и thread всегда в состоянии live.
launchctl print gui/$UID/com.codex-mcp-bridge.app-server | head -20 # trạng thái
node scripts/install-launch-agent.mjs --uninstall # gỡЛоги: ~/Library/Logs/codex-mcp-bridge/app-server.{out,err}.log.
Просмотр thread напрямую в Codex desktop app
Codex desktop app на macOS — это /Applications/ChatGPT.app, и он регистрирует схему codex://. Bridge использует codex://threads/<threadId>, чтобы открыть нужный thread:
open_codex_thread { threadId: "01a0…", background: true }
send_to_codex_thread { threadId: "01a0…", prompt: "…", openInApp: true }Это способ для постановщика задачи видеть, что Codex делает, вместо того чтобы перечитывать rollout ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl после завершения.
Ограничения на macOS
Codex desktop app сам запускает отдельный app-server через stdio (
ChatGPT.app/Contents/Resources/codex … app-server) и не принимает внешний endpoint. Thread, открытый в приложении, по-прежнему можно отправлять через bridge, но по механизму resume из rollout.jsonl, а не как live-подключение. Не отправляйте в thread, в котором прямо сейчас выполняется turn в desktop app — два app-server, пишущих в один rollout, могут повредить историю. Сначала проверяйтеstatusчерезlist_codex_threads, отправляйте только приidle/notLoaded.Репозиторий на NTFS-разделе машины с двойной загрузкой (
/Volumes/...) на macOS доступен только для чтения — macOS монтирует NTFS read-only. Держите отдельный checkout на APFS-диске (например,~/code/codex-mcp-bridge) для запуска и правок.codex app-server daemon startиспользует transportunix://с control socket~/.codex/app-server-control/app-server-control.sock. Bridge не использует этот путь (протокол кадрирования отличается от WebSocket, публичного API нет) — всегда общается черезws://.
Env
Переменная | По умолчанию | Значение |
|
| Endpoint общего app-server. |
| автоопределение | Путь к |
|
|
|
|
| Способ ответа на запросы одобрения от Codex. Установите |
| автоопределение по OS | Принудительно задаёт путь к конфигу при запуске |
| автоопределение | Принудительно задаёт путь к |
Об одобрении: Codex запрашивает подтверждение команд/патчей, если approval_policy не равен never. Рядом с Claude Desktop никого нет, чтобы нажимать кнопки, поэтому bridge отвечает сам согласно CODEX_BRIDGE_APPROVAL и пишет в stderr. Значение по умолчанию approve соответствует конфигурации approval_policy = "never" + sandbox_mode = "danger-full-access" в ~/.codex/config.toml; если вы ужесточаете sandbox, стоит сменить на deny.
Общий app-server с интерактивной сессией Codex
Откройте TUI, указывающий на тот же endpoint, чтобы thread в TUI и thread bridge были видны как один:
codex --remote ws://127.0.0.1:8791Запустите app-server вручную (не полагаясь на автозапуск bridge):
codex app-server --listen ws://127.0.0.1:8791Тест
npm run checkБыстрая проверка: bridge запускается, при необходимости autostart app-server, перечисляет thread.
npm run smokeSmoke test создаёт новый thread, отправляет 2 подряд turn и проверяет, что Codex помнит кодовое слово из предыдущего turn — это значит, thread действительно непрерывный, а не новая сессия каждый раз.
Проверьте окружение из Claude: вызовите tool codex_bridge_status.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for managing Claude Code conversation sessions12503MIT
- Flicense-qualityCmaintenanceLocal MCP server for Codex to send prompts to ChatGPT Web Pro extension and manage repository tasks safely.
- Alicense-qualityBmaintenanceAn MCP server that bridges Claude Desktop with Claude Code, allowing users to delegate tasks to Claude Code directly from Claude Desktop conversations, supporting both synchronous and background execution with session reuse.13MIT
- AlicenseAqualityCmaintenanceMCP server that lets Claude Code drive the local Codex CLI as a sub-agent for concurrent queries and optional file/shell actions, using the CLI's existing login and sessions.4911MIT
Related MCP Connectors
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/buidangminh23/codex-mcp-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server