high side MOSFET switch and BJT interface with MCU GPIO
You make the common mistake of using a common collector or emitter follower configuration of the BJT. In that configuration, using an NPN the output voltage (at the emitter) can never be higher than the voltage at the base.

Imagine for a second that the emitter was at a higher voltage than the base, then the base-emitter junction would be in reverse mode. That's not how a BJT is supposed to work, the base-emitter must be in forward mode so Vbe = 0.7 V (roughly).

The solution is to change the NPN to be in a common emitter circuit, make the NPN short R2 and connect R4 directly to the NMOS gate. Then the NPN will short the NMOS's gate to ground and turn it off when the NPN is on.
Indeed that's an inversion compared to what you have now.

You could do such an inversion twice but that will require a more complex circuit and extra components. Accepting the inversion is the easy way to go. Are you sure you cannot accept the inversion, if you have access to the code running in the MCU the change is trivial.