MacKinnon's goal gave the Avalanche a 3-1 lead, allowing them to survive Matt Stajan's score that came on a deflection with 1:55 to play.
Colorado won for the third time in four games with Jean-Sebastien Giguere stopping 26 shots. He improved his record to 7-0-0 this season.
Kris Russell scored for Calgary in the first period, but the Flames came up short in their bid for a season-high third straight win. Karri Ramo gave up the three Colorado goals on 25 shots.
Yosemite climber falls 30 feet, suffers major injuries
Lytro unveils camera that can focus a photo after shooting it