diff --git a/ui/litellm-dashboard/src/components/mcp_tools/MCPSubmissionsTab.tsx b/ui/litellm-dashboard/src/components/mcp_tools/MCPSubmissionsTab.tsx index 85875b620bb..4c443a257f1 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/MCPSubmissionsTab.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/MCPSubmissionsTab.tsx @@ -322,24 +322,35 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe )} {/* Approve/Reject when no checks panel (no rules configured) */} - {checks.length === 0 && (approvalStatus === "pending_review" || approvalStatus === "rejected") && ( + {checks.length === 0 && approvalStatus !== "rejected" && ( +
+ {approvalStatus !== "active" && ( + + )} + +
+ )} + {checks.length === 0 && approvalStatus === "rejected" && (
- {approvalStatus === "pending_review" && ( - - )}
)} @@ -377,8 +388,8 @@ function MCPServerCard({ server, onApprove, onReject, requiredFields }: MCPServe {/* Approve / Reject in header */} - {(approvalStatus === "pending_review" || approvalStatus === "rejected") && ( -
+
+ {approvalStatus !== "active" && approvalStatus !== "rejected" && ( - {approvalStatus === "pending_review" && ( - - )} -
- )} + )} + {approvalStatus === "rejected" && ( + + )} + {approvalStatus !== "rejected" && ( + + )} +
{/* Individual check rows */} 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 ae57b10b21e..c9dca035206 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 @@ -373,7 +373,6 @@ const CreateMCPServer: React.FC = ({ console.log(`Payload: ${JSON.stringify(payload)}`); if (accessToken != null) { - const isAdmin = isAdminRole(userRole); const response = isAdmin ? await createMCPServer(accessToken, payload) : await registerMCPServer(accessToken, payload); @@ -468,11 +467,9 @@ const CreateMCPServer: React.FC = ({ } }, [isModalVisible]); - // rendering - if (!isAdminRole(userRole)) { - return null; - } + const isAdmin = isAdminRole(userRole); + // rendering return ( = ({ objectFit: "contain", }} /> -

Add New MCP Server

+

+ {isAdmin ? "Add New MCP Server" : "Submit MCP Server for Review"} +

} open={isModalVisible} @@ -517,6 +516,12 @@ const CreateMCPServer: React.FC = ({ layout="vertical" className="space-y-6" > + {!isAdmin && ( +
+ Your submission will be sent for admin review before it becomes active. + {" "}Note: the request must be made with a team-scoped API key. +
+ )}