McCarthy was drafted by the Chicago Blackhawks with the twenty-third pick in the 1999 NHL Entry Draft. He made his debut in the 1999–2000 NHL season and he recorded an assist on his first shift. After playing 134 games with the Blackhawks, he was traded to the Vancouver Canucks on August 22, 2005 in exchange for a third-round pick in the 2007 NHL Entry Draft. He was then traded to the Atlanta Thrashers by the Canucks for a conditional fourth-round pick. on March 9, 2006
In the 2008-09 season, McCarthy left the NHL and signed a one-year contract with Russian team Salavat Yulaev Ufa of the newly formed Kontinental Hockey League. McCarthy struggled to adapt to the European transition and went scoreless in just 18 games with Ufa.
On July 10, 2009, McCarthy returned to the North America when he was signed by the Anaheim Ducks on a one-year contract. However, on September 24, before ever playing a game with the Ducks prior to the 2009-10 season McCarthy was traded back to Atlanta, for future considerations.
On October 1, 2010, McCarthy, went back to Europe, signing with TPS, whose squad had been decimated by in defence. He played 32 games in his only season for the team.
McCarthy signed a one-year deal with the ZSC Lions of the Swiss National League A on October 16, 2011, to play under former NHL coach Bob Hartley. On April 17, 2012 - with just 2.5 seconds left in regulation time - he scored the game-winning goal in game 7 of the Swiss playoff finals for ZSC Lions.
Helping the Lions to claim the title, McCarthy followed Bob Hartley, as the newly appointed head coach of the Calgary Flames, back to North America and signed with Flames AHL affiliate, the Abbotsford Heat after a successful try-out on October 7, 2012. McCarthy though was released by the Flames on January 18, 2013 and five days later on January 23, rejoined ZSC Lions for the remainder of the campaign.
In the 2014-15 season, McCarthy as a free agent belatedly signed a professional tryout contract with the AHL's Springfield Falcons on November 11, 2014. He played three games before being released. On February 23, 2015, he was again signed in the AHL in agreeing to a try-out contract with the Iowa Wild.
As an unsigned free agent over the summer, McCarthy continued his playing career by signing a one-year contract with the Kalamazoo Wings of the ECHL on October 3, 2015. In 30 games with the Wings, McCarthy contributed with 9 points before returning to the American League in signing a professional try-out contract with the Lake Erie Monsters on January 8, 2016. McCarthy featured in 17 games with the Monsters, and remained on the roster as a healthy scratch as the Monsters won their first Calder Cup.
On July 19, 2016, McCarthy signalled the end of his playing career after 16 professional seasons, in accepting an assistant coach role to remain with the Lake Erie Monsters.
McCarthy was captain of Team Canada at the 2000 World Juniors Championships in Sweden. He led the team to a bronze medal finish, as Canada defeated the United States in a shootout.