diff --git a/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx b/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx index 98228dc34bc..31f65c040ef 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx @@ -61,13 +61,23 @@ const UserFieldsModal: React.FC = ({ }; const serverDisplayName = server.server_name || server.alias || server.server_id; + + const buildDeepLinkUrl = (): string => { + if (typeof window === "undefined") { + return `?openUserFields=${server.server_id}`; + } + const params = new URLSearchParams(window.location.search); + params.set("openUserFields", server.server_id); + return `${window.location.origin}${window.location.pathname}?${params.toString()}`; + }; + const errorPreview = `Error: MCP server "${serverDisplayName}" requires user configuration before use. ${missing.length > 0 ? `Missing field${missing.length === 1 ? "" : "s"}:` : "All fields configured."} ${missing.map((f) => ` • ${f.label || f.name}${f.description ? ` — ${f.description}` : ""}`).join("\n")} Please configure your fields at: -${typeof window !== "undefined" ? `${window.location.origin}${window.location.pathname}?openUserFields=${server.server_id}` : `?openUserFields=${server.server_id}`} +${buildDeepLinkUrl()} Once configured, retry your request.`; diff --git a/ui/litellm-dashboard/src/components/mcp_tools/mcp_servers.tsx b/ui/litellm-dashboard/src/components/mcp_tools/mcp_servers.tsx index 2279d03b6af..b3b2bc6b6b6 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/mcp_servers.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/mcp_servers.tsx @@ -103,12 +103,12 @@ const MCPServers: React.FC = ({ accessToken, userRole, userID }) const target = serversWithHealth.find((s) => s.server_id === targetId); if (target) { setUserFieldsServer(target); + params.delete("openUserFields"); + const remaining = params.toString(); + const newUrl = + window.location.pathname + (remaining ? `?${remaining}` : "") + window.location.hash; + window.history.replaceState({}, "", newUrl); } - params.delete("openUserFields"); - const remaining = params.toString(); - const newUrl = - window.location.pathname + (remaining ? `?${remaining}` : "") + window.location.hash; - window.history.replaceState({}, "", newUrl); }, [serversWithHealth]); // Servers with one or more missing user fields for the current user (prototype) diff --git a/ui/litellm-dashboard/src/components/mcp_tools/userFields.ts b/ui/litellm-dashboard/src/components/mcp_tools/userFields.ts index 05556df02d4..9d6b81bec6c 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/userFields.ts +++ b/ui/litellm-dashboard/src/components/mcp_tools/userFields.ts @@ -79,7 +79,3 @@ export function getMissingUserFields( values[f.name].trim() === "", ); } - -export function hasAnyUserFields(serverId: string): boolean { - return getUserFieldDefs(serverId).length > 0; -}