diff --git a/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsAdminSection.tsx b/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsAdminSection.tsx index ec782c6aa35..b2d90699cd2 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsAdminSection.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsAdminSection.tsx @@ -64,7 +64,7 @@ const UserFieldsAdminSection: React.FC = ({ value, ) : (
{fields.map((f, idx) => ( -
+
Field Name (key) diff --git a/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx b/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx index a6f6c32c212..9d48062f8a8 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/UserFieldsModal.tsx @@ -67,9 +67,10 @@ const UserFieldsModal: React.FC = ({ const buildDeepLinkUrl = (): string => { if (typeof window === "undefined") { - return `?openUserFields=${server.server_id}`; + return `?page=mcp-servers&openUserFields=${server.server_id}`; } - const params = new URLSearchParams(window.location.search); + const params = new URLSearchParams(); + params.set("page", "mcp-servers"); params.set("openUserFields", server.server_id); return `${window.location.origin}${window.location.pathname}?${params.toString()}`; }; diff --git a/ui/litellm-dashboard/src/components/mcp_tools/create_mcp_server.tsx b/ui/litellm-dashboard/src/components/mcp_tools/create_mcp_server.tsx index 7ad46d09b4a..f2259a901fe 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/create_mcp_server.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/create_mcp_server.tsx @@ -417,7 +417,7 @@ const CreateMCPServer: React.FC = ({ const validUserFields = userFields.filter( (f) => f && f.name && f.name.trim() !== "", ); - if (response?.server_id && validUserFields.length > 0) { + if (response?.server_id) { setUserFieldDefs(response.server_id, validUserFields); } 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 b3b2bc6b6b6..14e4cf3501b 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/mcp_servers.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/mcp_servers.tsx @@ -94,22 +94,20 @@ const MCPServers: React.FC = ({ accessToken, userRole, userID }) // ?openUserFields= (this is the deep-link target shown in the // mocked Claude Code error message). useEffect(() => { - if (typeof window === "undefined" || !serversWithHealth || serversWithHealth.length === 0) { - return; - } + if (typeof window === "undefined" || !mcpServers) return; const params = new URLSearchParams(window.location.search); const targetId = params.get("openUserFields"); if (!targetId) return; 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); } - }, [serversWithHealth]); + params.delete("openUserFields"); + const remaining = params.toString(); + const newUrl = + window.location.pathname + (remaining ? `?${remaining}` : "") + window.location.hash; + window.history.replaceState({}, "", newUrl); + }, [mcpServers, serversWithHealth]); // Servers with one or more missing user fields for the current user (prototype) const serversNeedingUserFields = React.useMemo(() => { @@ -549,7 +547,7 @@ const MCPServers: React.FC = ({ accessToken, userRole, userID }) setUserFieldsServer(null)} onSaved={() => setUserFieldsRefreshKey((k) => k + 1)} />