File: src/services/mcp/config.py:577-581
TODO(Phase 7 follow-up): extend ``McpPluginWrapper`` with a
``server_config: McpServerConfig`` field, set at registration time,
and surface it here. Until that lands, plugin-provided MCP servers
cannot participate in the per-name lookup or the merge.
The plugin-scope loader currently returns {} unconditionally, so get_all_mcp_configs() and get_mcp_config_by_name() never see plugin-provided servers.
Impact: Any MCP server shipped by a plugin is invisible to the config aggregation layer — it cannot be looked up by name, does not appear in /mcp listings driven by the merge, and cannot be overridden/filtered by scope policy the way user/project/enterprise servers are.
Fix sketch: Add server_config: McpServerConfig to McpPluginWrapper, populate it at plugin registration, and have the plugin-scope loader return {name: ScopedMcpServerConfig(config=wrapper.server_config, scope="plugin")} so it flows through filter_mcp_servers_by_policy like every other scope.
File:
src/services/mcp/config.py:577-581The plugin-scope loader currently returns
{}unconditionally, soget_all_mcp_configs()andget_mcp_config_by_name()never see plugin-provided servers.Impact: Any MCP server shipped by a plugin is invisible to the config aggregation layer — it cannot be looked up by name, does not appear in
/mcplistings driven by the merge, and cannot be overridden/filtered by scope policy the way user/project/enterprise servers are.Fix sketch: Add
server_config: McpServerConfigtoMcpPluginWrapper, populate it at plugin registration, and have the plugin-scope loader return{name: ScopedMcpServerConfig(config=wrapper.server_config, scope="plugin")}so it flows throughfilter_mcp_servers_by_policylike every other scope.