io.github.jcucci/dotnet-sherlock-mcp
NUGET · SHERLOCK.MCP.SERVER · SCANNED SEP 20
.NET assembly introspection MCP server with advanced reflection and type analysis capabilities
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 44 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability71
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6461 tokens (~179/item across 36 items; 36 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 36 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the io.github.jcucci/dotnet-sherlock-mcp server?
io.github.jcucci/dotnet-sherlock-mcp runs locally as a NuGet package, launched with dnx Sherlock.MCP.Server@2.13.0 --yes. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
nuget · Sherlock.MCP.Server
claude mcp add jcucci-dotnet-sherlock-mcp -- dnx Sherlock.MCP.Server@2.13.0 --yes
{
"mcpServers": {
"jcucci-dotnet-sherlock-mcp": {
"command": "dnx",
"args": [
"Sherlock.MCP.Server@2.13.0",
"--yes"
]
}
}
} {
"servers": {
"jcucci-dotnet-sherlock-mcp": {
"command": "dnx",
"args": [
"Sherlock.MCP.Server@2.13.0",
"--yes"
]
}
}
} codex mcp add jcucci-dotnet-sherlock-mcp -- dnx Sherlock.MCP.Server@2.13.0 --yes
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jcucci-dotnet-sherlock-mcp": {
"type": "local",
"command": [
"dnx",
"Sherlock.MCP.Server@2.13.0",
"--yes"
],
"enabled": true
}
}
} mcp_servers:
jcucci-dotnet-sherlock-mcp:
command: "dnx"
args: ["Sherlock.MCP.Server@2.13.0", "--yes"] {
"McpServers": {
"jcucci-dotnet-sherlock-mcp": {
"Transport": "stdio",
"Command": "dnx",
"Arguments": [
"Sherlock.MCP.Server@2.13.0",
"--yes"
]
}
}
} {
"mcpServers": {
"jcucci-dotnet-sherlock-mcp": {
"command": "dnx",
"args": [
"Sherlock.MCP.Server@2.13.0",
"--yes"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 −3
- Stability: pass → 0.77 functional
- 13 Sept 26 +1
- Stability: 0.97 → pass security
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 −3
- Stability: pass → 0.80 functional
- 6 Sept 26 +1
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed nuget/Sherlock.MCP.Server@2.13.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | nuget |
| Reason | Signature present, unreadable |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_assembly Analyze Assembly ~117
Lists all public types in an assembly with metadata summary. Returns totalTypeCount for pagination planning. Use maxItems=25 for large assemblies (100+ types). Follow with GetTypeInfo for specific types.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| continuationToken | string|null | – | Continuation token for paging |
| maxItems | integer|null | – | Maximum number of types to return (default: 50) |
| skip | integer|null | – | Items to skip (paging) |
No output schema declared.
No examples provided.
analyze_method Analyze Method ~104
Gets detailed info about a specific method including all overloads, parameters, attributes, and return types. Use after finding method via GetTypeMethods. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| methodName | string | yes | Name of the method to analyze |
| typeName | string | yes | Type name containing the method. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
analyze_project Analyze Project ~60
Parses a project file (.csproj/.vbproj/.fsproj) returning target framework, package refs, project refs, and output paths. Use GetProjectOutputPaths to find compiled assemblies.
| Name | Type | Req | Description |
|---|---|---|---|
| projectFilePath | string | yes | Path to the project file |
No output schema declared.
No examples provided.
analyze_solution Analyze Solution ~53
Parses a .sln file and lists all contained projects with paths. Use as entry point to discover project structure before AnalyzeProject. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| solutionFilePath | string | yes | Path to the .sln file |
No output schema declared.
No examples provided.
analyze_type Analyze Type ~214
Gets type metadata with paginated members (constructors, methods, properties, fields). Returns member totals for pagination planning. Use include* flags to filter member categories. Consider GetTypeMethods etc. for targeted queries.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| continuationToken | string|null | – | Continuation token for paging |
| includeConstructors | boolean | – | Include constructors in results (default: true) |
| includeFields | boolean | – | Include fields in results (default: true) |
| includeMethods | boolean | – | Include methods in results (default: true) |
| includeProperties | boolean | – | Include properties in results (default: true) |
| maxItems | integer|null | – | Maximum number of members to return per category (default: 25) |
| skip | integer|null | – | Items to skip (paging) |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
find_assembly_by_class_name Find Assembly by Class Name ~88
Finds assembly path by searching for a class name in bin/Debug, bin/Release folders. Use when you know the class but not the assembly path. Returns path for use with other tools.
| Name | Type | Req | Description |
|---|---|---|---|
| className | string | yes | The class name to search for (e.g., 'MyClass'). |
| workingDirectory | string | yes | The root directory to start the search from. |
No output schema declared.
No examples provided.
find_assembly_by_file_name Find Assembly by File Name ~82
Finds assembly path by DLL filename search. Use when you know the assembly name but not full path. Returns path for use with other tools.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyFileName | string | yes | The file name of the assembly to search for (e.g., 'MyProject.dll'). |
| workingDirectory | string | yes | The root directory to start the search from. |
No output schema declared.
No examples provided.
find_assembly_by_nuget_package Find Assembly by NuGet Package ~157
Finds an assembly in the local NuGet cache by package id. Probes ~/.nuget/packages (or NUGET_PACKAGES env var). Use when you know the package id/version but not the DLL path. Picks highest version and best TFM when omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| packageId | string | yes | The NuGet package id (case-insensitive, e.g., 'Newtonsoft.Json'). |
| tfm | string|null | – | Optional target framework moniker (e.g., 'net9.0'). If omitted, the best available TFM is picked. |
| version | string|null | – | Optional package version (e.g., '13.0.3'). If omitted, the highest available version is picked. |
No output schema declared.
No examples provided.
find_deps_json_dependencies Find deps.json Dependencies ~61
Parses deps.json from build output to list all runtime dependencies including transitive refs. Useful for understanding full dependency graph.
| Name | Type | Req | Description |
|---|---|---|---|
| configuration | string | – | Build configuration, default 'Debug' |
| projectFilePath | string | yes | Path to the project file |
No output schema declared.
No examples provided.
find_extension_methods_for Find Extension Methods For ~302
Finds extension methods that extend the given type, across one or more assemblies. Scans static classes for methods whose first ('this') parameter matches the target type. Returns a lean summary ({ declaringType, methodName, signature }) by default. Pass projection='full' for assemblyPath and extendedType. Open-generic match supported (e.g., 'IEnumerable<>' matches extensions on 'IEnumerable<T>').
| Name | Type | Req | Description |
|---|---|---|---|
| additionalAssemblies | array|null | – | Optional additional assembly paths to include in the search scope |
| assemblyPath | string | yes | Path to the primary .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type-name matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| includeNonPublic | boolean | – | Include non-public methods and types (default: false) |
| maxItems | integer|null | – | Maximum items to return (default: 50) |
| noCache | boolean | – | Bypass cache for this request |
| projection | string | – | Response shape. 'summary' (default, token-lean): { declaringType, methodName, signature }. 'full': adds assemblyPath, extendedType. |
| skip | integer|null | – | Items to skip (paging) |
| typeName | string | yes | Type to find extension methods for. Simple name, full name, or open-generic form accepted (e.g., 'IEnumerable<>'). |
No output schema declared.
No examples provided.
find_implementations_of Find Implementations Of ~318
Finds types that implement an interface or derive from a base type, across one or more assemblies. Returns a lean summary ({ typeFullName, kind }) by default. Pass projection='full' for matchedInterfaces[] and baseTypeChain[]. Matches by simple name, full name, or open-generic form (e.g., 'IEnumerable', 'IEnumerable<T>', 'IEnumerable<>', 'IEnumerable`1').
| Name | Type | Req | Description |
|---|---|---|---|
| additionalAssemblies | array|null | – | Optional additional assembly paths to include in the search scope |
| assemblyPath | string | yes | Path to the primary .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type-name matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| includeNonPublic | boolean | – | Include non-public types (default: false) |
| maxItems | integer|null | – | Maximum items to return (default: 50) |
| noCache | boolean | – | Bypass cache for this request |
| projection | string | – | Response shape. 'summary' (default, token-lean): { typeFullName, kind }. 'full': adds assemblyPath, matchedInterfaces[], baseTypeChain[]. |
| skip | integer|null | – | Items to skip (paging) |
| typeName | string | yes | Type name to find implementers of. Interface name (e.g., 'IDisposable') or base class name (e.g., 'Stream'). Simple name, full name, or generic variants accepted. |
No output schema declared.
No examples provided.
find_methods_returning Find Methods Returning ~281
Finds methods whose return type matches the given type, across one or more assemblies. Returns a lean summary ({ declaringType, methodName, signature }) by default. Pass projection='full' for assemblyPath, returnType, isStatic. Open-generic match supported (e.g., 'Snapshot<>' matches methods returning 'Snapshot<int>').
| Name | Type | Req | Description |
|---|---|---|---|
| additionalAssemblies | array|null | – | Optional additional assembly paths to include in the search scope |
| assemblyPath | string | yes | Path to the primary .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type-name matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| includeNonPublic | boolean | – | Include non-public methods and types (default: false) |
| maxItems | integer|null | – | Maximum items to return (default: 50) |
| noCache | boolean | – | Bypass cache for this request |
| projection | string | – | Response shape. 'summary' (default, token-lean): { declaringType, methodName, signature }. 'full': adds assemblyPath, returnType, isStatic. |
| skip | integer|null | – | Items to skip (paging) |
| typeName | string | yes | Return type to search for. Simple name, full name, or open-generic form accepted. |
No output schema declared.
No examples provided.
find_references_to Find References To ~365
Finds all references to a type across one or more assemblies: base types, implemented interfaces, method returns/parameters, field/property/event types (recurses into generic arguments). With analysisDepth='il', also scans method bodies for inbound callers ('who calls into this type?'). Bounded sweep with hardCap to protect against runaway scans; check truncated=true. Returns lean summary by default; projection='full' adds assemblyPath, signature, dedupeKey.
| Name | Type | Req | Description |
|---|---|---|---|
| additionalAssemblies | array|null | – | Optional additional assembly paths to include in the search scope |
| analysisDepth | string | – | Analysis depth. 'signatures' (default): type usage in signatures and member declarations. 'il': additionally scan method bodies for inbound callers (referenceKind 'ilCall'/'ilFieldRead'/'ilFieldWrite… |
| assemblyPath | string | yes | Path to the primary .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type-name matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| includeNonPublic | boolean | – | Include non-public members and types (default: false) |
| maxItems | integer|null | – | Maximum items to return (default: 25) |
| noCache | boolean | – | Bypass cache for this request |
| projection | string | – | Response shape. 'summary' (default, token-lean): { declaringType, memberKind, memberName, referenceKind }. 'full': adds assemblyPath, signature, dedupeKey. |
| skip | integer|null | – | Items to skip (paging) |
| typeName | string | yes | Type to search references to. Simple name, full name, or open-generic form accepted. |
No output schema declared.
No examples provided.
get_all_type_members Get All Type Members ~185
Gets ALL members (methods, properties, fields, events, constructors) in one call. WARNING: Can produce very large responses for complex types. Consider using specific member tools (GetTypeMethods, GetTypeProperties) with filtering first for better efficiency.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| includeInstance | boolean | – | Include instance members (default: true) |
| includeNonPublic | boolean | – | Include non-public members (default: false) |
| includePublic | boolean | – | Include public members (default: true) |
| includeStatic | boolean | – | Include static members (default: true) |
| noCache | boolean | – | Bypass cache for this request |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
get_assembly_info Get Assembly Info ~95
Gets assembly-level metadata: identity/version, target framework, and referenced assemblies. Lightweight orientation tool — call before deep type analysis. Use projection='full' for all assembly-level attributes structurally.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| projection | string | – | Detail level: 'summary' (default, lean) or 'full' (adds all assembly attributes) |
No output schema declared.
No examples provided.
get_generic_type_info Get Generic Type Info ~72
Gets generic type parameters, constraints, and variance for generic types. Only useful for types where IsGenericType=true. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| typeName | string | yes | Type name to analyze. Prefer full name |
No output schema declared.
No examples provided.
get_member_attributes Get Member Attributes ~136
Gets custom attributes for a specific member (method, property, field, event, constructor). Returns attribute types and values. Use after identifying the member via GetTypeMethods or similar tools.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive matching (default: false) |
| memberKind | string | yes | Member kind: method|property|field|event|constructor |
| memberName | string | yes | Member name (for methods, the simple name; first match used) |
| typeName | string | yes | Type name. Prefer full name |
No output schema declared.
No examples provided.
get_method_calls Get Method Calls ~285
Analyzes a method's IL body to list what it calls and which fields it touches (the 'what does this method call?' question that signature-level tools can't answer). Aggregates across all overloads of the method name. Returns a lean summary by default (distinct target names); projection='full' adds per-call kind (call/callvirt/newobj/ldftn) and the source overload signature.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) that declares the method |
| caseSensitive | boolean | – | Case sensitive type-name matching (default: false) |
| includeNonPublic | boolean | – | Include non-public methods and the non-public declaring type (default: false) |
| methodName | string | yes | Method name to analyze. Use '.ctor' for instance constructors or '.cctor' for the static constructor. All overloads with this name are aggregated. |
| noCache | boolean | – | Bypass cache for this request |
| projection | string | – | Response shape. 'summary' (default, token-lean): distinct target names only. 'full': adds { target, kind, sourceMethod } per call and { target, access, sourceMethod } per field access. |
| typeName | string | yes | Type that declares the method. Simple name, full name, or open-generic form accepted. |
No output schema declared.
No examples provided.
get_nested_types Get Nested Types ~70
Gets nested/inner types declared within a type. Use for types with inner classes, structs, or enums. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| typeName | string | yes | Type name to analyze. Prefer full name |
No output schema declared.
No examples provided.
get_parameter_attributes Get Parameter Attributes ~115
Gets custom attributes for a specific parameter of a method or constructor. Use when you need to inspect parameter-level attributes like [FromBody], [Required], etc.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive matching (default: false) |
| methodName | string | yes | Method or constructor name |
| parameterIndex | integer | yes | Parameter index (0-based) |
| typeName | string | yes | Type name. Prefer full name |
No output schema declared.
No examples provided.
get_project_output_paths Get Project Output Paths ~67
Gets compiled assembly output paths for a project by configuration. Use to find DLL paths for assembly analysis tools. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| configuration | string|null | – | Build configuration (e.g., Debug/Release). Optional |
| projectFilePath | string | yes | Path to the project file |
No output schema declared.
No examples provided.
get_runtime_options Get Runtime Options ~34
Gets current runtime configuration (default page sizes, cache TTL, search roots). Use to understand current settings before UpdateRuntimeOptions.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_type_attributes Get Type Attributes ~72
Gets custom attributes declared on a type (e.g., [Serializable], [Obsolete]). Returns attribute types and values. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| typeName | string | yes | Type name to analyze. Prefer full name |
No output schema declared.
No examples provided.
get_type_constructors Get Type Constructors ~306
Gets constructors from a type with filtering and pagination. Returns parameter info and access modifiers. Most types have few constructors - use maxItems=30.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type/member matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| hasAttributeContains | string|null | – | Filter by attribute type contains (optional) |
| includeInstance | boolean | – | Include instance members (default: true) |
| includeNonPublic | boolean | – | Include non-public members (default: false) |
| includePublic | boolean | – | Include public members (default: true) |
| includeStatic | boolean | – | Include static members (default: true) |
| maxItems | integer|null | – | Maximum items to return (overrides take) |
| nameContains | string|null | – | Filter by name contains (optional) |
| noCache | boolean | – | Bypass cache for this request |
| skip | integer|null | – | Items to skip (paging) |
| sortBy | string | – | Sort by: name|access (default: name) |
| sortOrder | string | – | Sort order: asc|desc (default: asc) |
| take | integer|null | – | Items to take (paging) |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
get_type_events Get Type Events ~302
Gets events from a type with filtering and pagination. Returns event handler types and add/remove accessor info. Most types have few events.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type/member matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| hasAttributeContains | string|null | – | Filter by attribute type contains (optional) |
| includeInstance | boolean | – | Include instance members (default: true) |
| includeNonPublic | boolean | – | Include non-public members (default: false) |
| includePublic | boolean | – | Include public members (default: true) |
| includeStatic | boolean | – | Include static members (default: true) |
| maxItems | integer|null | – | Maximum items to return (overrides take) |
| nameContains | string|null | – | Filter by name contains (optional) |
| noCache | boolean | – | Bypass cache for this request |
| skip | integer|null | – | Items to skip (paging) |
| sortBy | string | – | Sort by: name|access (default: name) |
| sortOrder | string | – | Sort order: asc|desc (default: asc) |
| take | integer|null | – | Items to take (paging) |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
get_type_fields Get Type Fields ~310
Gets fields from a type with filtering and pagination. Returns const/readonly/volatile info and constant values. Fields are compact - can use larger maxItems (75+).
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type/member matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| hasAttributeContains | string|null | – | Filter by attribute type contains (optional) |
| includeInstance | boolean | – | Include instance members (default: true) |
| includeNonPublic | boolean | – | Include non-public members (default: false) |
| includePublic | boolean | – | Include public members (default: true) |
| includeStatic | boolean | – | Include static members (default: true) |
| maxItems | integer|null | – | Maximum items to return (overrides take) |
| nameContains | string|null | – | Filter by name contains (optional) |
| noCache | boolean | – | Bypass cache for this request |
| skip | integer|null | – | Items to skip (paging) |
| sortBy | string | – | Sort by: name|access (default: name) |
| sortOrder | string | – | Sort order: asc|desc (default: asc) |
| take | integer|null | – | Items to take (paging) |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
get_type_hierarchy Get Type Hierarchy ~121
Gets full inheritance chain and implemented interfaces for a type. Use to understand type relationships and find inherited members. Lightweight response. By default derivedTypes is null with a note - pass additionalAssemblies to compute derived/implementing types via the same scan as FindImplementationsOf.
| Name | Type | Req | Description |
|---|---|---|---|
| additionalAssemblies | array|null | – | Optional additional assembly paths to include in the search scope |
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| typeName | string | yes | Type name to analyze. Prefer full name |
No output schema declared.
No examples provided.
get_type_info Get Type Info ~90
Gets detailed metadata for a single type including accessibility, inheritance, interfaces, and member counts. Lightweight response - use as entry point before exploring members with GetTypeMethods etc.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.Collections.Generic.List`1') |
No output schema declared.
No examples provided.
get_type_methods Get Type Methods ~442
Gets methods from a type with filtering and pagination. Returns a lean summary ({ name, signature }) by default - the signature already encodes return type, parameters, and modifiers in C# form. Pass projection='full' when you need structured fields (parameters[], attributes, returnType, isStatic/Virtual/Abstract/..., genericTypeParameters); prefer AnalyzeMethod for one method. Large types may have 100+ methods - use nameContains filter or maxItems=25 for efficiency.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type/member matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| hasAttributeContains | string|null | – | Filter by attribute type contains (optional) |
| includeInstance | boolean | – | Include instance members (default: true) |
| includeNonPublic | boolean | – | Include non-public members (default: false) |
| includePublic | boolean | – | Include public members (default: true) |
| includeStatic | boolean | – | Include static members (default: true) |
| maxItems | integer|null | – | Maximum items to return (overrides take) |
| nameContains | string|null | – | Filter by name contains (optional) |
| noCache | boolean | – | Bypass cache for this request |
| projection | string | – | Response shape. 'summary' (default, token-lean): { name, signature } only - the C# signature already carries return type, parameters, and modifiers. 'full': adds parameters[], attributes, returnType,… |
| skip | integer|null | – | Items to skip (paging) |
| sortBy | string | – | Sort by: name|access (default: name) |
| sortOrder | string | – | Sort order: asc|desc (default: asc) |
| take | integer|null | – | Items to take (paging) |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
get_type_properties Get Type Properties ~310
Gets properties from a type with filtering and pagination. Returns getter/setter info, indexers, and access modifiers. Prefer over GetAllTypeMembers when only properties needed.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive type/member matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| hasAttributeContains | string|null | – | Filter by attribute type contains (optional) |
| includeInstance | boolean | – | Include instance members (default: true) |
| includeNonPublic | boolean | – | Include non-public members (default: false) |
| includePublic | boolean | – | Include public members (default: true) |
| includeStatic | boolean | – | Include static members (default: true) |
| maxItems | integer|null | – | Maximum items to return (overrides take) |
| nameContains | string|null | – | Filter by name contains (optional) |
| noCache | boolean | – | Bypass cache for this request |
| skip | integer|null | – | Items to skip (paging) |
| sortBy | string | – | Sort by: name|access (default: name) |
| sortOrder | string | – | Sort order: asc|desc (default: asc) |
| take | integer|null | – | Items to take (paging) |
| typeName | string | yes | Type name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted |
No output schema declared.
No examples provided.
get_types_from_assembly Get Types from Assembly ~281
Lists public types from an assembly. Returns a lean summary ({ FullName, Namespace, Kind }) by default - use this to browse or search large assemblies. Pass projection='full' when you need attributes, inheritance, interfaces, generic params, and nested types; prefer GetTypeInfo for a single type instead. Returns totalTypeCount for pagination planning; use maxItems=25 for very large assemblies.
| Name | Type | Req | Description |
|---|---|---|---|
| additionalAssemblies | array|null | – | Optional paths to dependency assemblies (.dll) to help resolve types. Only needed when types fail to resolve and the assembly's dependencies are not next to it or in the NuGet cache - e.g. point at s… |
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| continuationToken | string|null | – | Continuation token for paging |
| maxItems | integer|null | – | Maximum number of types to return (default: 50) |
| projection | string | – | Response shape. 'summary' (default, token-lean): { FullName, Namespace, Kind } only - use for browsing/searching. 'full': adds attributes, base type, interfaces, generic params, nested types - use on… |
| skip | integer|null | – | Items to skip (paging) |
No output schema declared.
No examples provided.
get_xml_docs_for_member Get XML Docs for Member ~112
Gets XML documentation (summary, params, returns, exceptions) for a member from adjacent .xml file. Requires XML docs to be generated during build. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive matching (default: false) |
| memberName | string | yes | Member name (simple; if overloaded, first match used) |
| typeName | string | yes | Type name. Prefer full name |
No output schema declared.
No examples provided.
get_xml_docs_for_type Get XML Docs for Type ~91
Gets XML documentation (summary, remarks, examples) for a type from adjacent .xml file. Requires XML docs to be generated during build. Lightweight response.
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive matching (default: false) |
| typeName | string | yes | Type name. Prefer full name |
No output schema declared.
No examples provided.
resolve_package_references Resolve Package References ~68
Resolves NuGet package references to local assembly paths from NuGet cache. Use packageName filter to find specific packages. Returns paths for assembly analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| packageName | string|null | – | Optional package name to filter |
| projectFilePath | string | yes | Path to the project file |
No output schema declared.
No examples provided.
search_members Search Members ~263
Searches an assembly for members whose name contains a fragment, without needing to know the declaring type first. Answers the inverse of GetTypeMethods/Properties (e.g., 'where is ParseConnectionString defined?'). Each hit is { declaringType, memberKind, name, signature }; the searched assemblyPath is echoed once at the top level. Filter by memberKinds (csv: method|property|field|event|type).
| Name | Type | Req | Description |
|---|---|---|---|
| assemblyPath | string | yes | Path to the .NET assembly file (.dll or .exe) |
| caseSensitive | boolean | – | Case sensitive name matching (default: false) |
| continuationToken | string|null | – | Continuation token for paging |
| includeNonPublic | boolean | – | Include non-public members and types (default: false) |
| maxItems | integer|null | – | Maximum items to return (default: 50) |
| memberKinds | string|null | – | Member kinds to include, csv from: method|property|field|event|type. Default: all kinds. |
| nameContains | string | yes | Substring to match against member names (required). Case-insensitive unless caseSensitive=true. |
| noCache | boolean | – | Bypass cache for this request |
| skip | integer|null | – | Items to skip (paging) |
No output schema declared.
No examples provided.
update_runtime_options Update Runtime Options ~168
Updates runtime configuration. Reduce defaultMaxItems for smaller responses, increase cacheTtlSeconds for better performance. Omit fields to keep current values.
| Name | Type | Req | Description |
|---|---|---|---|
| addSearchRoots | array|null | – | Add search roots (absolute paths) |
| cacheTtlSeconds | integer|null | – | Cache TTL in seconds |
| defaultMaxItems | integer|null | – | Default page size (maxItems) |
| enableStreaming | boolean|null | – | Enable server-side streaming |
| includeNonPublicByDefault | boolean|null | – | Include non-public members by default |
| maxCachedResponses | integer|null | – | Maximum cached tool responses kept in memory |
| maxLoadedAssemblies | integer|null | – | Maximum assemblies kept loaded in the inspection cache |
| removeSearchRoots | array|null | – | Remove search roots (absolute paths) |
No output schema declared.
No examples provided.
What is the io.github.jcucci/dotnet-sherlock-mcp server?
io.github.jcucci/dotnet-sherlock-mcp is listed in the public MCP registry as io.github.jcucci/dotnet-sherlock-mcp. .NET assembly introspection MCP server with advanced reflection and type analysis capabilities. This page covers its NuGet package (Sherlock.MCP.Server).
Is the io.github.jcucci/dotnet-sherlock-mcp server safe to use?
io.github.jcucci/dotnet-sherlock-mcp scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.jcucci/dotnet-sherlock-mcp server expose?
io.github.jcucci/dotnet-sherlock-mcp exposes 36 tools: analyze_assembly, analyze_method, analyze_project, analyze_solution, analyze_type, and 31 more. Their descriptions and schemas cost roughly 6,197 tokens of context every time the server is loaded.
Is the io.github.jcucci/dotnet-sherlock-mcp server still maintained?
io.github.jcucci/dotnet-sherlock-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.jcucci/dotnet-sherlock-mcp server under?
io.github.jcucci/dotnet-sherlock-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.