He was originally signed by the Chicago White Sox as an amateur free agent on December 26, 2001. He played in the White Sox farm system through 2005 with stops at Bristol, Kannapolis and Winston-Salem, reaching as high as Class "A".
Texas Rangers
Castro was the first pick in the 2005 Rule 5 Draft by the Kansas City Royals on December 8, 2005. He was then traded to the Texas Rangers for second basemanEsteban Germán. He made his major league debut on April 6, 2006, for the Rangers against the Detroit Tigers, pitching 3.2 innings and allowing one earned run. He appeared in 4 games for the Rangers, and had an E.R.A. of 4.32 in 8.1 innings pitched.
Philadelphia Phillies
He was traded to the Philadelphia Phillies on June 29, 2006, for a minor leaguer and pitched in 16 games for the Phillies the rest of the season, with a 1.54 ERA.
In 2007, Castro made 10 appearances for the Phillies, including making his first career Major League start, on August 23 against the Los Angeles Dodgers. He had a 6.00 ERA that season for the club, while also pitching in 11 games for the AA Reading Phillies and 21 games for the AAA Ottawa Lynx.
Toronto Blue Jays
Castro was traded to the Toronto Blue Jays on September 29, 2008, to complete a trade for Matt Stairs. With the Blue Jays organization, he spent the season with the AAA Las Vegas 51s, compiling a 7–6 record and 4.49 ERA in 25 starts.
Boston Red Sox
Castro signed a minor league contract with the Boston Red Sox on December 7, 2009.[1] He spent the season with the Pawtucket Red Sox, where he was 7–9 with a 4.93 ERA in 31 appearances (15 starts).
Castro was designated for assignment on June 29, 2010, to make room for recently acquired Eric Patterson.[2]
Seattle Mariners
Castro signed a minor league contract with the Seattle Mariners for the 2011 season.[3] He spent that season with the Tacoma Rainiers, where he was 5–4 with a 3.63 ER in 24 appearances (12 starts).
On 23 November 2012, Castro was reported to sign a minor league contract with the San Francisco Giants.[4] However, that report was in error, as he was subsequently signed by the Los Angeles Dodgers to a minor league contract on December 19, 2012.[5] The Dodgers released him in March 2013.