The team announced the deal, which carries club option for 2020, on Saturday. It was reported Thursday night.
Phelps is a 32-year-old free agent who is coming back from Tommy John surgery.
He tore the ulnar collateral ligament in his pitching arm on March 17 during his final pitch in a spring training outing against the Los Angeles Angels, and he had surgery March 26.
Phelps was 2-1 with a 3.12 ERA in 10 relief appearances in 2017 for Seattle, which acquired him from Miami that July 20. He had a $5.55 million salary last season.
Phelps is 30-33 with a 3.89 ERA over six major league seasons with the New York Yankees (2012-14), Miami (2015-17) and the Mariners. He also has five saves in 64 starts and 164 relief appearances.