The point is that you don’t need common protocol. A bunch of language-specific protocols would have worked! It’s interesting to ask why that didn’t happen.
But in fact that did happen. Several languages started to implement “editor neutral” code analysis and refactoring. That worked, for the most popular editor/language combinations, but not as a general solution because of N*M.
We can and do have both. LSP is a lowest-common-denominator protocol. Several languages have more-powerful language-specific protocols that can be wrapped with LSP, at the cost of some advanced features.