Marketplace Verifier: optional com.intellij.mcpServer is Critical on 2024.2–2025.1 but only a warning on 2024.1

SSH Workbench 2026.3.0 declares MCP as an optional plugin dependency in plugin.xml:

depends optional="true" config-file="mcp.xml"  ->  com.intellij.mcpServer

com.intellij.mcpServer exists only in 2025.2+. On older IDEs the optional descriptor is not loaded, so SSHWorkbenchToolset (which implements com.intellij.mcpserver.McpToolset) is never registered.

Marketplace Verifier is inconsistent for the same optional dependency and the same bytecode:

| Target IDE | Has MCP Server? | Verdict |

|—|—|—|

| IU-241.19416.15 (2024.1.7) | No | Compatible – warning: optional plugin com.intellij.mcpServer could not be resolved |

| IU-242.26775.15 (2024.2.6) | No | Critical – Package com.intellij.mcpserver is not found (McpToolset referenced from SSHWorkbenchToolset) |

| IU-243.28141.41 (2024.3.7.1) | No | Critical – same package-not-found |

| IU-251.29188.72 (2025.1.7.2) | No | Critical – same package-not-found |

2024.1 treats the missing optional plugin as a warning. 2024.2-2025.1 treat the class reference as binary incompatibility, even though those IDEs also do not ship MCP Server.

This looks like the same class of false positive as Plugin verifier :Package 'com.jetbrains.python' is not found

Optional-dependency class refs should stay a warning on every IDE that does not ship that plugin, not Critical on a subset of them.

The plugin is not actually binary-incompatible with 2024.2-2025.1: MCP tools are simply omitted when the optional plugin is absent.

I’ve had this issue in the past with v1 style optional dependencies. Typically, a note explaining the false positives to the marketplace team in response to the verification failure email they send you will suffice to unblock your submission.

I replied to the verification email they sent, but I still haven’t received any response after 12 days.

The best option to truly resolve the issue if it’s an option for you is to use plugin model v2 and include your MCP integration as a content module.

Here’s a basic example example that matches how my own plugin includes an optional MCP dependency in production today:

plugin.xml:

<idea-plugin>
  ...
  <content>
    <!-- implicit optional content module dependency -->
    <module name="my.demo.mcp"/>
  </content>
  ...
</idea-plugin>

mcp.xml:

<idea-plugin>
    <dependencies>
        <!-- if the mcpServer dependency is missing,
             this content module won't attempt to load -->
        <plugin id="com.intellij.mcpServer"/>
        <!-- if you care about remote development, these backend deps will ensure 
             the module only attempts to load on the backend -->
        <module name="intellij.platform.backend"/>
        <module name="intellij.platform.kernel.backend"/>
    </dependencies>

    <extensions defaultExtensionNs="com.intellij.mcpServer">
        <mcpToolset
                implementation="my.demo.DemoMcpToolset"/>
    </extensions>
</idea-plugin>

EDIT: This solution is probably not available to you if you’re supporting 2024, so getting attention from someone on the marketplace team is your best bet.

Thanks @dseptimus — we will go with the v2 optional content module.

The verification-email route already sat unanswered for 12 days, so we would rather fix packaging than keep asking Marketplace to ignore the same Critical on every upload.

SSHWorkbenchToolset is moving into an optional module (depends on com.intellij.mcpServer, loading=optional) so the main plugin jar no longer references com.intellij.mcpserver. Older IDEs keep working without MCP; 2025.2+ should load the tools when MCP Server is present.

Appreciate the production example — that is the structure we are following.

Hey,
Sorry for your unanswered e-mail. Pinging JetBrains Forum - as you did - for broad technical questions - might sometimes be quicker or an alternative way to see what is going on.

We will investigate.

Btw, did you pull down the 2026.3.0 from the JetBrains Marketplace to rework?

I re-uploaded it using a modular approach, but I found that the issue of false positives on certain versions still persists.

I also tested using version 2025.1.7.2, and the plugin is running correctly.