it's actually easier to debug as a web server since debugging an express server is pretty common in vscode. it's also easier to test standalone since its just testing a normal web server.
for custom json rpc, i spent only a little time looking into it but didn't find a builtin way of using the vscode-language-server/client to send custom messages without monkey patching.