McCoulsky began his career with the Aspire Academy, the youth section of Isthmian Premier Division club Dulwich Hamlet responsible for the development of George Elokobi and Simeon Jackson. He was called up to the club’s first team ahead of the 2014–15 season. On 13 September 2014, McCoulsky came off the bench to make his debut in a 3–0 defeat to Worthing. His second appearance for the club saw him claim an assist and the Man of the Match award, before scoring his first goal in a 2–0 victory over AFC Hornchurch the following game.
At the end of the season, McCoulsky was invited to train with recently relegated Millwall, and also attracted interest from Premier League duo West Ham United and Southampton. In October 2015, he went on trial with Bristol City and scored for the Under-21s. On 2 November, McCoulsky signed a professional contract with the League One club and spent the season playing for the Under-23s. On 25 October 2016, McCoulsky made his professional debut for Bristol City, coming off the bench to replace Gustav Engvall in a 2–1 EFL Cup defeat to Hull City.
Weston-super-Mare (loan)
On 4 August 2016, McCoulsky joined Weston-super-Mare on a two-month loan. Making his debut in a 3–1 win over Whitehawk, he scored the final goal and was named Man of the Match. He went on to score seven times in 12 appearances for the National League South side before returning to Bristol City in late October.
Torquay United (loan)
On 17 November 2016, he joined National League side Torquay United on a two-month loan. After just two substitute appearances in two months, McCoulsky was recalled by his parent club in January.
Bath City (loan)
On 3 February 2017, McCoulsky joined Bath City on loan for the remainder of the season. He scored his first goal for the club on 18 February in a 4–1 victory at St Albans City, and went on to score eight times for the National League South club. McCoulsky was recalled in April ahead of a potential involvement in Bristol City's final league games of the season, but did not feature for the first team.
Newport County (loan)
On 28 July 2017, McCoulsky joined League Two side Newport County on a six-month loan. He made his debut for Newport on the opening day of the 2017–18 season, scoring an injury-time equaliser during a 3–3 draw with Stevenage. On 4 November 2017 McCoulsky scored the winning goal for Newport in the 2-1 FA Cup second round win against League One club Walsall. On 7 January 2018, he scored the winning goal in a 2–1 win over Championship club Leeds United in the third round of the FA Cup with an 89th minute header.
Southend United (loan)
On 10 August 2018, McCoulsky joined League One side Southend United on a season-long loan deal. McCoulsky scored on his debut for Southend in a 4–2 defeat to Championship side Brentford in the first round of the EFL Cup.
On 3 January 2019, McCoulsky signed for League Two outfit Forest Green Rovers on a two and-a half year deal, following his loan recall back to Bristol City.