claude-code
claude-code copied to clipboard
Bug: MCP servers incorrectly namespaced under plugin name after plugin installation
Bug Report: MCP servers incorrectly namespaced under plugin name
Summary
When installing a plugin that provides an MCP server, Claude Code incorrectly namespaces ALL MCP servers (from both project .mcp.json AND the plugin) under plugin:<plugin-name>:* instead of keeping them properly separated.
Environment
- Claude Code version: 2.0.74
- OS: macOS (Darwin 24.6.0)
- Plugin installed:
fal-aifromluminary-lane-toolsmarketplace
Steps to Reproduce
- Create a project with
.mcp.jsoncontaining multiple MCP servers:
{
"mcpServers": {
"playwright": { "command": "npx", "args": ["@playwright/mcp@latest"] },
"memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] },
"allpepper-memory-bank": { "command": "npx", "args": ["-y", "@allpepper/memory-bank-mcp"] }
}
}
- Add a marketplace and install a plugin that provides an MCP server:
/plugin marketplace add raveenb/fal-mcp-server
/plugin install fal-ai@luminary-lane-tools
-
Restart Claude Code
-
Run
/mcpto view MCP servers
Expected Behavior
MCP servers should be namespaced by their source:
# From .mcp.json (project config)
playwright ✓ connected
memory ✓ connected
allpepper-memory-bank ✓ connected
# From plugin
plugin:luminary-lane-tools:fal-ai ✓ connected
Actual Behavior
ALL MCP servers are incorrectly namespaced under plugin:fal-ai:*:
plugin:fal-ai:allpepper-memory-bank ✓ connected ← WRONG
plugin:fal-ai:fal-ai ✓ connected
plugin:fal-ai:fal-ai-docker ✗ failed ← WRONG
plugin:fal-ai:memory ✓ connected ← WRONG
plugin:fal-ai:playwright ✓ connected ← WRONG
Screenshots
[See attached screenshots showing /plugin list vs /mcp server list]
Impact
- Confusion: Users can't tell which servers come from plugins vs project config
-
Naming collision: If project has
fal-aiin.mcp.jsonAND user installsfal-aiplugin, both get same namespace - Debugging difficulty: Hard to identify source of MCP server issues
Additional Context
- The plugin's
plugin.jsoncorrectly defines only ONE MCP server (fal-ai) - The other servers (playwright, memory, allpepper-memory-bank) are defined in project's
.mcp.json - This suggests the namespacing logic is incorrectly associating all servers with the plugin
🤖 Generated with Claude Code