McCann debuttò nella MLB il 10 giugno 2005 con gli Atlanta Braves. La stagione seguente, la prima completa, fu convocato per il primo di sette All-Star Game, incluse cinque selezioni consecutive fino al 2010, anno in cui premiato come miglior giocatore dell'evento dove baatté 3 punti battuti a casa. Con Braves vinse anche cinque Silver Slugger Award come miglior battitore tra i ricevitori della National League.
Il 23 novembre 2013, McCann firmò un contratto quinquennale del valore di 85 milioni di dollari con i New York Yankees.[1] Vi giocò per tre stagioni, vincendo il suo sesto Silver Slugger Award nel 2015. L'anno seguente, l'ultimo con la squadra, con l'emergere di Gary Sánchez come ricevitore, fu schierato come battitore designato, chiudendo la nona stagione consecutiva con almeno 20 fuoricampo.
Il 17 novembre 2016, McCann fu scambiato con gli Houston Astros per Albert Abreu e Jorge Guzmán.[2] Nella prima stagione in Texas disputò solamente 97 gare con 18 fuoricampo, non raggiungendo i 20 per la prima volta dal 2007 e chiudendo la sua striscia. Nelle American League Championship Series 2017, McCann batté un doppio sia in gara 6 che in gara 7 contro la sua ex squadra, gli Yankees, contribuendo a fare qualificare gli Astros alle World Series 2017 vinte in sette gare e conquistando il primo titolo in 56 anni di storia.[3] In quella serie McCann fu ricevitore in ogni inning, battendo con 5 su 25, incluso un fuoricampo in gara 5.