autoscroll servers
frdel committed
Jun 4, 2025 at 19:15 UTC
0454b4af6f3926fcb1df37cc32203a6f66673923
2 files changed
+12
-7
python/api/mcp_servers_apply.py
+4
-3
@@ -15,10 +15,11 @@ class McpServersApply(ApiHandler):
15
# MCPConfig.update(mcp_servers) # done in settings automatically
16
set_settings_delta({"mcp_servers": "[]"}) # to force reinitialization
17
set_settings_delta({"mcp_servers": mcp_servers})
18
-
18
+
19
time.sleep(1) # wait at least a second
20
- MCPConfig.wait_for_lock() # wait until config lock is released
20
+ # MCPConfig.wait_for_lock() # wait until config lock is released
21
+ status = MCPConfig.get_instance().get_servers_status()
22
+ return {"success": True, "status": status}
23
24
except Exception as e:
25
return {"success": False, "error": str(e)}
24
- return {"success": True}
webui/components/settings/mcp/client/mcp-servers-store.js
+8
-4
@@ -72,7 +72,7 @@ const model = {
72
73
async startStatusCheck() {
74
this.statusCheck = true;
75
- const firstLoad = true;
75
+ let firstLoad = true;
76
77
while (this.statusCheck) {
78
await this._statusCheck();
@@ -101,11 +101,15 @@ const model = {
101
this.loading = true;
102
try {
103
scrollModal("mcp-servers-status");
104
- await API.callJsonApi("mcp_servers_apply", {
104
+ const resp = await API.callJsonApi("mcp_servers_apply", {
105
mcp_servers: this.getEditorValue(),
106
});
107
- // await sleep(5000); // just to prevent user from clicking apply multiple times
108
- // api now waits for config locks automatically
107
+ if (resp.success) {
108
+ this.servers = resp.status;
109
+ this.servers.sort((a, b) => a.name.localeCompare(b.name));
110
+ }
111
+ this.loading = false;
112
+ await sleep(100); // wait for ui and scroll
113
scrollModal("mcp-servers-status");
114
} catch (error) {
115
console.error("Failed to apply MCP servers:", error);