Codex JetBrains MCP
Codex JetBrains HUD + Hooks Integrationsanleitung
Projekthintergrund: Dieser Anpassungsansatz basiert auf der Analyse des geleakten Quellcodes von
Claude Code v2.1.88. Ziel ist es,Codexmit ähnlichen Fähigkeiten wieClaude Codeauszustatten, sodass es die aktuell in JetBrains-IDEs ausgewählten Dateien, Zeilennummern und Codebereiche wahrnehmen kann.Autor:
nealzhi
Dieses Dokument beschreibt nur noch einen Integrationspfad: HUD + Hooks.
Dieses Repository hat die alte Lösung „lokaler MCP-Server + globale Prompts“ entfernt; diese Methode wird nicht mehr empfohlen und nicht mehr bereitgestellt.

1. Voraussetzungen
Erfüllen Sie zunächst die folgenden zwei Bedingungen:
Sie verwenden eine JetBrains-IDE Zum Beispiel:
IntelliJ IDEA,PyCharm,WebStorm,GoLand,Android StudioIn Ihrer IDE ist das offizielle Claude Code JetBrains-Plugin installiert Dies ist die Voraussetzung für die Verknüpfung. Ohne dieses Plugin gibt es keine lokalen
~/.claude/ide/*.lock-Dateien und die entsprechenden lokalen Schnittstellen, sodass Codex die aktuell ausgewählte Datei und den Codebereich nicht lesen kann.
2. Abhängigkeiten installieren
Führen Sie im Stammverzeichnis des Repositorys aus:
cd codex-jetbrains-mcp
npm install
brew install tmuxErklärung:
npm install: Installiert HUD- und Hook-Abhängigkeitentmux: HUD-Abhängigkeit
3. HUD integrieren
Führen Sie im Stammverzeichnis des Repositorys aus:
chmod +x codex-jetbrains-mcp/bin/codex-jetbrains-hudWenn Sie möchten, dass codex zukünftig direkt mit HUD gestartet wird, fügen Sie die folgende Zeile zu Ihrer ~/.zshrc oder ~/.bashrc hinzu:
alias codex='$(pwd)/codex-jetbrains-mcp/bin/codex-jetbrains-hud'Shell neu laden:
source ~/.zshrcWenn Sie bash verwenden, führen Sie aus:
source ~/.bashrcWenn Sie im macOS-Terminal oder Warp-Terminal feststellen, dass das Mausrad das Codex-Fenster nicht scrollen kann, können Sie den folgenden Befehl ausführen, um die tmux-Mausunterstützung zu aktivieren:
tmux set -g mouse onNach dem Start des HUD wird eine Zeile angezeigt:
JetBrains PyCharm 已连接 | test_main.py:2140-2147 (8 lines)4. Hooks konfigurieren
Der Kern dieses Ansatzes ist:
Beim Start von
codexwird gleichzeitig das HUD gestartetDas HUD schreibt automatisch die aktuelle JetBrains-Datei/Zeilennummer in
.codex/jetbrains-selection-state.jsonDer
UserPromptSubmit-Hook liest diesen Status, wenn Sie eine Nachricht sendenWenn ein JetBrains-Kontext vorhanden ist, werden nur der „Dateipfad“ oder „Dateipfad + Zeilennummer“ injiziert
Der ausgewählte Text wird nicht injiziert, damit Codex die Datei bei Bedarf selbst lesen kann
4.1 Empfohlene Startmethode
Führen Sie im Stammverzeichnis des Repositorys aus:
chmod +x codex-jetbrains-mcp/bin/codex-jetbrains-hud
alias codex='$(pwd)/codex-jetbrains-mcp/bin/codex-jetbrains-hud'Danach können Sie codex wie gewohnt ausführen.
Jetzt synchronisiert codex-jetbrains-hud neben der Anzeige des HUD auch automatisch den für Hooks benötigten Status. Dies ist der einzig empfohlene Pfad; ein separater Synchronisationsprozess ist nicht erforderlich und wird nicht mehr bereitgestellt.
Die Statusdatei wird geschrieben nach:
.codex/jetbrains-selection-state.json4.2 Hooks konfigurieren
Das Repository enthält bereits:
.codex/config.toml.codex/hooks/selection-state.mjs.codex/hooks.json.codex/hooks/user-prompt-submit-jetbrains-selection.mjs
Es gibt zwei Möglichkeiten der Integration:
Wenn Sie
codexin diesem Repository-Verzeichnis starten Codex liest direkt die.codex/config.tomlund.codex/hooks.jsondes Repositorys; Sie müssen keine zusätzlichen Pfade angeben.Wenn Sie bereits eine eigene globale
~/.codex/hooks.jsonhaben Überschreiben Sie diese nicht, sondern fügen Sie dieUserPromptSubmit-Konfiguration aus dem Repository hinzu. Wenn Sie diese nach~/.codex/hooks/kopieren möchten, kopieren Sie das gesamte Verzeichnis.codex/hooks/und nicht nur die Einstiegsdatei.
Die .codex/config.toml dient dazu, die offiziell erforderliche Hook-Funktion zu aktivieren:
[features]
codex_hooks = trueLaut offizieller Dokumentation sind Hooks standardmäßig deaktiviert und müssen in der config.toml aktiviert werden oder beim Start mit codex --enable codex_hooks übergeben werden. Außerdem liest die Konfigurationsschicht von Codex sowohl ~/.codex/config.toml als auch die .codex/config.toml im Repository; wenn das Projekt nicht als „trusted“ markiert ist, wird die .codex/config.toml auf Repository-Ebene nicht wirksam.
Der Inhalt der mitgelieferten Konfiguration ist:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/user-prompt-submit-jetbrains-selection.mjs\"",
"statusMessage": "Loading JetBrains selection"
}
]
}
]
}
}Dieser Hook liest bei jedem UserPromptSubmit die lokale Statusdatei:
Wenn nur eine Datei ausgewählt ist, wird Codex mitgeteilt, „welche Datei aktuell ist“
Wenn ein Codebereich ausgewählt ist, wird Codex „aktuelle Datei + Zeilennummer“ mitgeteilt
Wenn kein JetBrains-Kontext vorhanden ist oder der Status abgelaufen ist, wird nichts injiziert
Es wird kein Codetext injiziert, nur ein Positionsverweis.
4.3 Alte Konfigurationen bereinigen
Wenn Sie zuvor die alte Lösung verwendet haben, löschen Sie bitte die folgenden zwei Dinge:
Lokale MCP-Konfiguration löschen
codex mcp remove jetbrains-selectionLöschen Sie solche Inhalte aus Ihren eigenen globalen Prompts
每次用户请求时,先调用 MCP 工具 jetbrains-selection.jetbrains_get_selection 获取 JetBrains 当前选区Dieser Schritt ist zwingend erforderlich, da das Modell sonst möglicherweise weiterhin versucht, ein nicht mehr existierendes MCP-Tool aufzurufen.
4.4 Was der Hook tatsächlich injiziert
Wenn nur eine Datei ausgewählt ist, wird etwa Folgendes injiziert:
JetBrains 当前选中文件:/path/to/file.ts
这只是文件指引,没有附带文件内容。
如果本轮问题和这个文件相关,请先自行读取该文件;如果无关,请忽略这条上下文。Wenn Code-Zeilennummern ausgewählt sind, wird etwa Folgendes injiziert:
JetBrains 当前选中位置:/path/to/file.ts:120-146
这只是位置指引,没有附带代码内容。
如果本轮问题和这个位置相关,请先自行读取对应文件和行号;如果无关,请忽略这条上下文。Die Standardgültigkeitsdauer des Status beträgt 20s. Während das HUD läuft, wird der Status alle 5s aktualisiert; wenn das HUD beendet wird, hört der Hook schnell auf, den alten Status zu injizieren. Sie können diese Zeit auch über die Umgebungsvariable CODEX_JB_HOOK_MAX_AGE_MS anpassen.
5. Warum die lokale MCP-Lösung nicht mehr beibehalten wird
Die Probleme der alten Lösung waren hauptsächlich:
Erforderte die zusätzliche Ausführung von
codex mcp add, was den Installations- und Wartungsaufwand erhöhteDas Modell verließ sich oft auf globale Prompts, um „in jeder Runde zuerst ein MCP aufzurufen“, selbst wenn die Frage nichts mit der JetBrains-Auswahl zu tun hatte
Ob eine Auswahl relevant ist, sollte von der aktuellen Frage abhängen; die Platzierung in globalen Prompts machte das Verhalten zu mechanisch
Der lokale MCP-Server war nur eine Zwischenschicht, die eigentlich mit dem Claude Code JetBrains-Plugin verbunden werden musste; diese Schicht separat beizubehalten, bot wenig Nutzen bei höherer Komplexität
Alte Konfigurationen waren schwer vollständig zu bereinigen, was nach der Migration leicht zu ungültigen Tool-Namen oder alten Prompts führte
Nach der Umstellung auf HUD + Hooks sind die Vorteile direkter:
Der lokale Status wird nur beim Senden einer Nachricht gelesen, kein zusätzlicher MCP-Aufruf pro Runde
Der injizierte Inhalt enthält nur Dateipfade oder Zeilennummern, die Informationsmenge ist sauberer, und das Modell entscheidet selbst, ob es die Datei lesen muss
Statusdateien sind nach Projektstammverzeichnis isoliert, jedes Projekt schreibt seine eigene
.codex/jetbrains-selection-state.jsonDas HUD aktualisiert den Heartbeat kontinuierlich, solange es aktiv ist; nach dem Stoppen des HUD läuft der alte Status nach Ablauf der Zeit automatisch ab
Der Integrationspfad ist einheitlicher, Benutzer müssen nur HUD und Hooks warten, keine MCP-Konfiguration mehr
6. Wie dieses System jetzt funktioniert
Die Datenkette sieht so aus:
Das offizielle Claude Code JetBrains-Plugin macht lokale Verbindungsinformationen und Auswahlereignisse verfügbar
Das HUD gleicht das richtige JetBrains-Projektfenster basierend auf dem aktuellen Arbeitsverzeichnis ab
Nachdem das HUD eine Auswahländerung erhalten hat, schreibt es Dateipfad, Zeilennummer und Heartbeat-Zeit in die
.codex/jetbrains-selection-state.jsondes aktuellen ProjektsDer
UserPromptSubmit-Hook liest diesen Status, wenn Sie eine Nachricht sendenWenn der Status gültig ist, wird ein leichter Hinweis auf „aktuelle Datei“ oder „aktuelle Datei + Zeilennummer“ in Codex injiziert
In dieser Kette gibt es keinen lokalen MCP-Server und keine zusätzlichen globalen Prompts erforderlich.
7. Überprüfung
Nach Abschluss der oben genannten Schritte:
Öffnen Sie die JetBrains-IDE
Starten Sie
codexWenn Sie das HUD zum Starten verwendet haben, synchronisiert das HUD den Hook-Status automatisch
Kehren Sie zur JetBrains-IDE zurück, in der das offizielle Claude Code-Plugin installiert ist, und wählen Sie eine Datei oder einen Codeabschnitt aus
Bestätigen Sie, dass das HUD die aktuelle Datei und Zeilennummer anzeigt
Stellen Sie in Codex eine normale Frage
Wenn das HUD nicht aktualisiert wird, ist das sicherste Vorgehen:
Zurück in die IDE gehen und die Datei erneut anklicken
Oder die Auswahl erneut ziehen
Unter normalen Umständen:
Wenn nur eine Datei ausgewählt ist, erhält Codex einen Dateipfad-Hinweis
Wenn ein Codebereich ausgewählt ist, erhält Codex einen Dateipfad- und Zeilennummern-Hinweis
Wenn kein JetBrains-Kontext vorhanden ist, werden keine JetBrains-Hinweise injiziert
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/NealZhi/codex-jetbrains-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server