From 536c6866e3958a39f3a7d7158d65626fdee1c9bc Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Thu, 29 Jan 2026 14:59:28 +0100 Subject: [PATCH] feat: Integrate with `llama-server` proxy + improve MCP Server Edit Form --- .../components/app/forms/KeyValuePairs.svelte | 12 +++--- .../mcp/McpServerCard/McpServerCard.svelte | 10 +++-- .../McpServerCardEditForm.svelte | 27 +++++++------ .../components/app/mcp/McpServerForm.svelte | 21 ++++++++++ .../app/mcp/McpServersSettings.svelte | 21 +++++++--- .../webui/src/lib/services/mcp.service.ts | 40 +++++++++++++++++-- .../server/webui/src/lib/stores/mcp.svelte.ts | 12 ++++-- tools/server/webui/src/lib/types/mcp.d.ts | 3 ++ tools/server/webui/src/lib/utils/mcp.ts | 3 +- tools/server/webui/vite.config.ts | 3 +- 10 files changed, 116 insertions(+), 36 deletions(-) diff --git a/tools/server/webui/src/lib/components/app/forms/KeyValuePairs.svelte b/tools/server/webui/src/lib/components/app/forms/KeyValuePairs.svelte index 23441a0962..ca3da02e56 100644 --- a/tools/server/webui/src/lib/components/app/forms/KeyValuePairs.svelte +++ b/tools/server/webui/src/lib/components/app/forms/KeyValuePairs.svelte @@ -1,10 +1,11 @@ -
+
{#if sectionLabel} @@ -70,7 +72,7 @@ {#if pairs.length > 0}
{#each pairs as pair, index (index)} -
+
removePair(index)} aria-label="Remove item" > - +
{/each} diff --git a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte index 47c0a26fa8..d3fce493a5 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCard.svelte @@ -67,7 +67,7 @@ async function startEditing() { isEditing = true; await tick(); - editFormRef?.setInitialValues(server.url, server.headers || ''); + editFormRef?.setInitialValues(server.url, server.headers || '', server.useProxy || false); } function cancelEditing() { @@ -78,15 +78,16 @@ } } - function saveEditing(url: string, headers: string) { + function saveEditing(url: string, headers: string, useProxy: boolean) { onUpdate({ url: url, - headers: headers || undefined + headers: headers || undefined, + useProxy: useProxy }); isEditing = false; if (server.enabled && url) { - setTimeout(() => mcpStore.runHealthCheck({ ...server, url }), 100); + setTimeout(() => mcpStore.runHealthCheck({ ...server, url, useProxy }), 100); } } @@ -101,6 +102,7 @@ bind:this={editFormRef} serverId={server.id} serverUrl={server.url} + serverUseProxy={server.useProxy} onSave={saveEditing} onCancel={cancelEditing} /> diff --git a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCardEditForm.svelte b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCardEditForm.svelte index df217767e2..cf378c6dbd 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCardEditForm.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpServerCard/McpServerCardEditForm.svelte @@ -1,19 +1,20 @@
-
-

Configure Server

- -
+

Configure Server

(editUrl = v)} onHeadersChange={(v) => (editHeaders = v)} + onUseProxyChange={(v) => (editUseProxy = v)} urlError={editUrl ? urlError : null} id={serverId} /> -
- + +
diff --git a/tools/server/webui/src/lib/components/app/mcp/McpServerForm.svelte b/tools/server/webui/src/lib/components/app/mcp/McpServerForm.svelte index 8e450e70f6..35fea59acd 100644 --- a/tools/server/webui/src/lib/components/app/mcp/McpServerForm.svelte +++ b/tools/server/webui/src/lib/components/app/mcp/McpServerForm.svelte @@ -1,5 +1,6 @@