Immorality is subjective. McKinsey is hired to (maximize|minimize) some objective. The fact someone didn’t want to work on the Purdue Pharma opioid marketing project when McKinsey employs a fungible pool of thousands of consultants means nothing.
Just because you choose not to work on a project due to personal reasons doesn’t free you of the unethical or immoral things the company you chose to work for does. And if you actually believe it does then it only supports the argument that these firms have found a way to act immorally in the pursuit of fees while making sure their staff don’t become too demoralized. They know there will always be someone to take on the work because the workforce is highly fungible so they don’t care either way, and if anything makes them look compassionate to their employees which benefits them.
Conversely, just because a few people do a bad thing does not characterize the moral stature of a large decentralized organization. Sometimes, bad decisions are made. That doesn’t mean the day to day is one that makes the world worse, both in fact and in personal perspective.
The Purdue thing was really bad. That’s acknowledged. Nobody is happy about it. Plenty of work has been done pro bono to combat the opioid crisis even prior to the realization of what had happened. I have worked at other places and I legit feel comfortable saying that relative to most American businesses, the firm is not an evil purely profit maximizing machine. Most people’s day to day is benign and well intended and you can just straight up talk to people about it because people are interested in such things.
tldr: while I fully recognize bad things have happened I would say that on average McKinsey is more morally self conscious than your average us company. Take it as you will