You're probably behaving like that because you're so tired, exhausted etc; You're not a shit parent. You might need help with coping, and with dealing with his behaviour and your emotions, but you recognise you need help, and you obviously want to deal with it and be the best parent you can- struggling parent, yes, shit parent, not as much. And I've had shit parents, and if I knew they'd been trying to make it work for me and them, then I'd feel a lot better, as it was, they didn't care.
Can you make it a more regular thing (ie, your mum comes round to your house or vice versa once a week for the whole evening, and then pick him up either next day or in the evening, so you can get a more routine thing. I know a lot of people think children do often need a set routine, in a way, parents do to. If you're struggling, it can help to think that next evening you can watch TV on the sofa in your dressing gown and not have to worry. Of course it might not be possible. Or, if you can afford it, a childminder or something.
Do you work full time, part time, a WAHM, a SAHM? All of them can affect how you feel.
If you are a SAHM, getting someone to sit (who's not your mother, although she might have the best intentions, she's not being as helpful as she could be, although it's great she's helping look after him) him a few evenings a week, or even more (if you can afford it- for instance, I possibly could, but I would have to change a lot of things and probably work more hours, right into the evenings, so it might not be possible for you, but if you can afford it, it's a great option) because it can be very stressful dealing with a grumpy three year old all day, and can be very stifling. Just going out shopping, meeting friends, going swimming or something will obviously be useful. If you work, then you might be feeling (like I normally am) a bit stressed and tired after a hard day's work, so maybe instead of coming straight home, if it's an option, you could spend an hour doing something, or even twenty-thirty minutes, stopping at the library or eating something at a cafe, if you can do it, means you get some time to stop, think and relax before dealing with the stresses of having a three year old.
Have you considered parenting classes? There seems to be some sort of phobia almost about them, but they can be really useful, they aren't just a thing where bad parents get sent, they can give great coping tips, help, good discussions and support, and (as I work with children, I've helped out at a few of them with parents just like you) can tell you if there's anything else which can help.
Goodluck!