Yahoo Sports first reported the agreement.
The White Sox had an opening at the position after trading Omar Narvaez to Seattle on Nov. 30 for reliever Alex Colome. They also lost Kevan Smith when he was claimed off waivers by the Los Angeles Angels in October.
Zack Collins and Seby Zavala are coming up through the minors, but the addition of McCann allows the White Sox to move slowly with the catching prospects. They also have Welington Castillo on their major league roster.
The 28-year-old McCann hit .220 with eight homers and 39 RBIs in 118 games last season with Detroit. The rebuilding Tigers didn't offer him a contract for the 2019 season, making him a free agent.
McCann was selected by the White Sox in the 31st round of the 2008 draft, but he decided to go to the University of Arkansas instead. He then was drafted by the Tigers in the second round in 2011.
McCann made his major league debut in September 2014 and spent his first five seasons with Detroit, batting .240 with 40 homers and 177 RBIs in 452 games. He set career highs with 13 homers and 49 RBIs in 2017.
The Associated Press contributed to this report.