[BUG] Plugin-bundled MCP servers (.mcp.json) never appear in claude mcp list, regardless of install scope

Status Open
Reported on v2.1.212
Maintainer reply None cached
Activity 1 comment · opened Jul 17, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

A plugin that bundles an MCP server via a .mcp.json file at its own root (not via an interactive /plugin install prompt - the file ships as part of the plugin package itself) never gets its MCP server registered by the runtime, regardless of install scope (user or project).

  • claude plugin list correctly shows the plugin as installed and enabled.
  • claude mcp list never lists the plugin's bundled server - only servers from the top-level ~/.claude.json or a project's own .mcp.json show up.
  • No error, warning, or log line indicates the plugin's MCP server was found, attempted, skipped, or blocked.
  • This reproduces with enableAllProjectMcpServers: true and the server's name already present in the project's enabledMcpjsonServers allowlist - i.e. it's pre-approved and still never loads.
  • Unlike #75344, no managed-settings.json with allowedMcpServers is present on the machine (ruling out that specific trigger), and no ~/.claude/.mcp.json file is created either - so this may be a distinct code path from both #75344 and #32882.

What Should Happen?

A plugin's bundled .mcp.json mcpServers entries should be loaded into the active MCP server list at startup (or on /reload-plugins), the same way project-level .mcp.json and user-level ~/.claude.json entries are, and should appear in claude mcp list.

Error Messages/Logs

Steps to Reproduce

  1. Create (or install) a plugin with a .mcp.json at its root, e.g.:

``json
{
"mcpServers": {
"example-server": {
"command": "npx",
"args": ["-y", "some-mcp-package@latest"],
"env": { "SOME_API_KEY": "${SOME_API_KEY}" }
}
}
}
``

  1. Enable the plugin at user scope (enabledPlugins in ~/.claude/settings.json).
  2. Confirm the underlying command runs fine standalone (npx -y some-mcp-package@latest starts without error).
  3. Start a new Claude Code session (or restart an existing one).
  4. Run claude plugin list - plugin shows enabled.
  5. Run claude mcp list - the plugin's server is absent; only .mcp.json/~/.claude.json-sourced servers appear.

Verified: manually adding the identical server via claude mcp add --scope user example-server -e SOME_API_KEY=... -- npx -y some-mcp-package@latest immediately makes it appear in claude mcp list and connect successfully - confirming the server definition itself is valid; only the plugin-sourced loading path is broken.

Claude Model

Sonnet (default)

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.212 (latest at time of report)

Platform

Other

Operating System

macOS

Terminal/Shell

iTerm2

Additional Information

Likely related to #75344 ("Plugin-provided MCP servers never registered - written to wrong config file") and #32882 ("Plugin-bundled MCP servers silently ignored when allowedMcpServers is configured", closed as not-planned). This report differs from both: no managed-settings.json/allowedMcpServers involved (rules out #32882's trigger), and no ~/.claude/.mcp.json file is ever created on this machine (rules out #75344's exact described file-path bug) - yet the end symptom (plugin MCP servers invisible to claude mcp list, any scope) is identical. This suggests either a third distinct cause, or that #75344's "wrong file" theory doesn't cover all cases of this same user-visible bug.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗