The 35-year-old hit .258 with four homers and 13 RBIs in 151 at-bats last season for Toronto. He made 35 starts, including 19 at shortstop, nine at third, five at second and two in left.
McDonald has spent 11 seasons in the major leagues, the past five with the Blue Jays. He became a free agent after the season.
His deal announced Wednesday includes annual salaries of $1.5 million.