Factor + math.unicode, 3535 24 bytes
[ [1,b] swap '[ _0 ^rot -1 ^ ] mapv^n Σ ] -11 thanks to @Bubbler!
Explanation:
It's a quotation (anonymous function) that takes two integers from the data stack (in m, n order) as input and leaves a fully-reduced mixed fraction (it's simply the way that Factor is) on the data stack as output.
[1,b] swapMake a range from1tonand bringmto the top of the stack.'[ _ ^ -1 ^0 ]rotPush a quotation to the stack formap0to use later.and bring'[ _msays to slot whatever is onthe top of the data stack.-Subtract (m) into the from_0.mapApply a quotation to each element of a sequence, mapping the results into a sequence of the same size.^v^nRaise a sequenceevery element in the range to the-mpower.-1 ^Take the reciprocal. This is shorter thanrecipand1 swap /.ΣSum.