McNabb was selected in the second round, 37th overall, of the 2006 WHL Bantam Draft. He debuted with the Kootenay Ice during their last three games of the 2006–07 season.
In the 2007–08 season, he appeared in 65 games, recording 2 goals and 9 assists for 11 points. Additionally, he had one assist in 10 playoff games for the Ice.
In the 2008–09 season, McNabb played in the style of a defensive-focused defenceman, and his numbers reflected it. In 67 games played, he had 10 goals and 26 assists for 36 points, and also accumulated 140 penalty minutes. He also contributed in the playoffs yet again with five assists in four games. In that season, he played in the CHL Top Prospects Game for Team Orr, adding three assists for the squad and going +3 while doing so. He was also a member of Team Canada for the 2009 IIHF World U18 Championships.,[1] and the 2008 Ivan Hlinka Memorial, in which he and his team received a gold medal.[2]
On June 26, 2009, McNabb was drafted by the Buffalo Sabres. He attended Athol Murray College of Notre Dame, a prep school in Wilcox, Saskatchewan, where he played alongside former Buffalo Sabre Tyler Myers, also a defenceman.[2]
McNabb was the Kootenay Ice captain from 2010–11. He helped lead them to the 2011 Memorial Cup against Owen Sound, where he was suspended one game for elbowing Joey Hishon.[3]
Professional
Buffalo Sabres
On May 18, 2011, McNabb concluded his junior career by signing a three-year, entry-level contract with the Buffalo Sabres.[4] Following the signing, he was invited to the Sabres training camp prior to the 2011–12 season.[5] After attending their training camp, McNabb was re-assigned to their American Hockey League (AHL) affiliate, the Rochester Americans, for the start of the season.[6] He remained with the Americans until November 26, 2011, when he earned his first NHL recall due to injuries in the Sabres' lineup.[7] During this recall period, he scored his first NHL goal on December 26, 2011, against Tomáš Vokoun of the Washington Capitals.[8] McNabb remained at the NHL level before suffering a concussion in a January game against the Toronto Maple Leafs. As such, he missed eight games to recover and was re-assigned to the AHL in February.[9] McNabb re-joined the Sabres in March following the suspension of Tyler Myers.[10] By the conclusion of the season, McNabb was one of six different players to score their first career NHL goals during the season. This marked the first time six different players scored their first goal for the Sabres since 1992–93.[11] As the Sabres failed to qualify for the 2012 Stanley Cup playoffs, McNabb was returned to the Americans to help push them towards a deep 2012 Calder Cup playoffs berth.[12]
McNabb returned to the Sabres' training camp for the 2012–13 season but was re-assigned to the AHL prior to the start of his sophomore campaign.[13] By the end of October, McNabb had maintained a five-game assist streak which included four assists on the power-play.[14] He continued to improve offensively throughout the season and accumulated three goals and 18 assists through 39 games. As such, McNabb was selected to represent the Americans at the 2013 AHL All-Star Classic and competed in the hardest shot event.[15] His sophomore season hit a bump due to a leg injury in March. At the time, he had accumulated with five goals and 25 assists through 45 games.[16] Despite this, he set career-highs in all offensive categories, including goals, assists, points, and penalty minutes, while appearing in 62 games.[17]
In the final year of his entry-level contract, McNabb entered the Sabres' Development Camp with the intent of making the teams' opening night roster.[16] He was returned to the AHL to begin the 2013–14 season but was recalled shortly after competing in 15 games.[17] McNabb made his season debut on November 21, playing alongside Jamie McBain in a game against the Philadelphia Flyers.[18] After serving as a healthy scratch for two games, McNabb was re-assigned to the AHL in December for their game against the Utica Comets.[19] During the game against the Comets, he scored a goal and two assists to be named the game’s first star. As such, the Sabres recalled him for their following game.[20]
The 2014–15 season was McNabb's first full season at the NHL level alongside fellow rookie Andy Andreoff. Throughout the season, he was regarded as a two-way defenceman but said he was "intent on getting his defensive legs under him before he presses the play in the offensive end of the rink."[23] During a game against the Colorado Avalanche in March 2015, McNabb posted a new career-high for points in a single game with one goal and two assists.[24] This offensive output continued throughout the month and he maintained a four-game assist streak.[25] McNabb finished his first full season at the NHL level with a career-high 24 points through 71 games.[26]
McNabb returned to the Kings for the 2015–16 season and was named to their opening night roster. On June 4, 2016, McNabb signed a new two-year contract with the Kings.[27]
McNabb began the season with the Kings before suffering a broken collarbone on October 31, 2016, during a game against the St. Louis Blues.[28] He missed nearly two months of gameplay before re-joining the team in late December.[29] Upon returning to the lineup, McNabb played in his 200th career NHL game in an overtime win over the Sharks on January 4, 2017.[30] The following game, he had a game-high six shots on goal, three hits and three blocked shots.[31]
Vegas Golden Knights
On June 21, 2017, having been left exposed by the Kings at the 2017 NHL Expansion Draft, McNabb was selected by the Vegas Golden Knights.[32] Upon joining the team, he chose to wear jersey number 3.[33] By late November, McNabb had tallied two assists and 19 penalty minutes through 20 games. He supplemented his lack of scoring with his physical play; he was one of six players in the league who had recorded over 50 hits and blocked shots. As such, the Golden Knights signed McNabb to a four-year, $10 million contract extension worth $2.5 million annually on November 27.[34] McNabb missed three consecutive games while recovering from an undisclosed injury but returned to the ice on February 2. During the game, he played 18:57 minutes of ice time and recorded two hits and one blocked shot.[35] During the month of March, McNabb continued his physical style of play and joined Brooks Orpik as the only two players in the 2017–18 season to record at least 145 hits and blocked shots. On March 4, McNabb tallied a career-high 11 hits against the New Jersey Devils which tied him for second most hits in an NHL game through the 2017–18 season.[36] He finished his first regular season with the Knights as a first-pair defenceman with a career-high five goals in 76 games.[37]
The Golden Knights qualified for the 2018 Stanley Cup playoffs, where they faced McNabb's old team, the Los Angeles Kings, in round one.[38] In Game 4, McNabb scored the only goal of the game at 4:04 in the second period to help lead the Golden Knights to a series sweep. He also helped them become the first NHL team to sweep a Stanley Cup Playoff series in its inaugural season.[39] Throughout the series, McNabb started 29 of his even-strength shifts in the defensive zone alongside his defensive partner Nate Schmidt. As such, he was expected to face off against the San Jose Sharks top defensive pairing in the second round.[40] Following their second-series win against the Sharks, McNabb and the Golden Knights faced the Winnipeg Jets in the Western Conference Final.[41] During Game 1 of their series, McNabb cut the Jets' lead to 3–1 at 8:10 of the second period but the Knights eventually lost 4–2.[42] Despite this loss, the Golden Knights beat the Jets in five games to qualify for the 2018 Stanley Cup Finals against the Washington Capitals.[43]
Following their loss to the Capitals, McNabb returned to the Golden Knights for their 2018 training camp and exhibition games prior to the 2018–19 NHL season.[44] As a result of the suspension to his usual partner Nate Schmidt, McNabb played with Colin Miller for the start of the season.[45] Upon Schmidt's return, they played as the Knights top defensive pair and averaged 21 minutes per game.[46] As the regular season approached an end, McNabb was named a healthy scratch for the first time during the season and was replaced by Nick Holden for a game against the Sharks.[47] The Knights met with the Sharks in the first round of the 2019 Stanley Cup playoffs but were eliminated by them in seven games.[48] Following their elimination, McNabb's former defensive partner Miller was traded to the Buffalo Sabres.[49] On January 30, 2022, the Golden Knights signed McNabb to a three-year, $8.55 million contract extension.[50]
On November 15, 2024, during the 2024–25 season, and as a pending free agent, McNabb signed a three-year extension with the Golden Knights, keeping him in Vegas through the 2027–28 season.[52]