Yes its expected, LSPs are compilers (or interpreters in Pythons case, bless its little cotton socks), they need the compiler info, for C/C++ particularly the -I options. But thats a problem with the language and implementations, not the tool.
Just a small note - we are all, me including, a bit influenced by how `clangd` works but other servers may work differently. LSP is just the protocol and how exactly the server implements it is up to the server. So there may be a full parser behind it, but there may also be a set of simple regular expressions. Or the whole server may be just a code formatter and not to implement any other functionality.