AX-1934 - Auto-deliver JFrog skills and JFrog MCP to Junie for JetBrains IDEs - #4
Merged
Merged
Conversation
- JfrogToolset: add required @McpTool/@McpDescription annotations so the three tools actually register with the IDE MCP server (bare suspend funs are ignored in 2025.2+; confirmed against bundled mcpserver.jar). - build.gradle.kts: widen untilBuild 252.* -> 262.* so the plugin installs in current 2026.2 (build 262) IDEs. - README: document the one-time "Auto-Configure Junie" step and router-only behavior; trim one-time Marketplace setup from the publishing section. - jfrog-junie.xml: correct the comment to reflect validated 262 behavior (Junie must be auto-configured; tools default to router-only). Validated live on IntelliJ IDEA 2026.2 with Junie: tools install, register, and appear as mcp_idea_jfrog_* after Auto-Configure. Co-authored-by: Cursor <cursoragent@cursor.com>
Ship the JFrog skills bundle and a JFrog (remote) MCP server entry the way the Cursor/Claude/Codex plugins do, but via plugin code since a compiled JetBrains plugin can't drop files into place directly. On IDE startup JfrogJunieDeployer materializes into the user's ~/.junie: - ~/.junie/skills/ the bundled jfrog-skills tree (version-marker guarded) - ~/.junie/mcp/mcp.json a merged "jfrog" entry, URL resolved from JFROG_PLATFORM_URL The skill tree is zipped into the plugin jar at build time; the MCP template (.junie/mcp/mcp.json) mirrors the cursor-plugin shape. Skills stay pinned at v0.20.0 for this first release; upgrading to the latest is a follow-up PR. Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the optional <depends config-file="jfrog-junie.xml">org.jetbrains.junie plus the empty jfrog-junie.xml it loaded. It did nothing (delivery runs via the unconditional JfrogJunieDeployer startup activity; IDE-native tools via com.intellij.mcpServer), targeted an unconfirmed alias id, and was a plausible aggravator of a runIde-sandbox loader-constraint violation in Junie's matterhorn.core module. Document Junie's double-descriptor packaging and the "validate in a real IDE, not the sandbox" guidance in CONTRIBUTING.md. Co-authored-by: Cursor <cursoragent@cursor.com>
A GUI IDE launched from the Dock/Finder does not inherit the shell's JFROG_PLATFORM_URL, so the deployer wrote a literal <JFROG_PLATFORM_URL> placeholder and the jfrog MCP failed with "Cannot reach :443". Fall back to the default server URL in ~/.jfrog/jfrog-cli.conf.v* (read directly, since the jf CLI may not be on the IDE's PATH) before writing a placeholder. Co-authored-by: Cursor <cursoragent@cursor.com>
Stop tracking the Kotlin compiler session dir (.kotlin/) accidentally added in the previous commit and add it to .gitignore. Co-authored-by: Cursor <cursoragent@cursor.com>
YoniMelki
reviewed
Aug 18, 2026
YoniMelki
requested changes
Aug 18, 2026
YoniMelki
approved these changes
Aug 19, 2026
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.
Delivers the JFrog Agent Skills bundle (jfrog-skills v0.20.0) and the JFrog (remote) MCP server to Junie automatically on IDE startup: JfrogJunieDeployer unpacks skills into ~/.junie/skills/ and merges a jfrog entry into ~/.junie/mcp/mcp.json (host resolved from JFROG_PLATFORM_URL, falling back to the jf CLI config). Adds Marketplace publishing tooling (signing + publishing + workflow_dispatch workflow), sets the compliant name JFrog for Coding Agents, and drops the until-build cap for forward compatibility. Trims the initial scaffold to keep this first release focused — removes the unused native IDE-MCP tool stubs, the manual configure action, and the unused kotlinx-serialization setup (standardizing on the IDE-provided Gson). Verified: buildPlugin, validator, and verifyPlugin (Compatible, dynamic) all pass.
Why those were removed
JfrogToolset.kt + extension + com.intellij.mcpServer: these contributed native stub JFrog tools (Artifactory search, Xray scan, AI Catalog lookup) into the IDE's built-in MCP server. They had no real backend, and they forced a hard dependency on the com.intellij.mcpServer bundled plugin (narrower compatibility). This release ships the real JFrog remote MCP (OAuth) via ~/.junie/mcp/mcp.json, which supersedes the stubs. Native IDE-side MCP tools are a phase-2 item.
ConfigureJfrogMcpAction.kt + + : a manual Tools → "Configure JFrog MCP…" fallback (copied config to clipboard, opened settings). Once JfrogJunieDeployer writes ~/.junie/mcp/mcp.json automatically on startup, the manual action and its notification group are redundant.
jfrog-junie.xml + <depends optional="true" … org.jetbrains.junie>: an optional dependency on Junie's plugin id we could never confirm against a real build, pointing at an empty config file. An unverified id risks classloader problems for zero benefit.