From 28289057314a8aa997513fe5dae91ccf4c2f864f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Harnes?= Date: Wed, 21 Jan 2026 22:26:44 +0100 Subject: [PATCH 1/2] fix: exclude tools from MCP servers requiring authorization --- src/components/tool-select-dropdown.tsx | 6 ++++-- src/lib/ai/mcp/create-mcp-clients-manager.ts | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/tool-select-dropdown.tsx b/src/components/tool-select-dropdown.tsx index 44f0ee2b9..0448402e7 100644 --- a/src/components/tool-select-dropdown.tsx +++ b/src/components/tool-select-dropdown.tsx @@ -155,10 +155,12 @@ export function ToolSelectDropdown({ const defaultTools = Object.values(AppDefaultToolkit) .filter((t) => allowedAppDefaultToolkit?.includes(t)) .map((t) => translate[t]); - const mcpIds = mcpList.map((v) => v.id); + const connectedMcpIds = mcpList + .filter((v) => v.status === "connected") + .map((v) => v.id); const mcpTools = Object.values( objectFlow(allowedMcpServers ?? {}).filter((_, id) => - mcpIds.includes(id), + connectedMcpIds.includes(id), ), ) .map((v) => v.tools) diff --git a/src/lib/ai/mcp/create-mcp-clients-manager.ts b/src/lib/ai/mcp/create-mcp-clients-manager.ts index a15667240..244112b4a 100644 --- a/src/lib/ai/mcp/create-mcp-clients-manager.ts +++ b/src/lib/ai/mcp/create-mcp-clients-manager.ts @@ -113,6 +113,7 @@ export class MCPClientsManager { await this.waitInitialized(); return Array.from(this.clients.entries()).reduce( (acc, [id, client]) => { + if (client.client?.status !== "connected") return acc; if (!client.client?.toolInfo?.length) return acc; const clientName = client.name; return { From 6a830dc7db1d15a46ee9ba0aebdf481ef121bcc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Harnes?= Date: Mon, 9 Feb 2026 18:30:01 +0100 Subject: [PATCH 2/2] fix: check for authorized servers --- src/components/tool-select-dropdown.tsx | 6 +++--- src/lib/ai/mcp/create-mcp-clients-manager.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/tool-select-dropdown.tsx b/src/components/tool-select-dropdown.tsx index 0448402e7..8c79f5695 100644 --- a/src/components/tool-select-dropdown.tsx +++ b/src/components/tool-select-dropdown.tsx @@ -155,12 +155,12 @@ export function ToolSelectDropdown({ const defaultTools = Object.values(AppDefaultToolkit) .filter((t) => allowedAppDefaultToolkit?.includes(t)) .map((t) => translate[t]); - const connectedMcpIds = mcpList - .filter((v) => v.status === "connected") + const availableMcpIds = mcpList + .filter((v) => v.status !== "authorizing") .map((v) => v.id); const mcpTools = Object.values( objectFlow(allowedMcpServers ?? {}).filter((_, id) => - connectedMcpIds.includes(id), + availableMcpIds.includes(id), ), ) .map((v) => v.tools) diff --git a/src/lib/ai/mcp/create-mcp-clients-manager.ts b/src/lib/ai/mcp/create-mcp-clients-manager.ts index 244112b4a..bb7dbc87b 100644 --- a/src/lib/ai/mcp/create-mcp-clients-manager.ts +++ b/src/lib/ai/mcp/create-mcp-clients-manager.ts @@ -113,7 +113,7 @@ export class MCPClientsManager { await this.waitInitialized(); return Array.from(this.clients.entries()).reduce( (acc, [id, client]) => { - if (client.client?.status !== "connected") return acc; + if (client.client?.status === "authorizing") return acc; if (!client.client?.toolInfo?.length) return acc; const clientName = client.name; return {