MacDonald played for the Millwall youth team before joining Charlton Athletic as a trainee,[2] turning professional in August 1998.
He made his Charlton debut on 3 January 2000, as a late substitute for Martin Pringle in a 3–0 win at home to Nottingham Forest.
[3] He started the FA Cup tie against Queens Park Rangers the following weekend, scoring the only goal as Charlton progressed to the fourth round.
[7] However, that was his last involvement with the Charlton first team and in February 2002 he joined Torquay United on loan, playing five games without scoring.
In March 2002 he joined Colchester United on loan, but made just four appearances and scored one goal, in a 2–2 draw with Wigan Athletic,[8] before returning to his parent club at The Valley.
[9] After one goal against Forest Green Rovers and five appearances,[10] the following month he moved to Conference rivals Stevenage Borough.
[9] In August 2003 he moved to Crawley Town, and after an injury-troubled start, went on to play a crucial role in the club winning the Dr Martens League Premier Division and with it, promotion to the Nationwide Conference for the first time in its history.
His contract with Gravesend and Northfleet ended at the close of the 2006–07 season and put pen-to-paper on a two-year deal with Southend United, arriving at Roots Hall on a free transfer.
[16] MacDonald was the replacement for Sam Baldock, who recently left MK Dons to join West Ham United.
[16] During his time as a player at Oldham Athletic, MacDonald studied for and obtained a degree in Professional Sports Writing & Broadcasting from Staffordshire University.