The contract includes a club option for the 2019 season.
Garcia split last season with the Atlanta Braves, Minnesota Twins and New York Yankees, tallying a 4.41 ERA and 4.25 FIP across 27 starts and 157 innings.
The 31-year-old figures to slot into the No. 5 spot in the Blue Jays rotation, with Joe Biagini’s role to begin the season now uncertain — he could be moved to the bullpen or provide starting pitching depth at triple-A.
Garcia, a veteran of nine big-league seasons, is a groundball specialist. His 54.8 per cent groundball rate ranked fifth among all MLB starters last season (by comparison, Blue Jays right-hander Marcus Stroman was No. 1 with a 62.1 per cent rate).
His repertoire features a very effective two-seamer that averaged 91 mph last season, along with a four-seam fastball, change-up, slider and curveball.