I'll give a quick answer and I'm sure Miles can expand on it. You would have to make the MPO manually as explained here: http://itensor.org/docs.cgi?page=tutorials/MPO
There is an open issue about making this more automated with AutoMPO but we haven't incorporated it yet: https://github.com/ITensor/ITensor/pull/161
However, I would definitely suggest trying out finite DMRG and using finite-size scaling first. It will be a lot easier to set up, and there isn't much of a disadvantage.
To answer the question about impurities, the standard iDMRG algorithm is not designed for impurities. I think the way to do it would be to first solve the problem with iDMRG without the impurity, then solve the impurity problem on a "finite" system using the solution from iDMRG to set the boundary conditions.