[BUG] Plugins Installed UI nests only the first bundled MCP server (still reproducible in 2.1.175)

Resolved 💬 3 comments Opened Jun 12, 2026 by JiangHe12 Closed Jun 17, 2026

Preflight Checklist

  • [x] I searched existing open issues and found no active report for this bug.
  • [x] This is a single bug report.
  • [x] I am using Claude Code 2.1.175, installed with the official Windows native PowerShell installer.

What's Wrong?

When a plugin bundles multiple MCP servers through one .mcp.json, the Plugins > Installed TUI renders only the first MCP server as a child of the plugin. Every later MCP server is rendered at the top level, visually implying that it is an independent user MCP.

This remains reproducible in Claude Code 2.1.175. The earlier report #55955 was closed automatically for inactivity with a request to open a new issue if the problem remained relevant.

The underlying ownership is correct. Both claude plugin details and claude mcp list identify both servers as components of the same plugin, so this appears to be a tree-rendering/indentation bug only.

Actual TUI layout:

smart-search Plugin · smart-search · enabled
└ brave-search MCP · connected
tavily-search MCP · connected
chrome-devtools MCP · connected

Because tavily-search has the same indentation as chrome-devtools, it appears unrelated to smart-search even though it belongs to the plugin.

What Should Happen?

All MCP servers declared by the plugin should render at the same child indentation level:

smart-search Plugin · smart-search · enabled
├ brave-search MCP · connected
└ tavily-search MCP · connected
chrome-devtools MCP · connected

At minimum, every bundled MCP row should retain the plugin-child indentation, regardless of which branch glyph is used.

Error Messages/Logs

$ claude --version
2.1.175 (Claude Code)

$ claude mcp list
plugin:smart-search:brave-search: npx -y @brave/brave-search-mcp-server --transport stdio - Connected
plugin:smart-search:tavily-search: npx -y tavily-mcp - Connected
chrome-devtools: cmd /c npx -y chrome-devtools-mcp@latest --auto-connect - Connected

$ claude plugin details smart-search@smart-search
Component inventory
  MCP servers (2)  brave-search, tavily-search

Steps to Reproduce

  1. Create a plugin whose .claude-plugin/plugin.json references an MCP configuration:
{
  "name": "smart-search",
  "mcpServers": "./.mcp.json"
}
  1. Put at least two servers in .mcp.json:
{
  "mcpServers": {
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@brave/brave-search-mcp-server", "--transport", "stdio"]
    },
    "tavily-search": {
      "command": "npx",
      "args": ["-y", "tavily-mcp"]
    }
  }
}
  1. Install and enable the plugin.
  2. Open /plugin and select the Installed tab.
  3. Expand or inspect the plugin entry.
  4. Observe that only the first MCP row is visually nested beneath the plugin.
  5. Run claude mcp list or claude plugin details smart-search@smart-search and observe that both MCPs are correctly owned by the plugin.

Minimal public reproduction plugin: https://github.com/JiangHe12/smart-search

Claude Model

Not sure / Multiple models. The bug occurs before model interaction in the local plugin management TUI.

Is this a regression?

I don't know.

Last Working Version

Unknown.

Claude Code Version

2.1.175 (Claude Code)

Installation Method

Official Windows native installer, run from PowerShell:

irm https://claude.ai/install.ps1 | iex

Installed binary: C:\Users\12542\.local\bin\claude.exe (ProductVersion 2.1.175.0). This is not an npm installation.

Platform

Other (third-party Anthropic-compatible endpoint). This appears independent of API platform because it occurs in the local TUI.

Operating System

Windows 11 Home, version 10.0.26200, build 26200.

Terminal/Shell

PowerShell / Windows terminal environment.

Additional Information

  • Previous report: #55955
  • Previous report was labeled area:mcp, area:plugins, area:ui, and platform:windows.
  • It was closed by the stale bot on June 1, 2026, not because the bug was fixed.
  • Impact is visual but meaningful: the Installed screen communicates incorrect component ownership and can lead users to investigate nonexistent duplicate or user-level MCP registrations.

View original on GitHub ↗

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