MCP server that uses reflection to provide LLM's with knowledger about dotnet classes, their members and their signatures
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Mature repo (>1y old)
- ✓Documented (README)
git clone https://github.com/jcucci/dotnet-sherlock-mcpMCP Servers overview
# Sherlock MCP for .NET
**Sherlock MCP for .NET** is a comprehensive Model Context Protocol (MCP) server that provides deep introspection capabilities for .NET assemblies. It enables Language Learning Models (LLMs) to analyze and understand your .NET code with precision, delivering accurate and context-aware responses for complex development scenarios.
This tool is essential for developers who want to harness LLM capabilities for:
* **Deep codebase analysis** - Understanding complex .NET architectures and dependencies
* **Precise type information** - Getting detailed metadata about types, members, and their signatures
* **Automated documentation** - Extracting and utilizing XML documentation and attributes
* **Custom tooling** - Building sophisticated tools that interact with .NET assemblies
* **Code generation** - Creating accurate code based on existing type structures
## Key Features
* **Comprehensive MCP Server**: Provides 40 specialized tools for .NET assembly analysis, with an optional 20-tool `core` profile
* **Advanced Assembly Introspection**: Deep reflection-based analysis of types, members, and metadata
* **Rich Member Analysis**: Detailed inspection of methods, properties, fields, events, and constructors
* **Smart Filtering & Pagination**: Advanced filtering by name/attributes with efficient pagination for large datasets
* **XML Documentation Integration**: Automatic extraction of summary, parameters, returns, and remarks
* **Performance Optimized**: Caching, pagination, and memory-efficient processing
* **Stable JSON API**: Consistent envelopes with versioning and structured error codes
* **.NET 9.0 Native**: Built on the latest .NET platform with modern C# features
* **Project Integration**: Solution and project file analysis with dependency resolution
* **Workflow Prompts**: `explore_package`, `explain_type` and `who_calls` prompts give one-click entry points into common analysis workflows
* **Current MCP SDK**: Built on `ModelContextProtocol` 2.1.0 (GA)
* **Current MCP Specification**: Speaks protocol revision `2026-07-28`, and negotiates down automatically for clients on earlier revisions
## What's New in 2.14.0
- **Claude Code plugin**: `/plugin marketplace add jcucci/dotnet-sherlock-mcp` and `/plugin install sherlock@dotnet-sherlock-mcp` install the server plus a skill that teaches agents the Sherlock workflow. See [Claude Code plugin](#claude-code-plugin).
- **`get_type_members` and tool profiles**: one paginated, filterable tool lists every member kind, and `--profile core` / `SHERLOCK_TOOL_PROFILE=core` trims the surface to the essential tools. The per-kind member tools are deprecated.
- **Structured output and error guidance**: the core browsing tools publish an `outputSchema` and return `structuredContent`, and failed calls carry `isError: true` with did-you-mean candidates and fix-it suggestions.
- **Cancellation, progress and elicitation**: long scans can be cancelled and report progress, and an ambiguous simple type name prompts the client to choose. See `CHANGELOG.md` for full details.
## Installation
### Run with dnx (.NET 10 SDK)
With the .NET 10 SDK, `dnx` downloads the package from NuGet and runs it directly — no install step:
```bash
dnx -v q --yes Sherlock.MCP.Server@2.14.0
```
`--yes` skips the interactive confirmation prompt, which an MCP client launching the server over stdio can't answer. `-v q` stops `dnx` from printing a "Skipping NuGet package signature verification." notice to stdout the first time it downloads a version, which would otherwise corrupt the MCP stream and fail that first connection. Both are `dnx` options, so they must come before the package id; anything after it is passed to the server. Pinning the version keeps launches reproducible; bump it when you want to upgrade. The package is published with the `McpServer` package type, so it is also listed as an MCP server on NuGet.org.
### Install as a global tool
On any supported SDK (.NET 8 or later), install the global tool from NuGet (adds `sherlock-mcp` to your PATH):
```bash
dotnet tool install -g Sherlock.MCP.Server
```
Alternatively, during development you can run the server locally:
```bash
dotnet run --project src/server/Sherlock.MCP.Server.csproj
```
## Configure Your MCP Client
Sherlock runs as a standard MCP server that communicates over stdio.
### Claude Code plugin
This repository is also a Claude Code plugin marketplace. The `sherlock` plugin bundles the server (launched with `dnx`, so it needs the .NET 10 SDK) and a skill that teaches the agent the locate → orient → drill-in → relationships workflow:
```text
/plugin marketplace add jcucci/dotnet-sherlock-mcp
/plugin install sherlock@dotnet-sherlock-mcp
```
The plugin starts the server with the `core` [tool profile](#tool-profiles), which matches the tools the skill covers. To expose every tool, set `SHERLOCK_TOOL_PROFILE=full` in the environment Claude Code is launched from.
Each user runs these commands once; restart Claude Code (or run `/reload-plugins`) afterwards. To pick up a new release, run `/plugin marketplace update dotnet-sherlock-mcp`. If you previously registered Sherlock with `claude mcp add`, remove that entry (`claude mcp remove sherlock`) so the tools aren't loaded twice.
#### Team setup
To offer the plugin to everyone working in a repository, commit the following to that repository's `.claude/settings.json`. Claude Code prompts each teammate to install it when they trust the folder, so nobody has to type the commands above:
```json
{
"extraKnownMarketplaces": {
"dotnet-sherlock-mcp": {
"source": {
"source": "github",
"repo": "jcucci/dotnet-sherlock-mcp"
}
}
},
"enabledPlugins": {
"sherlock@dotnet-sherlock-mcp": true
}
}
```
Teammates still need the .NET 10 SDK on their `PATH` for `dnx`.
### Using dnx
- Claude Code:
```bash
claude mcp add sherlock -- dnx -v q --yes Sherlock.MCP.Server@2.14.0
```
- VS Code (`.vscode/mcp.json`):
```json
{
"servers": {
"sherlock": {
"type": "stdio",
"command": "dnx",
"args": ["-v", "q", "--yes", "Sherlock.MCP.Server@2.14.0"]
}
}
}
```
### Using the global tool
- Cursor: Settings → MCP / Custom tools → Add tool → Command: `sherlock-mcp`
- Claude Desktop / other MCP clients: Add a server entry pointing to the `sherlock-mcp` command. Example JSON entry (refer to your client’s docs for exact file location/format):
```jsonc
{
"servers": {
"sherlock": {
"command": "sherlock-mcp"
}
}
}
```
No arguments are required. The server self-registers all tools when launched.
### Tool profiles
Large tool lists cost agents context and discoverability (Claude Code switches to deferred Tool Search once tool descriptions grow past roughly 10% of the context window). Sherlock can start with a smaller surface:
| Profile | Tools | Contents |
|---|---|---|
| `full` (default) | 40 | Every tool, including the deprecated per-kind member tools |
| `core` | 20 | Discovery (`find_assembly_by_class_name`, `find_assembly_by_file_name`, `find_assembly_by_nuget_package`, `get_project_output_paths`, `open_assembly`), orientation (`get_assembly_info`, `get_types_from_assembly`, `get_type_info`, `get_type_hierarchy`), members and docs (`get_type_members`, `search_members`, `analyze_method`, `get_xml_docs_for_type`, `get_xml_docs_for_member`) and relationships (`find_implementations_of`, `find_methods_returning`, `find_extension_methods_for`, `find_references_to`, `get_method_calls`) and decompilation (`decompile_member`) |
Select a profile with the `--profile` argument or the `SHERLOCK_TOOL_PROFILE` environment variable (the argument wins). An unknown profile name stops the server with an error.
```jsonc
{
"servers": {
"sherlock": {
"command": "sherlock-mcp",
"args": ["--profile", "core"]
// or: "env": { "SHERLOCK_TOOL_PROFILE": "core" }
}
}
}
```
## Auto-Configure for .NET Projects
**You usually don't need to paste anything.** Sherlock ships its usage guidance in the MCP `instructions` field returned at initialize, and most MCP clients (including Claude Code) surface that to the agent automatically — so the guidance stays correct and versioned with the package, with no copy-paste to maintain.
The snippets below are **optional reinforcement**. Keep them short and principle-based rather than enumerating tool names and workflows: a static list pasted into your repo will drift as Sherlock's tools evolve, whereas the tools' own descriptions (and the server `instructions`) always match the version you're running.
> Tool names are exposed in `snake_case` (`get_type_members`, `search_members`, …); argument names stay camelCase (`projection`, `nameContains`).
### Claude Code (CLAUDE.md)
If you installed the [Claude Code plugin](#claude-code-plugin), its skill already covers this. Otherwise, you can add a short, optional pointer to your project's `CLAUDE.md`:
```markdown
## .NET Assembly Analysis
Use the Sherlock MCP tools (`get_type_members`, `search_members`, …) for .NET type/assembly
questions instead of guessing. Locate DLLs with the `find_assembly_by_*` / `get_project_output_paths`
tools rather than hardcoding bin paths. Start lean — `search_members` or `get_types_from_assembly`,
then drill in — and pass `projection='full'` only when you need parameters/attributes/modifiers.
The tools' own descriptions cover the specifics.
```
### Cursor (.cursor/rules)
The single-file `.cursorrules` format is **deprecated** (and silently ignored in Cursor's Agent mode).
Add a Project Rule at `.cursor/rules/sherlock.mdc` instead:
```mdc
---
description: Use Sherlock MCP for .NET assembly/type analysis
alwaysApply: true
---
- Prefer the Sherlock MCP tools (snake_case, e.g. `get_type_members`, `search_members`) over guessing about .NET APIs.
- Find DLLs with `find_assembly_by_*` / `get_project_output_paths`; don't hardcode `bin/Debug/<tfm>/*.dllWhat people ask about dotnet-sherlock-mcp
What is jcucci/dotnet-sherlock-mcp?
+
jcucci/dotnet-sherlock-mcp is mcp servers for the Claude AI ecosystem. MCP server that uses reflection to provide LLM's with knowledger about dotnet classes, their members and their signatures It has 8 GitHub stars and its last recorded update is dated 2026-10-01.
How do I install dotnet-sherlock-mcp?
+
You can install dotnet-sherlock-mcp by cloning the repository (https://github.com/jcucci/dotnet-sherlock-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is jcucci/dotnet-sherlock-mcp safe to use?
+
Our security agent has analyzed jcucci/dotnet-sherlock-mcp and assigned a Trust Score of 92/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains jcucci/dotnet-sherlock-mcp?
+
jcucci/dotnet-sherlock-mcp is maintained by jcucci. The last recorded GitHub activity is dated 2026-10-01, with 13 open issues.
Are there alternatives to dotnet-sherlock-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy dotnet-sherlock-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/jcucci-dotnet-sherlock-mcp)<a href="https://claudewave.com/repo/jcucci-dotnet-sherlock-mcp"><img src="https://claudewave.com/api/badge/jcucci-dotnet-sherlock-mcp" alt="Featured on ClaudeWave: jcucci/dotnet-sherlock-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.