"This is my home," Reyes said in a statement Friday. "I'm excited to be back with a great group of teammates. I will do everything I can to help us get back to the postseason."
Now 34, Reyes was a four-time All-Star shortstop with the Mets from 2003-11 and left after winning the NL batting title to sign a $106 million, six-year contract with Miami. He was traded in November 2012 to Toronto and in July 2015 to Colorado, which released him in 2016 after Reyes served a 59-day domestic violence suspension.
He returned to New York, came up to the major leagues in July and batted .267 with eight homers and 24 RBI in 279 plate appearances.
Reyes remained with the Mets last year and was among their most versatile players, appearing in 80 games at shortstop, 36 at third base, 28 at second base, one in center field and one in left. He hit .246 with 15 homers, 58 RBI and 24 steals in 561 plate appearances.
He would get $250,000 each for 500 and 550 plate appearances this year.
New York has been active in the offseason, agreeing to a $39 million, three-year contract with outfielder Jay Bruce, a $14 million, two-year deal with reliever Anthony Swarzak and a deal for $545,000 with first baseman Adrian Gonzalez.
General manager Sandy Alderson said this week the team is looking at more infield options in a late-developing free agent market.