McKinnon was born in Paisley and started his career at junior side Petershill before moving south of the border to join Carlisle United, then of the Lancashire Combination.
He mainly played at left half, as an understudy to fellow Scot Roddy McEachrane, and it wasn't until 1911 did McKinnon supplant his countryman and become a regular in the Woolwich Arsenal side.
McKinnon was a regular from then on, until official competition was suspended, a period with injury between March and November 1914 excepted.
During the war he served as a driver in the Royal Field Artillery, and returned to play for Arsenal, who had been elected back to the First Division, once competitive football resumed in 1919.
McKinnon was given a free transfer in the summer of 1922, having played 217 matches for Arsenal, scoring 4 goals.