Plugin-bundled MCP servers (.mcp.json) silently ignored when allowedMcpServers is configured in managed-settings.json
Summary
When allowedMcpServers is configured in managed-settings.json, plugin-bundled MCP servers defined in a plugin's .mcp.json are completely silently ignored — they are never started, and there is no log message indicating they were blocked.
Steps to Reproduce
- Configure
allowedMcpServersin/Library/Application Support/ClaudeCode/managed-settings.json - Install a plugin that bundles an MCP server via
.mcp.json(e.g.,context7fromclaude-plugins-official) - Start Claude Code with
--debug
Expected Behavior
The plugin's MCP server should either:
- Start successfully if it matches an entry in
allowedMcpServers - Log a clear message that it was blocked by the allowlist
Actual Behavior
The plugin is recognized as enabled, but its .mcp.json is never processed. No MCP server is started. No log message indicates it was blocked. The debug log shows:
[DEBUG] Loading plugin context7 from source: "./external_plugins/context7"
[DEBUG] Found 1 plugins (1 enabled, 0 disabled)
[DEBUG] Checking plugin context7: skillsPath=none, skillsPaths=0 paths
[DEBUG] Total plugin skills loaded: 0
[DEBUG] Total plugin commands loaded: 0
Notice: no attempt to start or register the MCP server from .mcp.json.
Without allowedMcpServers, the server starts correctly:
[DEBUG] MCP server "plugin:context7:context7": Starting connection with timeout of 30000ms
[DEBUG] MCP server "plugin:context7:context7": Successfully connected...
Environment
- Claude Code version: 2.1.58
- macOS Darwin 25.3.0
- Plugin:
context7@claude-plugins-official
Workaround
Remove allowedMcpServers from managed-settings.json entirely (not acceptable for enterprise/managed environments).
Related
See also: companion issue — plugin MCP server names use colons which cannot be used in serverName allowlist entries.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗