🔍 feat: Add Filter to MCP Builder Panel (#10885)

Co-authored-by: Atef Bellaaj <slalom.bellaaj@external.daimlertruck.com>
This commit is contained in:
Atef Bellaaj 2025-12-10 16:36:41 +01:00 committed by Danny Avila
parent 6fc6471010
commit da9b5196aa
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
3 changed files with 49 additions and 7 deletions

View file

@ -15,6 +15,7 @@ interface MCPServerListProps {
getServerStatusIconProps: (
serverName: string,
) => React.ComponentProps<typeof MCPServerStatusIcon>;
isFiltered?: boolean;
}
// Self-contained edit button component (follows MemoryViewer pattern)
@ -39,7 +40,11 @@ const EditMCPServerButton = ({ server }: { server: MCPServerDefinition }) => {
);
};
export default function MCPServerList({ servers, getServerStatusIconProps }: MCPServerListProps) {
export default function MCPServerList({
servers,
getServerStatusIconProps,
isFiltered = false,
}: MCPServerListProps) {
const canCreateEditMCPs = useHasAccess({
permissionType: PermissionTypes.MCP_SERVERS,
permission: Permissions.CREATE,
@ -49,8 +54,16 @@ export default function MCPServerList({ servers, getServerStatusIconProps }: MCP
if (servers.length === 0) {
return (
<div className="rounded-lg border border-border-light bg-transparent p-8 text-center shadow-sm">
<p className="text-sm text-text-secondary">{localize('com_ui_no_mcp_servers')}</p>
<p className="mt-1 text-xs text-text-tertiary">{localize('com_ui_add_first_mcp_server')}</p>
{isFiltered ? (
<p className="text-sm text-text-secondary">{localize('com_ui_no_mcp_servers_match')}</p>
) : (
<>
<p className="text-sm text-text-secondary">{localize('com_ui_no_mcp_servers')}</p>
<p className="mt-1 text-xs text-text-tertiary">
{localize('com_ui_add_first_mcp_server')}
</p>
</>
)}
</div>
);
}