He began his career with St Mirren in his native Scotland, before moving south of the border to sign for English Championship side Watford where he spent three and a half years but was on the sidelines for over a year due to a knee injury and was loaned to Shrewsbury Town upon his return to fitness. He moved to Sheffield United in June 2013, leaving the club in February 2015. After a short stint with Dundee, McGinn then had 18 months with Wycombe Wanderers. He returned to St Mirren in January 2017 and helped them win promotion in 2017–18. He left St Mirren during the 2020 close season and signed for Hibs in September 2020.