The 34-year-old outfielder is a .270 career hitter with 101 home runs and 406 RBI during 11 seasons in the majors. He has played for the Padres, Mets, Pirates, Yankees, Cubs, Diamondbacks, Nationals and Giants.
Nady spent last season with Washington and San Francisco, hitting a combined .184 with four homers and 13 RBI in 152 at-bats. He played in 40 games with the Nationals and 19 for the World Series champion Giants.
His best season was 2008, when he batted .305 with 25 home runs and 97 RBIs for the Pirates and Yankees.
The Royals announced the move Friday.