diff --git a/nanobot/webui/mcp_presets_api.py b/nanobot/webui/mcp_presets_api.py index 19260abcc..35054f312 100644 --- a/nanobot/webui/mcp_presets_api.py +++ b/nanobot/webui/mcp_presets_api.py @@ -962,7 +962,7 @@ def mcp_presets_payload( plugin_rows = [ _agent_plugin_payload(state) for state in discover_agent_plugin_states(config.workspace_path) - if state.mcp_servers and f"plugin-{state.plugin.name}" not in existing_names + if f"plugin-{state.plugin.name}" not in existing_names ] payload: dict[str, Any] = { "presets": [*preset_rows, *custom_rows, *plugin_rows], @@ -1587,7 +1587,6 @@ async def mcp_presets_settings_action( if ( name not in plugin_config.tools.mcp_servers and plugin_state is not None - and plugin_state.mcp_servers ): if action not in {"enable", "disable"}: raise McpPresetError("Agent Plugins support enable and disable actions only") diff --git a/tests/webui/test_mcp_presets_api.py b/tests/webui/test_mcp_presets_api.py index 1316434bc..c58c9497a 100644 --- a/tests/webui/test_mcp_presets_api.py +++ b/tests/webui/test_mcp_presets_api.py @@ -150,6 +150,9 @@ def test_agent_plugin_reuses_mcp_catalog_and_runtime_action( with pytest.raises(McpPresetError, match="enable and disable"): asyncio.run(plugin_action("remove")) + (load_config().workspace_path / "plugins" / "desktop" / "mcp.json").unlink() + assert any(item["name"] == "plugin-desktop" for item in mcp_presets_payload()["presets"]) + config_path = tmp_path / "config.json" config = json.loads(config_path.read_text(encoding="utf-8")) config["tools"] = {