The 27-year-old former Scarborough, Barnsley and Grimsby player will move to Perth on a two-year contract in the summer.
Saints boss Tommy Wright told his club’s official website: “Michael is a player I’ve admired for some time and we tried to sign him in the transfer window but couldn’t make it happen.
“However, I am delighted to get him on board as our plans to improve the squad for next season continue.”
The news has not gone down well in York though, where former Dundee United boss Jackie McNamara is struggling to steer City clear of relegation from the Football League.
A club statement read: “York City Football Club is surprised and disappointed to learn that Michael Coulson has signed a pre-contract with St Johnstone.
“The club is particularly disconcerted with the timing of this announcement.
“The club hopes that Michael Coulson is still committed to his current employer and is focused on York City’s fight for Football League survival.”
Second-bottom York are seven points away from safety in Sky Bet League Two.
THE SCOTSMAN ON SOCIAL MEDIA