# dotnet-sherlock-mcp

An MCP server that reads .NET assemblies: types, members, dependencies, source via PDB. Useful when the agent should answer from real code instead of guessing.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 9
- Author: jcucci
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/jcucci/dotnet-sherlock-mcp
- Updated: 2026-10-05
- HTML: https://affpapa.org/en/nevibecode/mcp/dotnet-sherlock-mcp

## What it does

The server speaks stdio and hands the agent reflection tools over .NET assemblies: type and member inspection, filtering by name or attribute, paging for large result sets, XML documentation extraction. Separate tools pull a member's original source through PDB or Source Link, decompile to C#, and diff the API surface of two assembly or package versions while flagging breaking changes.

There are 47 tools, with an optional `core` profile of 24 whose remaining tools load in groups on demand. The Claude Code plugin launches the server in that profile because its skill covers the same set; widen it with `load_tools` or by setting `SHERLOCK_TOOL_PROFILE=full`. Prompts `explore_package`, `explain_type` and `who_calls` serve as ready entry points for common workflows.

Running through `dnx` needs the .NET 10 SDK, while the global tool works on .NET 8 and later. Target frameworks are .NET 8, 9 and 10. If Sherlock was already registered with `claude mcp add`, drop that entry first, otherwise the tools load twice.

## Requirements
- Environment variables: `SHERLOCK_TOOL_PROFILE`, `SHERLOCK_SOURCE_FETCH` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Install**
- The MCP registry has no launch command for it: see the repository README

## When to use it
- figure out what a third-party .NET assembly contains
- trace every call site of a method
- diff two package versions and spot breaking changes
- read a member's source without cloning the repo
- list ASP.NET Core endpoints and DI registrations

## Example prompts
- Open `MyApp.dll` and list its public types
- Who calls `ProcessOrder` in this assembly?
- Compare the API surface of both package versions and tell me what breaks

## Similar
- [MCP Toolbox for Databases](https://affpapa.org/en/nevibecode/mcp/googleapis-mcp-toolbox-for-databases.md) — MCP server · ★ 16717
- [PostHog MCP Server](https://affpapa.org/en/nevibecode/mcp/posthog-mcp-server.md) — MCP server · ★ 40409
- [OpenWork MCP Gateway](https://affpapa.org/en/nevibecode/mcp/openwork-mcp-gateway.md) — MCP server · ★ 24242
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18727
- [Nhost](https://affpapa.org/en/nevibecode/mcp/nhost.md) — MCP server · ★ 9366
- [basebalance.cloud — x402 RPC & MCP gateway](https://affpapa.org/en/nevibecode/mcp/basebalancecloud-x402-rpc-mcp-gateway.md) — MCP server · ★ 7506

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
