*Club domestic league appearances and goals, correct as of 23:25, 22 December 2024 (UTC) ‡ National team caps and goals, correct as of 23:55, 8 September 2024 (UTC)
McKenna began his career in the Aberdeen academy and was initially a left back before moving to the centre. The Daily Record called him "one of the most promising defenders in the country".[4]
McKenna made his professional debut for Aberdeen as a substitute against St Johnstone on 6 February 2016.[5] His first start came against Heart of Midlothian on 16 May 2016.[6][7] On 22 May 2016, he signed a new two-year contract with Aberdeen,[4] In November 2016, McKenna moved on loan to Scottish Championship side Ayr United for 28 days, his second time on loan with the club.[8] His loan was subsequently extended until the end of the season.[9]
In October 2017, McKenna extended his Aberdeen contract until 2021. The club rejected a bid from Hull City to buy him in January 2018.[10] In January 2018, McKenna scored from more than 35 yards in Aberdeen's 3–1 win against Kilmarnock. He claimed in an interview after the match that Kilmarnock skipper Kris Boyd urged him to "shoot" so he obliged.[11] On 7 March 2018, McKenna signed a new contract extension until 2023.[12]
Aberdeen rejected an offer of £3.5 million for McKenna from Celtic in August 2018.[13] Later in August, Aberdeen rejected a larger offer from Aston Villa.[14] During the summer 2019 transfer window, Aberdeen rejected offers from Queens Park Rangers and Nottingham Forest for McKenna after he handed in a transfer request.[15]
In December 2019 Aberdeen chairman Dave Cormack confirmed the club had received no offers or approaches from other clubs for McKenna or teammate Sam Cosgrove.[16] McKenna suffered a torn hamstring during a Scottish Cup tie at St Mirren on 29 February 2020.[17]
In August 2020 he was one of eight Aberdeen players who received a suspended three-match ban from the Scottish FA after they breached restrictions relating to the COVID-19 pandemic by visiting a bar earlier in the month.[18] Aberdeen entered transfer negotiations with Nottingham Forest regarding McKenna in September 2020, which meant that he was left out of the Aberdeen team for a match with Motherwell.[19]
Nottingham Forest
On 23 September 2020, McKenna moved to EFL Championship side Nottingham Forest for an undisclosed fee,[20] confirmed by Aberdeen as a "club-record" amount[21] reported to be £3 million that could rise to £6 million.[22] He made his Forest debut on 25 September 2020 in a 1–0 defeat to Huddersfield Town.[23] He scored his first goal for the club in a 2–1 win over Coventry City on 4 November 2020.[24] He was voted as Forest's Player of the Season for the 2021–22 campaign,[25] during which they won promotion to the Premier League.[26] McKenna missed significant parts of the 2022–23 season due to hamstring and collarbone injuries.[26]
On 30 January 2024, McKenna joined Danish Superliga club Copenhagen on loan for the remainder of the season.[27] On 5 June 2024, Forest announced he would be leaving in the summer when his contract expired.[28]
Las Palmas
On 8 August 2024, McKenna joined Las Palmas on a three-year contract.[29]
McKenna was selected for the full national squad in March 2018,[32] and made his full international debut in a 1–0 defeat against Costa Rica on 23 March.[33] In his fourth game for Scotland, a 1–0 defeat to Mexico on 2 June 2018, McKenna was made team captain.[34] On 11 October 2018, McKenna came on a second-half substitute in a 2–1 defeat against Israel, marking his competitive debut for Scotland.[35]
On 7 June 2024, McKenna was named in Scotland's squad for the UEFA Euro 2024 finals in Germany.[36] He appeared in all three of the team's matches at the tournament, coming on as a substitute against both Germany[37] and Switzerland, before starting against Hungary as Scotland finished bottom of Group A with one point from three matches.[38][39]