I think he needs to be nerfed.
Sure there is counterplay, but a champion doesn't need to be overpowered to get a nerf.
Let's look at the facts:
He is insanely powerful at close range. He kills tanks, destroys very agile supports like lucio and can hold his own against every other hero.
But the reason to be nerfed lies elsewhere in my opinion. He is too strong at every range to be this strong in close range if that makes sense to you. If he can hold his own against heroes like Soldier or Pharah at midrange, he shouldn't be able to completely demolish them (and every other hero) at close range. You don't need to look at his counterplay, you need to compare him and his strengths and weaknesses to other heroes who fulfill a similiar role.
He is very strong in every Teamcomp and on every map (attack/defense).
He is the only offense hero that can destroy tanks in meleerange, where they are in their comfort zone.
He is the best offense hero to protect his support (mercy).
He is strong on every skill-level (His Ult and Flashbang/Rightclick Combo are easy to use in beginner/casual games and his very accurate left click give pro players a high skill ceiling. In every competitive game, you will see 1 or even 2 mccrees on each side.)
His mobility is bad, but is it really bad enough to make him so strong? you dont need high mobility, since you have a Team that compensates for it. Standing behind reinhardt, speed from lucio and the ability to "just kill instead of running away" are more than enough.
Blizzard needs to balance heroes while expecting a strong team comp around them. You cant balance a hero for 5 offense 1 defense comps or things like that.