The Cardinals announced the one-year deal Tuesday. McCoy, 34, spent last season with the New York Giants.
The 10-year veteran completed 60.6% of his throws for 375 yards, one score and an interception in four games in 2020. McCoy had two starts last season in place of injured Giants starter Daniel Jones.
The third-round pick by the Cleveland Browns in the 2010 NFL Draft played his first three seasons in Cleveland. He played for the San Francisco 49ers in 2013 and spent the 2014 through 2019 seasons with the Washington Football Team.
McCoy has appeared in 44 games, with 30 starts, during his NFL tenure.
The Cardinals also have backup quarterbacks Chris Streveler and Cole McDonald on their roster. Streveler was the second-string option in 2020. Former backup Brett Hundley left the team this off-season in free agency.