The hosts were eight for three in pursuit of 227 all out after McKay had taken the wickets of Kevin Pietersen, Jonathan Trott and Joe Root in his second over.
But Michael Carberry's 63, a maiden international 50 in a century stand with Eoin Morgan (53), helped to get England within range.
Then, even after another three wickets fell for 32, Buttler (65no) and Ben Stokes' skilful stand of 75 put them on the brink - and the 23-year-old wicketkeeper-batsman, pictured, finished the job with three balls to spare after a six and four in the final over off Mitchell Johnson.
The Taunton-born player was naturally delighted with his contribution. He said: "It's great to be not out at the end and win. The knock at Old Trafford gave me a lot of confidence and to win the game for England is brilliant."
Despite Buttler's heroics, England's was a patchy innings, as Australia's had been - apart from another fine hand from George Bailey (87) - and the outcome was a far cry from the start of their chase.
Pietersen fell lbw aiming across the line; out-of-form Trott pushed out at a full and wide ball and was caught head-high at second slip, and Root edged an attempted drive to first. On a surprisingly pacy but not entirely reliable surface, Morgan and Carberry's rebuilding was measured at first.
The captain targeted McKay in his second spell, with three boundaries in an over which cost 15. But having followed Carberry to his 50, he tried to sneak off-side runs off Watson and instead edged on to his stumps.
Carberry was eventually bowled round his legs by seamer Nathan Coulter-Nile - and after Ravi Bopara's tortured seven off 19 balls ended when he was lbw to James Faulkner, it was all down to Buttler and Stokes.
Australia had earlier stumbled to 11 for two, then 57 for four against England's seamers - and also lost their last five wickets for 18 runs as James Tredwell (three for 53) got his revenge for earlier punishment. And in the end that tame finish cost Australia dear.