Holland can earn as much as $4.5 million with performance bonuses in the contract, sources told ESPN's Buster Olney.
Holland, 35, was 3-0 with six saves and a 1.91 ERA this season for Kansas City. He made 28 appearances, pitching 28⅓ innings.
The right-hander didn't permit a run in his final 13 games, covering 13⅓ innings.
Holland is a three-time All-Star who made his major league debut with the Royals in 2010 and spent his first six seasons with them. He later pitched for Colorado, St. Louis, Washington and Arizona before rejoining the Royals in 2020.
Holland is fifth among active players with 212 career saves, and he has a 2.90 ERA in 10 seasons.
The Associated Press contributed to this report.