It might not be as bad as you expect. gp.MarginalApprox uses the implementation described in this paper, particularly equation 5. pm.Potential is used to implement the likelihood because of the trace term. FITC doesn’t have that term, so you could modify the code to use a MvNormal in that case without too much extra work.