My son is nearly two, he's generally a very easy going and happy little boy. He is very affectionate, gives lots of hugs and kisses etc but is also quite happy to run off at groups and play without me following him around.
However recently he has started reacting very badly when my MIL is around. If she comes to our house he spends the first half an hour sitting on my lap gripping on and refusing to get off. When I eventually persuade him to go and play he won't let her sit near him, if she tries to touch his toys he shouts no, he pushes her away when she tries to hug him etc. It's getting to the point where she is getting really upset about it and I don't know how to deal with it.
My in laws live about ten minutes away from us, we see them at least once or twice a week. He sees my FIL the same amount of time, maybe a bit less, than my MIL and loves him - is happy to play with him, sit on his lap for stories etc.
How do I deal with this? What is the best way to encourage a positive relationship? My DH tries too hard I think, asking him to give things to grandma, let grandma read you a story, give grandma a hug and so on and I think it just makes my son worse! Will it just improve with time? Is there anything I can try?
My MIL would love to babysit but the way my son is there's no way I could leave him with her as he is so upset when she is around 
Any suggestions gratefully received