// the find
OmniSharp/csharp-language-server-protocol
Language Server Protocol in C#
The C# implementation of both the Language Server Protocol and Debug Adapter Protocol, used as the foundation of OmniSharp itself. If you're building a language server or debug adapter in .NET, this is the library you'd reach for — it handles the JSON-RPC plumbing, type system, capability negotiation, and lifecycle so you only write the handler logic.
The source generator package (JsonRpc.Generators) is the real differentiator: it generates handler registration extensions, typed delegate wrappers, and request method boilerplate from attributes, cutting the per-feature ceremony way down. Covers both LSP and DAP under one dependency graph with consistent patterns, which matters when you're building tooling that needs both. Ships dedicated testing packages with test base classes for integration-testing your handlers against a real in-process server, not mocks. Fits naturally into Microsoft.Extensions.* hosting: DI, logging, and configuration all work the way you'd expect in a .NET Worker Service or hosted app.
MediatR is baked in as a core architectural piece, not an optional add-on — if you have opinions about mediator-pattern overhead or already use a different request pipeline, you're working around it, not with it. The README is essentially a placeholder ('git clone, build.ps1, profit') and the actual docs are sparse markdown files in /docs that explain concepts but skip the getting-started path most people need. DryIoc is vendored directly inside the JsonRpc project rather than taken as a package dependency, which creates version conflict headaches when your host already depends on DryIoc. The 636 stars significantly underrepresent actual usage — it's consumed transitively through OmniSharp and Ionide — so issues and community answers are sparse; you'll frequently be reading source code instead of finding an answer online.