You don’t have to have the server make the selection – “selection” is often a client-side concept, and only the “command” that comes out of the “selection” is what needs to go to the server. (This is super common in RTS games, for example.)
I second what @Kaidoom15 is saying: UI interaction should go in the PlayerController. (I don’t like the way that the getting-started samples put a bunch of movement input logic into the characters instead of the player controller, btw – I always end up removing that from the Character and putting it in the PlayerController.)
So, when the user clicks something, your player controller will detect this, and will set some local UI/game state. The rendering for the selectable objects then need to look at local game state to see whether there’s an object that’s selected, and if so, if that’s the current-object, and if so, render it differently. You can update this in Tick(), or you can dig through the object being selected and poke at its material properties from the PlayerController itself, or do it in many other ways, depending on your specific goals.
Note that the “character/pawn” runs on each client, but input only runs on the owner, and the pawn Controller may be different (a replication controller) on the client than on the server.