Jordan Eberle and Ryan Donato also scored for the Kraken, and Philipp Grubauer stopped 15 shots, with both Winnipeg goals coming on the power play.
The Kraken snapped a two-game losing skid and won for just the second time in seven games.
''Just a bit more grit. I think we kind of lost that the last couple of games,'' McCann said. ''We haven't played with that jam, that relentlessness, and I feel like we had that tonight.''
Mark Scheifele and Pierre-Luc Dubois scored for the Jets. David Rittich had 32 saves. The loss ended Winnipeg's five-game road winning streak, which tied a franchise record.
The Jets were on the second night of a back-to-back after winning in Vancouver on Saturday and were playing their seventh game in 11 days.
''We were half a step behind physically, and mentally we complicated the game a little bit,'' Winnipeg coach Rick Bowness said. ''When you do that, you're back on your heels.''
Seattle generally held an advantage throughout the night in even strength and outshot the Jets 34-17, although Winnipeg took advantage of power play opportunities.
The Jets managed only three shots in the first period but still took a 1-0 lead. Seattle was whistled for a pair of penalties less than a minute apart. Winnipeg took advantage of the five-on-three, scoring off the initial faceoff after the second penalty when Scheifele redirected a shot by Josh Morrissey past Grubauer.
Eberle tied the game in the second period with a nice spinning backhand from the left circle, but the Jets quickly regained the lead with another power play opportunity as Dubois tapped in a rebound with about seven minutes left in the period.
Donato tied the game again just 16 seconds into the third period, redirecting a Yanni Gourde shot past Rittich. It was the third straight game with a goal for Donato, tying his career best.
McCann gave the Kraken the lead with 4 1/2 minutes left in the game, putting the puck over Rittich's shoulder from the right circle. It was McCann's team-leading 14th goal.
''We've got to be really comfortable staying with games like this and winning games like this,'' Kraken coach Dave Hakstol said. ''The offense doesn't come easy. The goals don't come easy. We had to work real hard tonight to get the three that we got.''
Morrissey's first-period assist gave him a nine-game point streak, setting a franchise record for the longest streak by a defenseman. ''It's definitely something I don't take for granted. It's a pretty cool achievement,'' he said.
Morrissey also became the first defenseman to reach 30 assists this season. Kyle Connor extended his scoring streak to nine games with a second period assist, tying Morrissey for the longest Jets streak this season.
Seattle D Justin Schultz was back in the lineup after missing two games with an undisclosed injury. . The Kraken reassigned D Gustav Olofsson to Coachella Valley. . Kraken rookie Shane Wright was named Canada's captain for the upcoming World Junior Championship.
Jets: Returns home to host the Senators on Tuesday.
Kraken: Hosts the Blues on Tuesday.
AP NHL: https://apnews.com/hub/NHL and https://twitter.com/AP-Sports
Copyright 2023 STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.