Every tool advertises a title plus `readOnlyHint`, `destructiveHint`, `openWorldHint` and `idempotentHint`, so a client can see at a glance what it is dealing with instead of guessing. `tools/list` is cacheable with an advertised TTL and a deterministic order, which matters when you are carrying 36 tool definitions. It speaks protocol revision 2026-07-28 and negotiates down for older clients.
An MCP server that introspects compiled .NET assemblies so a model can answer questions about your code from metadata rather than guesswork: exact signatures, real inheritance chains, the attributes actually applied, and what a method calls at the IL level.
- Assemblies found and analysed — `AnalyzeAssembly`, `GetAssemblyInfo`, `FindAssemblyByClassName`, `FindAssemblyByFileName`, `FindAssemblyByNugetPackage` which resolves a DLL from the local NuGet cache by package id
- Type introspection — `GetTypesFromAssembly`, `AnalyzeType`, `GetTypeInfo`, `GetTypeHierarchy`, `GetGenericTypeInfo`, `GetTypeAttributes`, `GetNestedTypes`
- Members filtered and paginated — `GetAllTypeMembers`, `GetTypeMethods`, `GetTypeProperties`, `GetTypeFields`, `GetTypeEvents`, `GetTypeConstructors`, `AnalyzeMethod`
- A member searched by name fragment across a whole assembly when you do not know its declaring type — `SearchMembers`, filterable by `memberKinds`
- Reverse lookups — `FindImplementationsOf`, `FindMethodsReturning`, `FindExtensionMethodsFor`, `FindReferencesTo`, with open-generic matching supported
- IL analysis — `GetMethodCalls` reads a method's body to list what it calls and which fields it touches, the question signature-level tools cannot answer
- XML documentation extracted for types and members — `GetXmlDocsForType`, `GetXmlDocsForMember`; solutions and projects parsed — `AnalyzeSolution`, `AnalyzeProject`, `GetProjectOutputPaths`
- Tool names in `snake_case` for clients — `GetTypeMethods` is called as `get_type_methods`
Install the global tool with `dotnet tool install -g Sherlock.MCP.Server`, which adds `sherlock-mcp` to your PATH, then point the client at the `sherlock-mcp` command over stdio — no arguments needed, the server self-registers its tools. Version 2.13.0. During development you can run it from source with `dotnet run --project src/server/Sherlock.MCP.Server.csproj`.
One command — dotnet tool install -g Sherlock.MCP.Server
