Born in Marcory, Ivory Coast, Kapo began his professional career with Auxerre in 1999. He joined Juventus on a free transfer in the summer of 2004, but he struggled to adapt to life in Turin and did not play much as he was behind Pavel Nedvěd in the left midfield role. As a result, he was loaned to Monaco for the 2005–06 season. When Juventus were forcibly relegated to Serie B, Kapo returned to Turin, but went back on loan due to the abundance of midfielders. He signed for Spanish La Liga club Levante, scoring five goals in 32 appearances.
Kapo signed for Birmingham City on 29 June 2007 for a fee of £3 million. He claimed to have rejected other offers to sign for the club, suggesting his style of play was better suited to English football. He scored on his Premier League debut, against Chelsea in a 3–2 defeat on 12 August 2007.
Kapo signed for Wigan Athletic on 16 July 2008, signing a three-year deal for a fee reported as £3.5 million, a move which reunited him with former manager Steve Bruce. He scored his first goal for Wigan in a 4–1 League Cup win over Ipswich Town on 24 September 2008, and his first league goal in a 2–1 defeat to Chelsea on 28 February 2009. On 8 January 2010, Kapo moved to Boulogne on a six-month loan deal, and left Wigan by mutual consent in August 2010.
On 4 November 2010, Kapo signed for Celtic on an 18-month deal. He was allocated the number 77 jersey. He stated he turned down better money from other clubs to sign for the Glasgow side, including an offer from Bundesliga club SC Freiburg. He was encouraged to join the club after consulting with his friend, ex-Celtic player Jean-Joël Perrier-Doumbé. Kapo made his debut against St Johnstone at home in the Scottish Premier League as a second-half substitute, hitting the bar and then assisting the second goal in a 2–0 victory. He was released from his Celtic contract in January 2011, although the player claimed he walked out on the club because they had unilaterally changed the terms of his contract.
In February 2011, Kapo signed for Qatar club Al Ahli SC on a five-month contract. He scored twice to help Al Ahli to only their second win of the season, beating Qatar SC 3–1. After only five appearances and two league goals, he terminated his contract with the club of the Persian Gulf during the following summer.
Return to Auxerre
He signed an 18-month contract with former club Auxerre in January 2012, after a few weeks spent training with the club.
When his contract expired, he signed a two-year deal with Superleague Greece club Levadiakos. In September 2014, he stated in the French media that "everything is corrupted in Greek football, mafia-controlled, while FIFA and UEFA simply don't care".