The hosts were coasting at the interval and saw their first-half dominance capped by Marlon King's opener.
Posh grew in confidence after the break but needed a brilliant piece of individual brilliance from McCann to leave St Andrew's with a share of the spoils.
Birmingham, heading into the game without a win in three league and cup games, signalled their intent early on and David Murphy's cross found Jean Beausejour inside the box but his header was easily gathered by Paul Jones.
King tried his luck from distance shortly after but saw his shot bravely blocked by McCann.
Midway through the first half Blues got the breakthrough, Murphy rampaging down the left and crossing for King to calmly steer home.
With the game being played at a frenetic pace, Chris Hughton's side looked the more threatening.
That was underlined again in the 24th minute as Stephen Carr whipped in a delivery for Chris Burke, whose header flew narrowly wide from 12 yards.
Darren Ferguson's side, who battled back from two goals down to beat Derby last time out, continued to weather the storm and rode their luck twice more to make the interval only one goal behind.
Burke arrowed in an effort from the edge of the box which Jones did well to keep hold of, before the lively King tested the stopper once more from even longer range.
The second half started much the way the first ended, with Birmingham controlling possession and passing with confidence.
The Peterborough attack could do little to unsettle the home defence as they struggled to get hold of the ball.
Sensing the need for a change, Ferguson turned to Leicester loanee Tom Kennedy and withdrew the ineffective Mark Little.
Lee Tomlin tried to find strike partner Paul Taylor with a clever pass which Carr did well to read and intercept as the visitors' frustrations continued to build.
They should have fallen further behind in the 53rd minute but King headed Beausejour's pinpoint corner wide with Jones rooted to the spot.
Having averaged two goals a game this season, it was no surprise to see Posh introduce a third striker as Emile Sinclair was brought on around the hour mark.
The change in system enabled them to make the ball stick in the final third and it paid off within two minutes when George Boyd was fouled on the edge of the box and McCann arrowed the resulting free-kick into the top corner.
Suddenly it was Hughton having to seek answers from the bench and he threw imposing forward Nikola Zigic into the mix.
The former Valencia man immediately had a chance to get involved as Beausejour floated a free-kick into the area but the visitors smuggled the ball clear.
Hughton's side ended the game on top and Zigic looked to be in for a winner but he was thwarted by the linesman's flag.