In 2002, McPherson played for the Angels affiliate the Cedar Rapids Kernels. He ended the season with a.277 batting average with 15 home runs with 30 stolen bases and lead the team with 88 RBIs and 78 bases-on-balls. He was the Angels minor league player of the year, Baseball America minor league player of the year and California League all-star in 2003, when he hit.308 with 18 homers for the A+ Rancho Cucamonga Quakes. Midway through his 2004 season, he shot up the ranks from Double-A minor league affiliate Arkansas Travelers to the Triple-ASalt Lake Stingers. After repeating as the Angels and Baseball America's minor league player of the year in 2004, McPherson was a September call-up by the Angels to fill their 40-man expanded roster. He made his Major League debut on September 10, 2004, against the Chicago White Sox as a pinch runner. His first hit was a double to left field off of Ryan Franklin of the Seattle Mariners on September 20. With third baseman Troy Glaus limited to the designated hitter role due to a shoulder injury, McPherson started 11 games down the stretch beginning on September 20 and was the Angels' starting third baseman in their playoff series versus the Boston Red Sox. His rookie season in 2005 started out sluggishly, with his batting average usually around or below the Mendoza Line in April. Approximately one-third into the season, McPherson's bat heated up and he began hitting like he had been projected to do, including knocking in a pair of game-winning home runs in a series against the Kansas City Royals. His season was truncated by a hip injury, however. He underwent surgery in August 2005 to remove bone spurs. Entering spring training in 2006, McPherson was expected to compete to be the Angels' starting third baseman. However, he did not hit well during the exhibition season, and that job fell to Chone Figgins, leaving no role on the team for McPherson. As a result, McPherson began the 2006 campaign in the minor leagues. After re-discovering his home run stroke at Salt Lake, the Angels called McPherson back to the active roster in May. McPherson spent the entirety of the 2007 season on the disabled list after choosing to have back surgery to fuse two vertebrate in his back. McPherson was not offered a new contract by the Angels and became a free agent on December 12, 2007.
Florida Marlins
He signed a one-year deal with the Florida Marlins on January 31,. Playing for the Triple-A Albuquerque Isotopes, he batted.275 with 42 home runs and 98 RBI. His 42 home runs led the minor leagues in 2008. He was called up on September 1, 2008 and had two hits in 11 at-bats. On March 31,, McPherson was released by the Marlins.
On April 11, 2009 McPherson was signed to a minor league contract by the San Francisco Giants. However, he never played a game for any team in the Giants system in 2009 due to recurring back problems.
On November 20, 2009 McPherson was signed to a minor league contract with the Oakland Athletics, with an invitation to spring training; He was expected to compete for the starting 3rd base position. But with more injury problems, Mc Pherson found himself playing with the Oakland A'sPacific Coast League affiliate, the Sacramento River Cats. In 84 games, he hit.267 with 22 home runs and 75 RBI.
Chicago White Sox
McPherson signed a minor league contract with the Chicago White Sox on November 17, 2010. He began the season in the minors with the Charlotte Knights. He had his contract purchased by the White Sox on May 17, 2011 but was designated for assignment on May 30 after only playing in 11 games and hitting.133. On August 2, 2012, McPherson was released by the White Sox. He was hitting.253 with 12 HR and 47 RBI in 61 games with Charlotte.