codex-mcp-bridge
codex-mcp-bridge
MCP-Server für Claude Desktop, um Prompts direkt in einen bestehenden Codex-Thread zu senden – über einen gemeinsamen Codex-App-Server. Läuft auf macOS, Windows und Linux.
Nicht codex exec (das jedes Mal eine neue Sitzung erstellt). Die Bridge spricht JSON-RPC mit dem echten Codex-App-Server, daher behält der Thread seine Historie, cwd, Modell und Rollout-Datei.
Architektur
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)Der App-Server ist ein Singleton pro Port. Die Bridge prüft
http://127.0.0.1:8791/readyz; falls er nicht läuft, startet sie ihn selbst als eigenen Prozess (codex app-server --listen ws://127.0.0.1:8791), und dieser App-Server läuft nach dem Beenden der Bridge unabhängig weiter.Alle Clients, die auf dieselbe URL zeigen, verwenden einen gemeinsamen App-Server →
thread/resumemitthreadIdtritt wieder in den laufenden Thread ein, anstatt eine neue Sitzung zu öffnen.Die Bridge hält genau eine WebSocket-Verbindung, führt
initializeeinmal aus und leitet Benachrichtigungen anhand derthreadIdweiter, sodass mehrere parallele Threads sich nicht vermischen.
Related MCP server: webgpt MCP
Tools
Tool | Aufgabe |
| Sendet einen Prompt als User-Turn an |
| Listet Threads auf (id, title, cwd, Aktualisierungszeitpunkt, Status) – um die richtige |
| Startet einen neuen Codex-Thread in einem |
| Liest den aktuellen Verlauf eines Threads, ohne etwas zu senden. |
| Stoppt einen laufenden Turn. |
| macOS: Öffnet den Thread in der Codex-Desktop-App über |
| Meldet die Umgebung: Plattform, aufgelöstes |
send_to_codex_thread akzeptiert außerdem timeoutSec (Standard 240), cwd, model, effort und openInApp (macOS – öffnet den Thread vor dem Senden in der App, um live zuzusehen). Wenn das Zeitlimit abläuft, wird der Turn nicht abgebrochen – die Bridge gibt die bereits gesammelten Daten zusammen mit turnId zurück. Weiterlesen mit read_codex_thread oder stoppen mit interrupt_codex_turn.
Installation in Claude Desktop
npm install
node scripts/install-claude-desktop.mjsDas Skript erkennt die Plattform selbst, erstellt die Config-Datei, falls sie nicht existiert, sichert die alte Version (*.bak-<Datum>-codexbridge) und behält alle vorhandenen Schlüssel bei:
Betriebssystem | Konfigurationspfad |
macOS |
|
Windows |
|
Linux |
|
Ergebnis auf 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 nach der Installation neu starten.
Resolve des codex-Binaries: Claude Desktop (und launchd) starten den MCP-Server mit einem gekürzten PATH, daher ist codex normalerweise nicht im PATH. Die Bridge sucht in dieser Reihenfolge – CODEX_BIN → bekannte Installationsorte der Plattform → PATH:
Betriebssystem | Suchreihenfolge |
macOS / Linux |
|
Windows |
|
Auf macOS/Linux ist codex ein Node-Skript mit Shebang #!/usr/bin/env node. Die Bridge setzt deshalb für den Kindprozess zusätzlich PATH (aktuelles Node-Verzeichnis + /opt/homebrew/bin + /usr/local/bin + Systemverzeichnisse) – ohne diesen Schritt stirbt der gespawnte App-Server bereits am Shebang.
macOS
App-Server im Hintergrund mit launchd
node scripts/install-launch-agent.mjsErstellt ~/Library/LaunchAgents/com.codex-mcp-bridge.app-server.plist (RunAtLoad + KeepAlive bei Absturz, ThrottleInterval 10s) und führt dann launchctl bootstrap gui/$UID aus. Der App-Server läuft bereits seit dem Login, daher muss die Bridge nicht selbst spawnen und Threads sind immer 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ỡLog: ~/Library/Logs/codex-mcp-bridge/app-server.{out,err}.log.
Thread direkt in der Codex-Desktop-App ansehen
Die Codex-Desktop-App ist auf macOS /Applications/ChatGPT.app und registriert das Schema codex://. Die Bridge verwendet codex://threads/<threadId>, um den richtigen Thread zu öffnen:
open_codex_thread { threadId: "01a0…", background: true }
send_to_codex_thread { threadId: "01a0…", prompt: "…", openInApp: true }So kann der Auftraggeber sehen, was Codex gerade tut, anstatt nach Abschluss das Rollout ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl erneut zu lesen.
Einschränkungen unter macOS
Die Codex-Desktop-App startet ihren eigenen App-Server über stdio (
ChatGPT.app/Contents/Resources/codex … app-server) und akzeptiert keinen externen Endpoint. Threads, die in der App geöffnet sind, lassen sich zwar über die Bridge ansprechen, jedoch über den Resume-Mechanismus aus der Rollout-Datei.jsonl, nicht als Live-Attach. Nicht in einen Thread senden, der gerade in der Desktop-App einen Turn ausführt – zwei App-Server, die dasselbe Rollout schreiben, können die Historie beschädigen. Vorher denstatusmitlist_codex_threadsprüfen und nur senden, wennidle/notLoadedvorliegt.Ein Repository auf einer NTFS-Partition eines Dual-Boot-Rechners (
/Volumes/...) ist unter macOS nur lesbar – macOS mountet NTFS schreibgeschützt. Behalte ein separates Checkout auf einem APFS-Laufwerk (z. B.~/code/codex-mcp-bridge), um darin zu laufen und zu ändern.codex app-server daemon startverwendet den Transportunix://mit dem Control-Socket~/.codex/app-server-control/app-server-control.sock. Die Bridge nutzt diesen Weg nicht (das Frame-Protokoll unterscheidet sich von WebSocket, keine öffentliche API) – sie kommuniziert immer überws://.
Umgebungsvariablen
Variable | Standard | Bedeutung |
|
| Gemeinsamer App-Server-Endpoint. |
| automatisch ermittelt | Pfad zu |
|
|
|
|
| Antwort auf Genehmigungsanfragen von Codex. Auf |
| automatisch je nach Betriebssystem | Erzwingt den Config-Pfad bei der Ausführung von |
| automatisch ermittelt | Erzwingt den |
Zur Genehmigung: Codex fragt nach der Freigabe von Befehlen/Patches, wenn approval_policy nicht never ist. Da niemand vor Claude Desktop sitzt, um zu klicken, antwortet die Bridge automatisch gemäß CODEX_BRIDGE_APPROVAL und protokolliert dies auf stderr. Der Standardwert approve passt zur Konfiguration approval_policy = "never" + sandbox_mode = "danger-full-access" in ~/.codex/config.toml. Wenn die Sandbox strenger eingestellt wird, sollte man auf deny wechseln.
Gemeinsame Nutzung des App-Servers mit einer interaktiven Codex-Sitzung
Öffne die TUI mit demselben Endpoint, damit der Thread in der TUI und der Bridge-Thread als derselbe erscheinen:
codex --remote ws://127.0.0.1:8791App-Server manuell ausführen (unabhängig vom Bridge-Autostart):
codex app-server --listen ws://127.0.0.1:8791Test
npm run checkSchnelltest: Bridge starten, App-Server bei Bedarf autostarten, Threads auflisten.
npm run smokeSmoke-Test: Neuen Thread erstellen, zwei aufeinanderfolgende Turns senden und prüfen, ob sich Codex das Codewort aus dem vorherigen Turn merkt – das zeigt, dass der Thread wirklich kontinuierlich ist und nicht jedes Mal eine neue Sitzung erstellt wird.
Umgebung aus Claude heraus prüfen: Tool codex_bridge_status aufrufen.
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