As discussed with @koppor, tools like mattn/efm-langserver can be used to turn any linter that produces output in Vim's quickfix errorformat into a language server:
Details
@startuml
left to right direction
class explcheck
class "efm-langserver"
circle errorformat
circle lsp
explcheck -- errorformat
errorformat )-- "efm-langserver"
"efm-langserver" -- lsp
@enduml

We should document this, initially at least in our TUG 2025 talk and paper.