loading…
Search for a command to run...
loading…
Enables Codex to retrieve the currently selected file, line numbers, and code snippets from JetBrains IDEs. It leverages the official Claude Code plugin to prov
Enables Codex to retrieve the currently selected file, line numbers, and code snippets from JetBrains IDEs. It leverages the official Claude Code plugin to provide real-time IDE context to the AI.
项目背景:这个适配方案是基于对
Claude Code v2.1.88泄露源码的分析做出来的,目标是让Codex也具备类似Claude Code的能力,能够感知 JetBrains 系列 IDE 当前选中的文件、行号和代码范围。Author:
nealzhi
本文档只保留一条接入路径:HUD + hooks。
本仓库已经移除了旧的“本地 MCP server + 全局提示词”方案,不再推荐也不再提供那套接法。

先满足下面两个条件:
IntelliJ IDEA、PyCharm、WebStorm、GoLand、Android Studio~/.claude/ide/*.lock 和对应的本地接口,Codex 也就无法读取当前选中的文件和代码范围。在仓库根目录执行:
cd codex-jetbrains-mcp
npm install
brew install tmux
说明:
npm install:安装 HUD 和 hooks 依赖tmux:HUD 依赖在仓库根目录执行:
chmod +x codex-jetbrains-mcp/bin/codex-jetbrains-hud
如果你希望以后直接运行 codex 就自动带 HUD,请把下面这一行加到 ~/.zshrc 或 ~/.bashrc:
alias codex='$(pwd)/codex-jetbrains-mcp/bin/codex-jetbrains-hud'
重新加载 shell:
source ~/.zshrc
如果你用的是 bash,就执行:
source ~/.bashrc
如果你在 macOS 自带终端或 Warp 终端里发现鼠标滚轮无法滚动 Codex 窗口,可以执行下面这条命令开启 tmux 鼠标支持:
tmux set -g mouse on
HUD 启动后会显示一行:
JetBrains PyCharm 已连接 | test_main.py:2140-2147 (8 lines)
这套方案的核心就是:
codex 时同时启动 HUD.codex/jetbrains-selection-state.jsonUserPromptSubmit hook 在你发消息时读取这份状态在仓库根目录执行:
chmod +x codex-jetbrains-mcp/bin/codex-jetbrains-hud
alias codex='$(pwd)/codex-jetbrains-mcp/bin/codex-jetbrains-hud'
之后你正常执行 codex 即可。
现在 codex-jetbrains-hud 除了显示 HUD,还会自动同步 hook 所需状态。这是唯一推荐路径,不需要也不再提供单独的同步进程。
状态文件会写到:
.codex/jetbrains-selection-state.json
仓库里已经带了:
.codex/config.toml.codex/hooks/selection-state.mjs.codex/hooks.json.codex/hooks/user-prompt-submit-jetbrains-selection.mjs接入方式分两种:
codex
Codex 会直接读取仓库里的 .codex/config.toml 和 .codex/hooks.json,不需要你再额外指定路径。~/.codex/hooks.json
不要覆盖它,把仓库里这个 UserPromptSubmit 配置合并进去就行。
如果你要复制到 ~/.codex/hooks/,请把整个 .codex/hooks/ 目录一起复制,不要只拷贝入口文件。其中 .codex/config.toml 的作用是打开官方要求的 hooks 功能开关:
[features]
codex_hooks = true
按官方文档,hooks 默认是关闭的,必须在 config.toml 里开启,或者启动时传 codex --enable codex_hooks。另外,Codex 的配置层会从 ~/.codex/config.toml 和仓库内 .codex/config.toml 一起读取;如果项目没有被标记为 trusted,仓库级 .codex/config.toml 不会生效。
仓库自带的配置内容就是:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/user-prompt-submit-jetbrains-selection.mjs\"",
"statusMessage": "Loading JetBrains selection"
}
]
}
]
}
}
这个 hook 会在每次 UserPromptSubmit 时读取本地状态文件:
它不会注入代码文本,只做位置指引。
如果你以前接过旧版方案,请把下面两样删掉:
codex mcp remove jetbrains-selection
每次用户请求时,先调用 MCP 工具 jetbrains-selection.jetbrains_get_selection 获取 JetBrains 当前选区
这一步一定要做,不然模型还是可能沿着旧思路去调用一个已经不存在的 MCP 工具。
只选中文件时,注入类似:
JetBrains 当前选中文件:/path/to/file.ts
这只是文件指引,没有附带文件内容。
如果本轮问题和这个文件相关,请先自行读取该文件;如果无关,请忽略这条上下文。
选中了代码行号时,注入类似:
JetBrains 当前选中位置:/path/to/file.ts:120-146
这只是位置指引,没有附带代码内容。
如果本轮问题和这个位置相关,请先自行读取对应文件和行号;如果无关,请忽略这条上下文。
默认状态有效期是 20s。HUD 运行期间会每 5s 刷新一次状态;如果 HUD 退出,hook 很快就会停止注入旧状态。你也可以通过环境变量 CODEX_JB_HOOK_MAX_AGE_MS 调整这个时间。
旧方案的问题主要有这几类:
codex mcp add,多一层安装和维护成本改成 HUD + hooks 之后,收益会更直接:
.codex/jetbrains-selection-state.json数据链路是这样的:
.codex/jetbrains-selection-state.jsonUserPromptSubmit hook 在你发消息时读取这份状态这条链路里没有本地 MCP server,也不需要额外的全局提示词。
完成上面步骤后:
codex如果 HUD 没刷新,最稳的做法是:
正常情况下:
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"codex-jetbrains-mcp": {
"command": "npx",
"args": []
}
}
}PRs, issues, code search, CI status
Database, auth and storage
Reference / test server with prompts, resources, and tools.
Secure file operations with configurable access controls.