New Zealand were 407 for four when rain led to an early lunch minutes before the scheduled interval, a lead of 18 runs after England made 389 in their first innings.
Williamson was 112 not out, having shared stands of 189 with Ross Taylor (62) and 66 with McCullum (42).
New Zealand resumed on 303 for two, with Williamson 92 not out and Taylor unbeaten on 47.
Williamson helped himself to five runs off the spinner before a three down to third man off James Anderson saw the New Zealand number three -- unlike England's Joe Root and Ben Stokes who'd both fallen in the 90s earlier in this match -- to a hundred.
Batting with impressive serenity for a 24-year-old, Williamson's century came in just over three hours off 148 balls including 12 fours.
It was the talented Williamson's 10th hundred in 40 Tests -- an impressive strike-rate -- and the 14th by a New Zealand batsman in a Test at Lord's.
The extra bounce on offer proved Taylor's undoing when he fended at a rising ball from Stuart Broad and was brilliantly caught, one-handed down the legside at full stretch, by diving wicket-keeper Jos Buttler.
McCullum, however, struck his first ball, from Broad, through cover-point for four.
But that life was as tough for batsmen as at any point in the match came when Williamson, on 106, edged Anderson just short of England captain Alastair Cook at first slip.
