McMahon finished last season on loan with City from Blackpool but he has now become a full time member of Phil Parkinson's squad after leaving Bloomfield Road earlier this summer.
The 29 year-old has signed a two-year deal with the Bantams. He becomes City's third signing of the summer following the recent arrivals of Steven Davies and Josh Morris.
After signing his paperwork at the club's Apperley Bridge training ground, McMahon said: "I really enjoyed myself on loan at the club towards the end of last season but I know I still have to work hard and try to impress like any other new signing.
"I had a chat with the manager at the end of the season and he was saying that he wanted me to stay. I'm glad the move is all completed now and I can get ready for the season ahead.
"The manager has put his faith in me and I want to repay him now.
"Everyone knows about the size of this club, the fanbase, the number of season tickets sold - and I want to try and be part of something special here.
"There is also a great set of lads here as well. The lads and the staff all stick together, and that played a part in me deciding to come back to the club."
Parkinson added: "Tony is a very good professional and a leader. He will also give us a number of different options."
As City fans will be aware of already given his recent stint at the club, McMahon, who captained Blackpool on numerous occasions last season, can feature in a number of positions on the pitch including right back and central midfield.
He is also handy at dead-ball situations and has a number of goals and assists to his name from set-pieces during his career.
He has been capped at England under 16, 17 and 19 level and has played previously in the Premier League on numerous occasions with Middlesbrough.
McMahon featured eight times for City towards the back end of the previous campaign, scoring once in the 3-0 win at Doncaster Rovers on Good Friday.
As he did for the Bantams last season, City's latest signing is expected to wear his favoured squad number 29 for the 2015/2016 campaign.