ServerRPC only gets called when executed on server/host, but does not execute when client calls it

Im trying to call a ServerRPC from a client, I made the following debug structure:

    private void Update()
    {            
        MServerRpc(NetworkManager.Singleton.LocalClientId);
    }
    [ServerRPC]
    public void MServerRpc(ulong i)
    {
        print(i);
    }

this is on the PlayerPrefab, so Ownership is not rquired, but I tried and that too and it did not change the outcome. Now what it should print is 0 and 1 but it never prints a single 1, only 0s (the call made by the host). Why doesnt it execute the call made by a client?

So I actually found the issue.
For some reason the code needs to be:

    private void Update()
         {            
             if(IsLocalClient){
                 MServerRpc(NetworkManager.Singleton.LocalClientId);
             }
         }
         [ServerRPC]
         public void MServerRpc(ulong i)
         {
             print(i);
         }

If you dont include the if statement it just doesnt get executed on the server. If you do it does.