MacDonald was set to become an unrestricted free agent next week.
Puck Pedia reports the contract is a two-way deal with a $762,500 cap hit.
The 29-year-old appeared in eight NHL games with the Avalanche last season. In 33 games with the club's AHL affiliate, the Colorado Eagles, the six-foot defenceman had 10 goals and 25 points.
A native of Portland, Ore., MacDonald has appeared in 43 NHL games with the Avalanche and Panthers.