From 85e7e2cd97ab3b09a72870d5b338ad5c57d93061 Mon Sep 17 00:00:00 2001 From: joshua Date: Mon, 21 Sep 2026 09:09:55 +0000 Subject: [PATCH] fix(ui): build MCP catalog query options once Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../mcp-servers/_components/mcp_tools.tsx | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_tools.tsx b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_tools.tsx index 5178ba26079..55877f4be4d 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_tools.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/mcp_tools.tsx @@ -201,27 +201,28 @@ const MCPToolsViewer = ({ }, }); - const { - data: mcpPromptsResponse, - isLoading: isLoadingPrompts, - refetch: refetchPrompts, - } = useQuery({ - queryKey: ["mcpPrompts", serverId, passthroughHeaders, oauthToken], - queryFn: () => listMCPPrompts(accessToken ?? "", serverId, buildCustomHeaders()), + const catalogQueryOptions = (name: "mcpPrompts" | "mcpResources", fetchCatalog: () => Promise) => ({ + queryKey: [name, serverId, passthroughHeaders, oauthToken], + queryFn: fetchCatalog, enabled: catalogQueriesEnabled, staleTime: 30000, }); + const { + data: mcpPromptsResponse, + isLoading: isLoadingPrompts, + refetch: refetchPrompts, + } = useQuery( + catalogQueryOptions("mcpPrompts", () => listMCPPrompts(accessToken ?? "", serverId, buildCustomHeaders())), + ); + const { data: mcpResourcesResponse, isLoading: isLoadingResources, refetch: refetchResources, - } = useQuery({ - queryKey: ["mcpResources", serverId, passthroughHeaders, oauthToken], - queryFn: () => listMCPResources(accessToken ?? "", serverId, buildCustomHeaders()), - enabled: catalogQueriesEnabled, - staleTime: 30000, - }); + } = useQuery( + catalogQueryOptions("mcpResources", () => listMCPResources(accessToken ?? "", serverId, buildCustomHeaders())), + ); const refetchCatalog = useCallback(() => { refetchTools();