Repository navigation
feat(jetbrains): Blackbox for JetBrains IDEs (PhpStorm, IntelliJ IDEA, GoLand, …) - #2
Open
akash-aman wants to merge 3 commits into
Open
akash-aman wants to merge 3 commits into
akash-aman wants to merge 3 commits into
Conversation
…r platform A window side for every IntelliJ-based IDE (PhpStorm, IntelliJ IDEA, GoLand, PyCharm, ...), 2024.3 or later, speaking the same protocol as the VS Code extension and blackbox.nvim, so one MCP server sees all of them. - Each open project is a Blackbox window (id <pid>-<hash>); AI tools started in the IDE's terminal get BLACKBOX_WINDOW for their project. - All tools on XDebugger: line/function/exception breakpoints, run configurations started by name, steps, threads, frames, variables, evaluate, set variable, watches, output. Hit conditions and logpoints are applied by the plugin when such a breakpoint pauses. - Java: method breakpoints and caught/uncaught filters. PHP (PhpStorm): method and Xdebug exception breakpoints, and "Listen for PHP Debug Connections" as a launch configuration. - Ships the MCP server (bundled with esbuild) and installs ~/.blackbox/blackbox-mcp.js with the VS Code extension's rules; Tools | Blackbox: Copy MCP Config. - Windows: listens on TCP loopback with a token, which the MCP server now supports (tcp://127.0.0.1:<port>/<token>). - MCP server: an editor process serving several windows identifies the editor, not one of its windows. - Conformance suite runs against IntelliJ IDEA with a Java fixture (npm run test:jetbrains); CI and release workflow in jetbrains.yml.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #1 (it reuses
editors/conformance). Retarget tomainonce #1 is merged.Summary
A Blackbox window side for every IntelliJ-based IDE (2024.3+), built on the IDE's debugger platform (XDebugger). It speaks the same protocol as the VS Code extension and blackbox.nvim, so one MCP server lists JetBrains projects next to VS Code, Cursor, Antigravity and Neovim windows.
One window per open project. The id is
<pid>-<hash>. AI tools started in the IDE terminal getBLACKBOX_WINDOWfor their project.All 33 tools. Run configurations start by name in the debugger. Steps, threads, frames, variables, evaluate, set variable, watches and output all work.
Java: method breakpoints (
App.add) and caught/uncaught exception filters.PHP (PhpStorm):
Class::method);This uses PhpStorm's classes by name, since PhpStorm 2026 targets Java 25.
Ships the MCP server: an esbuild bundle from
editors/vscode. The plugin installs~/.blackbox/blackbox-mcp.jswith the same rules as the VS Code extension: newer versions only, one record per install. Users get Tools | Blackbox: Copy MCP Config.Windows: Node can't reach Java's Unix sockets there, so the plugin listens on TCP loopback with a token (
tcp://127.0.0.1:<port>/<token>).MCP server changes (
editors/vscode)callExtensionconnects totcp://windows and sends their token. TCP entries aren't dropped as stale.bundle:mcpscript (esbuild).release-notes.jstakesCHANGELOG=<file>.Testing
npm run test:jetbrains): the same suite as Neovim, through the real MCP server, against IntelliJ IDEA Community with a Java fixture. 7 passing, run 3 times locally. The stalled-start check is skipped, since run configurations can't stall like a debug adapter.Notes
.github/workflows/jetbrains.ymlruns:Releases are started by
jetbrains-v*tags and need theJETBRAINS_*secrets (see CONTRIBUTING). The first Marketplace upload must be done by hand.LocalTerminalCustomizeris deprecated in 2026.2 but still works. A follow-up can move to the new terminal API.