Yoenis Cespedes is staying with the Mets - again.

After testing free agency for the second straight offseason, the slugging outfielder agreed to a $110 million, four-year contract with New York, a person familiar with the deal told The Associated Press on Tuesday.

The person spoke to the AP on condition of anonymity because the agreement is subject to Cespedes successfully completing a physical.

A two-time All-Star, Cespedes gets $22.5 million in 2017, $29 million in each of the following two seasons and $29.5 million in 2020.

The 31-year-old receives a full no-trade provision as part of the agreement, the largest for a free agent thus far this offseason. The deal's $27.5 million average annual value ties former Yankees third baseman Alex Rodriguez for the second-highest among position players, trailing only Miguel Cabrera's $29.2 million with Detroit.

Acquired by the Mets from the Tigers at the July 31 trade deadline in 2015, Cespedes had 17 home runs and 44 RBIs in 57 games with the Mets down the stretch, helping them reach the World Series for the first time since 2000.

After finding a slow market in a free-agent class that also included Jason Heyward, Alex Gordon and Justin Upton, Cespedes made a surprise return to the Mets when New York agreed in January to a $75 million, three-year contract that allowed him to opt out after one season and $27.5 million.

Cespedes had 31 homers and 86 RBIs in 132 games this year, slowed after injuring his right quadriceps on July 8. He hit one home run after Sept. 11.

Other outfielders on the free-agent market include major league home run leader Mark Trumbo, Jose Bautista, Carlos Beltran, Dexter Fowler, Josh Reddick and Matt Holliday.

Mets general manager Sandy Alderson said he wanted a resolution to Cespedes' negotiations with the team by the end of the winter meetings, which run from Dec. 5-8.