[FEATURE] Allow customizing MCP server args for plugin-installed MCPs

Resolved 💬 3 comments Opened Apr 15, 2026 by HappyFace2234 Closed Apr 19, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

When an MCP server is installed via the plugin system, its startup arguments are defined in .claude-plugin/plugin.json inside the marketplace/cache
directories. There is currently no way for users to customize these arguments without manually editing plugin.json, which gets overwritten on plugin
updates.

The .mcp.json file — the documented way to configure MCP servers — has no effect on plugin-installed MCPs. There is no indication of this anywhere, and
no error or warning is shown. Users naturally try .mcp.json first, and when it silently does nothing, it leads to hours of confused debugging.

I needed to add --autoConnect to chrome-devtools-mcp so it would connect to my existing browser session. After extensive debugging, I discovered:

  1. .mcp.json configuration is completely ignored for plugin-installed MCPs
  2. The plugin system reads from plugin.json in two separate locations (marketplace source + cache copy)
  3. Both files must be manually edited, and both will be overwritten on plugin update

Proposed Solution

Option A: Support arg/env overrides in enabledPlugins (Preferred)

Allow users to append or override MCP server arguments in the project-level .claude/settings.json:

```jsonc
{
"enabledPlugins": {
"chrome-devtools-mcp@chrome-devtools-plugins": {
"enabled": true,
"extraArgs": ["--autoConnect"],
"extraEnv": { "PORT": "9222" }
}
}
}

  • extraArgs: appended to the args defined in plugin.json
  • extraEnv: merged into the env defined in plugin.json
  • Non-breaking: existing "pluginName": true shorthand still works

Option B: Let .mcp.json merge with plugin-defined MCPs

If a plugin registers an MCP server named chrome-devtools and the user also defines chrome-devtools in .mcp.json, merge the user's config on top of the
plugin's config. User-defined args/env take precedence.

Option C: Add a warning when .mcp.json conflicts with a plugin

At minimum, if a user defines an MCP server in .mcp.json that shares the same name as a plugin-installed MCP, show a warning:

⚠ MCP server "chrome-devtools" is also defined by plugin
"chrome-devtools-mcp@chrome-devtools-plugins".
The plugin config takes precedence.

This alone would have saved me hours of debugging.

Alternative Solutions

Alternative Solutions

  1. Manually edit plugin.json — This is what I currently do. I edit both ~/.claude/plugins/marketplaces/<marketplace>/.claude-plugin/plugin.json and

~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/.claude-plugin/plugin.json. The downside is that plugin updates overwrite these changes silently.

  1. Uninstall the plugin and configure via .mcp.json instead — This works for the MCP server itself, but loses the plugin's bundled skills, guides, and agent

rules that are only available through the plugin system.

Neither alternative is satisfactory.

Priority

High - Significant impact on productivity

Feature Category

MCP server integration

Use Case Example

Use Case Example

  1. I install chrome-devtools-mcp via the plugin system to get its bundled skills (a11y-debugging, troubleshooting, performance analysis, etc.)
  2. I open Chrome with remote debugging enabled on my machine
  3. I want chrome-devtools-mcp to connect to my existing browser session using --autoConnect, instead of launching a new browser
  4. I add --autoConnect to my project's .mcp.json → Does not work. No error, no warning.
  5. After hours of debugging, I discover .mcp.json is not read for plugin-installed MCPs
  6. I manually edit two plugin.json files deep inside ~/.claude/plugins/ → Works, but fragile
  7. Next plugin update → my changes are gone, back to step 4

Additional Context

## Additional Context

  • Environment: Claude Code on Windows 11, plugin chrome-devtools-mcp@chrome-devtools-plugins v0.21.0
  • Root cause: The plugin system and .mcp.json are completely independent config paths. Plugin-installed MCPs are launched solely from plugin.json, and

.mcp.json entries for the same server name are silently ignored.

  • Files involved:
  • ~/.claude/plugins/marketplaces/<marketplace>/.claude-plugin/plugin.json (marketplace source definition)
  • ~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/.claude-plugin/plugin.json (cached copy used at runtime)
  • ~/.claude/plugins/installed_plugins.json (installation registry)
  • {project}/.claude/settings.json → enabledPlugins (project-level enablement, no arg override support)
  • This issue likely affects all plugin-installed MCPs where users need custom arguments, not just chrome-devtools-mcp.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗