McMahon spent eight years on the coaching staff of Tranmere Rovers, where he had two spells as caretaker manager, in the 2003–04 season and at the end of the 2005–06 season.
He moved to become first-team coach at Shrewsbury Town in June 2006, and was made assistant manager in September 2007. During this period he completed his UEFA Pro Licence in coaching during 2006. On 3 March 2008 he was appointed caretaker manager, after the departure of manager Gary Peters. The appointment of Paul Simpson on 12 March saw him resume the assistant role.
On 8 June 2009, John was appointed reserve team coach of Liverpool, replacing Gary Ablett. He took charge of the reserve team for the first time on 18 July 2009, when the a Liverpool XI beat Aberystwyth Town 4-1 in a friendly. On 11 March 2011 it was announced that he would no longer be a coach at Liverpool.
In June 2011 he rejoined the coaching staff at Tranmere as first team coach. McMahon was appointed caretaker manager of Tranmere in February 2014, after the suspension of Ronnie Moore. He left the club in August 2014.