Striker MacDonald turned in his second goal of the season from close range early on to hand the Dons their third win in four npower League One games.
Milton Keynes controlled the first half and MacDonald put them ahead after just eight minutes, nipping in at the near post to slot home Dean Bowditch's low cross.
Bowditch then had a 25-yard drive tipped wide by Crewe goalkeeper Alan Martin before Darren Potter headed wide from close range and Adam Chicksen curled a shot wide from a tight angle.
Crewe improved after the break and Ajay Leitch-Smith missed two one-on-one chances, first when he poked the ball against the post and then when he fired straight at goalkeeper David Martin after intercepting Antony Kay's poor backpass.
Both teams had chances in a frantic finale, but Dons substitute Scott Allan and Dean Lewington both had efforts saved, while Crewe substitute Mathias Pogba fired a good late chance wide.