In this notebook, I made a manual calculation of the local explanations for an scikit-learn gradient boosting machine and then I compare my manual calculations with the returns from ELI5.
For xgboost the principle is the same. The manual calculations are a bit harder to obtain because the ensemble structure of xgboost does not provide the values at the internal nodes, just at the leaves, so you need to calculate those first.