Every contract carries with it the risk of a player getting injured, or having diminished productivity. It's the challenge of the front office to assess the likelihood of any player's future level of performance. McCann was considered a pretty good prospect, out of college, and has made some significant adjustments to his hitting approach, this season. Some of us wanted to extend him earlier. Every month that he continues to excel, establishes his bonafides. Now he has been selected to the All Star team. It would probably cost more to extend him now, than it would have just a month ago.
In the final analysis, perhaps the Sox just need to determine if they think they would like to have him continue as a key member of their future core. If so, then they should be trying to extend him beyond next year. I'm sure that Hahn would point to his unsustainable BABIP, as part of his negotiating tactics. If the front office deems the cost too high, they may not be able to sign him. I personally don't think that it's too early to try.
For my part, it's his catching ability and leadership qualities, that intrigue me the most. He doesn't have to be the team's highest average hitter to be a solid part of the anticipated contending roster. If he can hit around .280, with a .350 OBP and respectable power, that would be enough to plug the hole, at one the most important key positions. Again, as a fan, I consider him a "keeper" and I'd love to have him be the primary catcher to handle the Sox young pitching staff. When Kopech, Cease, Giolito, Lopez and whomever else they add to the rotation, are on the mound, McCann is the guy I want to be calling the pitches. Collins may develop into a good catcher, and having McCann as his mentor, probably increases the prospect of that happening. However, I would be very surprised if Zack will be able to provide what James does, any time soon. And remember, that window of contention should be opening soon, in fact just about the same time that McCann will become a free agent.