The Cardinals also got right-handers John Gant and Chris Ellis on Thursday.
Garcia has spent his entire injury-interrupted career with the Cardinals, going 62-45 with a 3.57 ERA and helping St. Louis win the World Series in 2011. But the 30-year-old was just 10-13 with a 4.67 ERA last season, and jettisoning his $12 million contract for next season gives the Cardinals some flexibility in free agency.
They have already signed reliever Brett Cecil to a four-year, $30.5 million contract, leaving an outfielder the biggest hole remaining on their roster.