He played for junior club Rutherglen Glencairn before signing for Celtic in March 1902.
[3][4] He made his first team debut on the losing side in the 1902 Scottish Cup Final, and played once in the Scottish League, in October 1902 in a 1–1 home draw with Rangers, before joining English club Bolton Wanderers on loan the following month.
[2] McCafferty went back to Scotland to play for Stenhousemuir and Bathgate before returning to England for a season in the Southern League with Reading.
In December 1906, First Division club Birmingham signed McCafferty for the value of the gate receipts from a friendly between buying and selling club, which amounted to £350 (£48,000 today).[5].
McCafferty went on to play for Southern League clubs Portsmouth and Brentford between further spells at Bathgate.