Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.jcucci/dotnet-sherlock-mcp

NUGET · SHERLOCK.MCP.SERVER

.NET assembly introspection MCP server with advanced reflection and type analysis capabilities

0 this week 79 Trust /100

Last scanned (23 hours ago)

Scores higher than 62% of NuGet servers

Category Developer Tools

Trust breakdown (7 categories)

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
  • Build provenance not yet verified. View diagnostics → Unverified
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 29 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 12704 tokens (~270/item across 47 items; 47 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 Management64
  • Stability check failed: the tool surface changed between 2.14.0 and 2.15.0: 0 tool removals, 27 breaking changes, 10 additions. See how to fix → Fail
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
  • Structured output schemas are declared (32% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 47 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 48 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
Changelog

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.

  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 61.

  • 14 Oct 26 +39
    • Stability: unverified → fail ▼ security
    • Injection markers: unverified → pass ▲ security
    • Schema quality: 197 → 270 ▼ functional
    • Tool coverage: unverified → 100 ▲ functional
    • Schema quality: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Package version: 2.14.0 → 2.15.0 functional
  • 12 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 8 Oct 26 −59
    • Stability: pass → unverified ▼ security
    • Malware scan: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 2.14.0 → 2.15.0 functional
  • 4 Oct 26 0
    • Stability: 0.97 → pass security
  • 3 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 1 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Schema quality: 179 → 197 ▼ functional
    • First check of Tool coverage: 30 functional
    • Package version: 2.13.0 → 2.14.0 functional
Diagnostics

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 4 Nov 2026 · Analysed nuget/Sherlock.MCP.Server@2.15.0

Provenance Inconclusive

We could not complete the check, so nothing is claimed either way. This is a gap on our side, not a finding about the package.

Result Inconclusive
Ecosystem nuget
Reason Signature present, unverified

Signer

Signed as Repository signature, names nuget.org
Subject CN=NuGet.org Repository by Microsoft,O=NuGet.org Repository by Microsoft,L=Redmond,ST=Washington,C=US
Issuer CN=DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1,O=DigiCert\, Inc.,C=US
Valid from 23 Feb 2024
Valid until 18 May 2027
Service index https://api.nuget.org/v3/index.json
Owners jcucci

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

Registry declarations For information only

What the registry and the package's own manifest say about this version. The publisher or the registry writes these, nothing here is verified, and none of it affects the score.

Repository https://github.com/jcucci/dotnet-sherlock-mcp
Repository type git
Commit 7e441a6a140b4a04868a004c8840b736de75fca8
Project URL https://github.com/jcucci/dotnet-sherlock-mcp
MCP tools · 47 exposed · ~11,911 tokens

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 →

Tool Tokens
analyze_assembly ~160

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 get_type_info for specific types.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
continuationTokenstring|null–Continuation token for paging
maxItemsinteger|null–Maximum number of types to return (default: 50)
noCacheboolean–Bypass cache for this request
skipinteger|null–Items to skip (paging)

No output schema declared.

No examples provided.

analyze_method ~151

Gets detailed info about a specific method including all overloads, parameters, attributes, and return types. Use after finding the method via get_type_members or search_members. Lightweight response.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
methodNamestringyesName of the method to analyze
noCacheboolean–Bypass cache for this request
typeNamestringyesType 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 ~115

Evaluates a project file (.csproj/.vbproj/.fsproj) with the installed .NET SDK's MSBuild, honouring Directory.Build.props, central package management and conditions, and returns target frameworks, package refs, project refs and output paths. Falls back to XML parsing when no SDK is available; evaluation.mode says which was used. Use get_project_output_paths to find compiled assemblies.

NameTypeReqDescription
noCacheboolean–Bypass cache for this request
projectFilePathstringyesPath to the project file

No output schema declared.

No examples provided.

analyze_solution ~67

Parses a .sln file and lists all contained projects with paths. Use as entry point to discover project structure before analyze_project. Lightweight response.

NameTypeReqDescription
noCacheboolean–Bypass cache for this request
solutionFilePathstringyesPath to the .sln file

No output schema declared.

No examples provided.

analyze_type ~268

Deprecated: use get_type_info for type metadata plus get_type_members with projection='full' for members. Gets type metadata with paginated members (constructors, methods, properties, fields). Returns member totals for pagination planning. Use include* flags to filter member categories.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
continuationTokenstring|null–Continuation token for paging
includeConstructorsboolean–Include constructors in results (default: true)
includeFieldsboolean–Include fields in results (default: true)
includeMethodsboolean–Include methods in results (default: true)
includePropertiesboolean–Include properties in results (default: true)
maxItemsinteger|null–Maximum number of members to return per category (default: 25)
noCacheboolean–Bypass cache for this request
skipinteger|null–Items to skip (paging)
typeNamestringyesType name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted

No output schema declared.

No examples provided.

compare_api_surface ~406

Diffs the public API of two versions of an assembly (left = old, right = new) and flags breaking changes: removed types/members, changed return/parameter types, reduced accessibility, sealed/abstract/static changes, removed base types or interfaces, abstract members added to interfaces or inheritable classes, and more. Each side is an assembly path, an asm_ handle from open_assembly, or a NuGet package as 'Package.Id@1.2.3' resolved from the local NuGet cache (omit the version for the highest cached one). Returns counts plus the breaking changes by default; projection='full' lists every added/removed/changed type and member with left/right signatures and reasons. Use when upgrading a package or reviewing a release for compatibility.

NameTypeReqDescription
breakingOnlyboolean–With projection='full', list only breaking changes (default: false)
continuationTokenstring|null–Continuation token for paging
leftstringyesOld side: assembly path, asm_ handle, or 'Package.Id@version' from the NuGet cache
maxItemsinteger|null–Maximum changes per page (default: 100)
namespaceFilterstring|null–Only compare types in this namespace or its sub-namespaces (case-insensitive)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): counts plus breaking changes as { change, scope, type, memberKind, member, breaking, signature, reason }. 'full': every change, adding leftSignature,…
rightstringyesNew side: assembly path, asm_ handle, or 'Package.Id@version' from the NuGet cache
tfmstring|null–Target framework for NuGet sides (e.g. 'net8.0'). Default: the best target framework both packages ship
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

decompile_member ~341

Decompiles a single member (method, property, field, event or constructor) to C# source, showing its body - what signature-level tools can't. Returns every overload of the name unless parameterTypes narrows it. Source is paged by line: follow continuationToken while truncated is true. Prefer this over decompile_type.

NameTypeReqDescription
additionalAssembliesarray|null–Optional dependency assembly paths; their folders are searched when resolving referenced types (added to the handle's)
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token from a previous page
includeNonPublicboolean–Include non-public members (default: true)
maxLinesinteger–Maximum source lines per page (default: 400, max: 5000)
memberNamestringyesMember name. Use '.ctor' for instance constructors or '.cctor' for the static constructor.
noCacheboolean–Bypass cache for this request
parameterTypesstring|null–Comma-separated parameter types selecting one overload, e.g. 'string,int' or 'System.String,System.Int32'. Empty string selects the parameterless overload. Omit to return every overload.
typeNamestringyesType that declares the member. Prefer the full name; use Outer+Inner for nested types.
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

decompile_type ~228

Decompiles a whole type to C# source. Output can be large, so it is paged by line: follow continuationToken while truncated is true. Prefer decompile_member when you only need one member's body.

NameTypeReqDescription
additionalAssembliesarray|null–Optional dependency assembly paths; their folders are searched when resolving referenced types (added to the handle's)
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
continuationTokenstring|null–Continuation token from a previous page
maxLinesinteger–Maximum source lines per page (default: 400, max: 5000)
noCacheboolean–Bypass cache for this request
typeNamestringyesType to decompile. Prefer the full name; use Outer+Inner for nested types.

No output schema declared.

No examples provided.

find_assembly_by_class_name ~143

Recursively searches workingDirectory for .dll/.exe files that declare a public type matching className, skipping obj/, ref/, refint/, node_modules/, packages/, TestResults/ and dot-directories. Matches are ranked bin/ first, then newest, then shortest path; returns the best match as foundAssembly plus other candidates. Use when you know the class but not the assembly path.

NameTypeReqDescription
classNamestringyesThe class name to search for: simple (e.g., 'MyClass'), full ('My.Namespace.MyClass') or nested ('Outer+Inner').
workingDirectorystringyesThe root directory to start the search from.

No output schema declared.

No examples provided.

find_assembly_by_file_name ~132

Recursively searches workingDirectory for an assembly file name, skipping obj/, ref/, refint/, node_modules/, packages/, TestResults/ and dot-directories. Matches are ranked bin/ first, then newest, then shortest path; returns the best match as foundAssembly plus other candidates. Use when you know the assembly name but not its full path.

NameTypeReqDescription
assemblyFileNamestringyesThe file name of the assembly to search for (e.g., 'MyProject.dll'). Wildcards (*, ?) are allowed.
workingDirectorystringyesThe root directory to start the search from.

No output schema declared.

No examples provided.

find_assembly_by_nuget_package ~207

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 the highest version when omitted. When tfm is omitted and the package ships several, clients that support elicitation are asked which one to use; otherwise the best TFM is picked. The response lists availableVersions and availableTfms.

NameTypeReqDescription
packageIdstringyesThe NuGet package id (case-insensitive, e.g., 'Newtonsoft.Json').
tfmstring|null–Optional target framework moniker (e.g., 'net9.0'). If omitted, the client is asked to choose when several are available, or the best available TFM is picked.
versionstring|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 ~75

Parses deps.json from build output to list all runtime dependencies including transitive refs. Useful for understanding full dependency graph.

NameTypeReqDescription
configurationstring–Build configuration, default 'Debug'
noCacheboolean–Bypass cache for this request
projectFilePathstringyesPath to the project file

No output schema declared.

No examples provided.

find_ef_entities ~319

Finds Entity Framework Core entities: the DbSet<T> properties (declared or inherited) of every DbContext subclass across one or more assemblies. Entities configured only in OnModelCreating are not listed. Returns a lean summary ({ context, property, entity }) by default; projection='full' adds assemblyPath.

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
contextTypestring|null–Only this DbContext type (simple or full name)
continuationTokenstring|null–Continuation token for paging
entityTypestring|null–Only this entity type (simple or full name)
includeNonPublicboolean–Include non-public DbContext types (default: false)
maxItemsinteger|null–Maximum items to return (default: 50)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { context, property, entity }. 'full': adds assemblyPath.
skipinteger|null–Items to skip (paging)

No output schema declared.

No examples provided.

find_endpoints ~403

Finds ASP.NET Core HTTP endpoints across one or more assemblies: MVC/API controller actions (attribute routes combined from [Route]/[Http*] with [controller]/[action] substituted) and minimal APIs (Map{Get,Post,Put,Delete,Patch,Methods,Group,Fallback} calls read from IL). Minimal-API routes and handlers come from string literals and method references next to the call, so routes held in variables or fields are reported as null. Returns a lean summary ({ kind, httpMethods, route, handler }) by default; projection='full' adds assemblyPath, handlerType, handlerMethod and registeredIn.

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
continuationTokenstring|null–Continuation token for paging
httpMethodstring|null–Only endpoints that accept this HTTP method (e.g. 'GET'); endpoints without an explicit method always match
includeNonPublicboolean–Include non-public controllers (default: false). Minimal-API calls are read from every method body regardless.
maxItemsinteger|null–Maximum items to return (default: 50)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { kind, httpMethods, route, handler }. 'full': adds assemblyPath, handlerType, handlerMethod, registeredIn.
routeContainsstring|null–Only endpoints whose route template contains this text (case-insensitive)
skipinteger|null–Items to skip (paging)

No output schema declared.

No examples provided.

find_extension_methods_for ~343

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>').

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
continuationTokenstring|null–Continuation token for paging
includeNonPublicboolean–Include non-public methods and types (default: false)
maxItemsinteger|null–Maximum items to return (default: 50)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { declaringType, methodName, signature }. 'full': adds assemblyPath, extendedType.
skipinteger|null–Items to skip (paging)
typeNamestringyesType to find extension methods for. Simple name, full name, or open-generic form accepted (e.g., 'IEnumerable<>').
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

find_handlers ~348

Finds MediatR-style handlers across one or more assemblies: concrete types implementing IRequestHandler<,>/IRequestHandler<>, INotificationHandler<>, IStreamRequestHandler<,> or IPipelineBehavior<,> from the MediatR or Mediator namespaces. Returns a lean summary ({ kind, handler, message, response }) by default; projection='full' adds assemblyPath and interface.

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
continuationTokenstring|null–Continuation token for paging
includeNonPublicboolean–Include non-public handler types (default: false)
kindstring|null–Only this handler kind: 'request', 'notification', 'stream' or 'behavior'
maxItemsinteger|null–Maximum items to return (default: 50)
messageTypestring|null–Only handlers of this request/notification type (simple or full name)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { kind, handler, message, response }. 'full': adds assemblyPath, interface.
skipinteger|null–Items to skip (paging)

No output schema declared.

No examples provided.

find_implementations_of ~359

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').

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
continuationTokenstring|null–Continuation token for paging
includeNonPublicboolean–Include non-public types (default: false)
maxItemsinteger|null–Maximum items to return (default: 50)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { typeFullName, kind }. 'full': adds assemblyPath, matchedInterfaces[], baseTypeChain[].
skipinteger|null–Items to skip (paging)
typeNamestringyesType 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.
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

find_methods_returning ~322

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>').

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
continuationTokenstring|null–Continuation token for paging
includeNonPublicboolean–Include non-public methods and types (default: false)
maxItemsinteger|null–Maximum items to return (default: 50)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { declaringType, methodName, signature }. 'full': adds assemblyPath, returnType, isStatic.
skipinteger|null–Items to skip (paging)
typeNamestringyesReturn type to search for. Simple name, full name, or open-generic form accepted.
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

find_references_to ~406

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.

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
analysisDepthstring–Analysis depth. 'signatures' (default): type usage in signatures and member declarations. 'il': additionally scan method bodies for inbound callers (referenceKind 'ilCall'/'ilFieldRead'/'ilFieldWrite…
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
continuationTokenstring|null–Continuation token for paging
includeNonPublicboolean–Include non-public members and types (default: false)
maxItemsinteger|null–Maximum items to return (default: 25)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { declaringType, memberKind, memberName, referenceKind }. 'full': adds assemblyPath, signature, dedupeKey.
skipinteger|null–Items to skip (paging)
typeNamestringyesType to search references to. Simple name, full name, or open-generic form accepted.
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

find_service_registrations ~412

Finds Microsoft.Extensions.DependencyInjection registrations by reading IL for calls to Add{Singleton,Scoped,Transient}, TryAdd*, AddKeyed*, AddHostedService and ServiceDescriptor factories, across one or more assemblies. Service/implementation types come from generic arguments or typeof(...) operands; factory and instance registrations report implementation=null. Every method body is scanned (registrations usually live in non-public Program code). Returns a lean summary ({ lifetime, service, implementation, registeredIn }) by default; projection='full' adds assemblyPath, registrationMethod, registrationKind, isTryAdd and isKeyed.

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the primary .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
continuationTokenstring|null–Continuation token for paging
implementationTypestring|null–Only registrations with this implementation type (simple or full name)
lifetimestring|null–Only registrations with this lifetime: 'singleton', 'scoped' or 'transient'
maxItemsinteger|null–Maximum items to return (default: 50)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { lifetime, service, implementation, registeredIn }. 'full': adds assemblyPath, registrationMethod, registrationKind, isTryAdd, isKeyed.
serviceTypestring|null–Only registrations of this service type (simple or full name; open generic accepted, e.g. 'IRepository')
skipinteger|null–Items to skip (paging)

No output schema declared.

No examples provided.

get_all_type_members ~212

Deprecated: use get_type_members with projection='full' (filter with kinds / nameContains). Gets ALL members (methods, properties, fields, events, constructors) in one call. WARNING: Can produce very large responses for complex types.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
includeInstanceboolean–Include instance members (default: true)
includeNonPublicboolean–Include non-public members (default: false)
includePublicboolean–Include public members (default: true)
includeStaticboolean–Include static members (default: true)
noCacheboolean–Bypass cache for this request
typeNamestringyesType 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 ~138

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.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
noCacheboolean–Bypass cache for this request
projectionstring–Detail level: 'summary' (default, lean) or 'full' (adds all assembly attributes)
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

get_generic_type_info ~115

Gets generic type parameters, constraints, and variance for generic types. Only useful for types where IsGenericType=true. Lightweight response.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
noCacheboolean–Bypass cache for this request
typeNamestringyesType name to analyze. Prefer full name

No output schema declared.

No examples provided.

get_member_attributes ~179

Gets custom attributes for a specific member (method, property, field, event, constructor). Returns attribute types and values. Use after identifying the member via get_type_members or search_members.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive matching (default: false)
memberKindstringyesMember kind: method|property|field|event|constructor
memberNamestringyesMember name (for methods, the simple name; first match used)
noCacheboolean–Bypass cache for this request
typeNamestringyesType name. Prefer full name

No output schema declared.

No examples provided.

get_member_source ~397

Returns a member's original source code (with comments and real names) from the assembly's portable PDB: source embedded in the PDB, the local file it was built from, or the Source Link URL (fetched from known source hosts only). Falls back to decompiled C# per overload when no source is available; origin says which (sourcelink, embedded, local, decompiled, or mixed) and note says why a fallback happened. Returns every overload unless parameterTypes narrows it. Paged by line: follow continuationToken while truncated is true. Prefer this over decompile_member.

NameTypeReqDescription
additionalAssembliesarray|null–Optional dependency assembly paths; their folders are searched when resolving referenced types (added to the handle's)
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token from a previous page
includeNonPublicboolean–Include non-public members (default: true)
maxLinesinteger–Maximum source lines per page (default: 400, max: 5000)
memberNamestringyesMember name. Use '.ctor' for instance constructors or '.cctor' for the static constructor.
noCacheboolean–Bypass cache for this request
parameterTypesstring|null–Comma-separated parameter types selecting one overload, e.g. 'string,int' or 'System.String,System.Int32'. Empty string selects the parameterless overload. Omit to return every overload.
typeNamestringyesType that declares the member. Prefer the full name; use Outer+Inner for nested types.
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

get_method_calls ~457

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. format='mermaid' returns a Mermaid flowchart call graph instead, following same-assembly callees transitively up to depth levels (external calls are leaves).

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe) that declares the method. Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type-name matching (default: false)
depthinteger–Call-graph depth when format='mermaid' (default 1, max 5). Only methods defined in the same assembly are expanded.
formatstring–Output format. 'json' (default): calls and field accesses per projection. 'mermaid': { diagram, nodeCount, edgeCount, truncated, note } where diagram is a Mermaid flowchart of the call graph.
includeNonPublicboolean–Include non-public methods and the non-public declaring type (default: false)
maxNodesinteger–Maximum diagram nodes when format='mermaid' (default 50, max 200)
methodNamestringyesMethod name to analyze. Use '.ctor' for instance constructors or '.cctor' for the static constructor. All overloads with this name are aggregated.
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): distinct target names only. 'full': adds { target, kind, sourceMethod } per call and { target, access, sourceMethod } per field access.
typeNamestringyesType that declares the method. Simple name, full name, or open-generic form accepted.
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

get_nested_types ~113

Gets nested/inner types declared within a type. Use for types with inner classes, structs, or enums. Lightweight response.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
noCacheboolean–Bypass cache for this request
typeNamestringyesType name to analyze. Prefer full name

No output schema declared.

No examples provided.

get_package_graph ~413

Reads the restored NuGet graph from obj/project.assets.json: the exact package versions the project compiles against (direct and transitive), for one target framework and optional runtime identifier. Pass projectPath (a project file, its directory, or the assets file) or an assemblyPath/assemblyHandle from the project's bin output. Summary lists { id, version, type, direct, dependencyCount }; projection='full' adds each package's dependency ranges and resolved compile assemblies. Run 'dotnet restore' first if the assets file is missing; resolve_package_references only probes the NuGet cache for declared versions.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Assembly in the project's build output; its project.assets.json is found next to the bin folder. Omit when passing projectPath.
continuationTokenstring|null–Continuation token for paging
maxItemsinteger|null–Maximum packages per page
noCacheboolean–Bypass cache for this request
packageIdContainsstring|null–Only list packages whose id contains this text (case-insensitive)
projectPathstring|null–Project file (.csproj/.fsproj/.vbproj), its directory, or a project.assets.json. Omit when passing assemblyPath or assemblyHandle.
projectionstring–Response shape. 'summary' (default, token-lean): { id, version, type, direct, dependencyCount }. 'full': adds dependencies { id: range } and compileAssemblies (resolved paths).
runtimeIdentifierstring|null–Runtime identifier (e.g. 'linux-x64') when the project restores RID-specific graphs. Default: the RID-less graph
targetFrameworkstring|null–Target framework alias (e.g. 'net8.0'). Default: the assembly's target framework, the only one restored, or the client is asked to choose

No output schema declared.

No examples provided.

get_parameter_attributes ~158

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.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive matching (default: false)
methodNamestringyesMethod or constructor name
noCacheboolean–Bypass cache for this request
parameterIndexintegeryesParameter index (0-based)
typeNamestringyesType name. Prefer full name

No output schema declared.

No examples provided.

get_project_output_paths ~110

Gets compiled assembly output directories for a project by configuration and target framework, evaluated with MSBuild (custom OutputPath, artifacts layout, Directory.Build.props) or parsed from XML when no SDK is available. Use to find DLL paths for assembly analysis tools. Lightweight response.

NameTypeReqDescription
configurationstring|null–Build configuration (e.g., Debug/Release). Optional
noCacheboolean–Bypass cache for this request
projectFilePathstringyesPath to the project file

No output schema declared.

No examples provided.

get_runtime_options ~34

Gets current runtime configuration (default page sizes, cache TTL, search roots). Use to understand current settings before update_runtime_options.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_type_attributes ~115

Gets custom attributes declared on a type (e.g., [Serializable], [Obsolete]). Returns attribute types and values. Lightweight response.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
noCacheboolean–Bypass cache for this request
typeNamestringyesType name to analyze. Prefer full name

No output schema declared.

No examples provided.

get_type_constructors ~346

Deprecated: use get_type_members with kinds=constructor. Gets constructors from a type with filtering and pagination. Returns parameter info and access modifiers. Most types have few constructors - use maxItems=30.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token for paging
hasAttributeContainsstring|null–Filter by attribute type contains (optional)
includeInstanceboolean–Include instance members (default: true)
includeNonPublicboolean–Include non-public members (default: false)
includePublicboolean–Include public members (default: true)
includeStaticboolean–Include static members (default: true)
maxItemsinteger|null–Maximum items to return (overrides take)
nameContainsstring|null–Filter by name contains (optional)
noCacheboolean–Bypass cache for this request
skipinteger|null–Items to skip (paging)
sortBystring–Sort by: name|access (default: name)
sortOrderstring–Sort order: asc|desc (default: asc)
takeinteger|null–Items to take (paging)
typeNamestringyesType 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 ~342

Deprecated: use get_type_members with kinds=event. Gets events from a type with filtering and pagination. Returns event handler types and add/remove accessor info. Most types have few events.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token for paging
hasAttributeContainsstring|null–Filter by attribute type contains (optional)
includeInstanceboolean–Include instance members (default: true)
includeNonPublicboolean–Include non-public members (default: false)
includePublicboolean–Include public members (default: true)
includeStaticboolean–Include static members (default: true)
maxItemsinteger|null–Maximum items to return (overrides take)
nameContainsstring|null–Filter by name contains (optional)
noCacheboolean–Bypass cache for this request
skipinteger|null–Items to skip (paging)
sortBystring–Sort by: name|access (default: name)
sortOrderstring–Sort order: asc|desc (default: asc)
takeinteger|null–Items to take (paging)
typeNamestringyesType 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 ~350

Deprecated: use get_type_members with kinds=field. 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+).

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token for paging
hasAttributeContainsstring|null–Filter by attribute type contains (optional)
includeInstanceboolean–Include instance members (default: true)
includeNonPublicboolean–Include non-public members (default: false)
includePublicboolean–Include public members (default: true)
includeStaticboolean–Include static members (default: true)
maxItemsinteger|null–Maximum items to return (overrides take)
nameContainsstring|null–Filter by name contains (optional)
noCacheboolean–Bypass cache for this request
skipinteger|null–Items to skip (paging)
sortBystring–Sort by: name|access (default: name)
sortOrderstring–Sort order: asc|desc (default: asc)
takeinteger|null–Items to take (paging)
typeNamestringyesType 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 ~263

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 find_implementations_of. format='mermaid' returns a Mermaid classDiagram instead of JSON fields.

NameTypeReqDescription
additionalAssembliesarray|null–Optional additional assembly paths to include in the search scope
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath (it also supplies the additionalAssemblies it was opened with)
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
formatstring–Output format. 'json' (default): hierarchy fields. 'mermaid': { typeName, diagram, nodeCount, edgeCount, truncated, note } where diagram is a Mermaid classDiagram.
maxNodesinteger–Maximum diagram nodes when format='mermaid' (default 50, max 200)
noCacheboolean–Bypass cache for this request
typeNamestringyesType name to analyze. Prefer full name

No output schema declared.

No examples provided.

get_type_info ~132

Gets detailed metadata for a single type including accessibility, inheritance, interfaces, and member counts. Lightweight response - use as entry point before exploring members with get_type_members.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
noCacheboolean–Bypass cache for this request
typeNamestringyesType name to analyze. Prefer full name (e.g., 'System.Collections.Generic.List`1')
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

get_type_members ~542

Lists the members of a type - methods, properties, fields, events and constructors - with filtering and pagination. Narrow with kinds (csv: method|property|field|event|constructor), nameContains and hasAttributeContains. Returns a lean summary ({ kind, name, signature }) by default; the C# signature already carries types, parameters and modifiers. Pass projection='full' for structured parameters[], attributes and modifier flags per kind (replaces get_all_type_members / analyze_type). Members are grouped by kind (constructors, properties, fields, events, methods) and sorted within each kind. Use get_type_info for type-level metadata and analyze_method for one method's overloads.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token for paging
hasAttributeContainsstring|null–Filter by attribute type contains (optional)
includeInstanceboolean–Include instance members (default: true)
includeNonPublicboolean–Include non-public members (default: false)
includePublicboolean–Include public members (default: true)
includeStaticboolean–Include static members (default: true)
kindsstring|null–Member kinds to include, csv from: method|property|field|event|constructor. Default: all kinds.
maxItemsinteger|null–Maximum items to return (overrides take)
nameContainsstring|null–Filter by name contains (optional; constructors match on signature)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { kind, name, signature } only. 'full': adds the structured fields for each kind (parameters[], attributes, types, modifier booleans) - use only for m…
skipinteger|null–Items to skip (paging)
sortBystring–Sort within each kind by: name|access (default: name)
sortOrderstring–Sort order: asc|desc (default: asc)
takeinteger|null–Items to take (paging)
typeNamestringyesType name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

get_type_methods ~482

Deprecated: use get_type_members with kinds=method. 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 analyze_method for one method. Large types may have 100+ methods - use nameContains filter or maxItems=25 for efficiency.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token for paging
hasAttributeContainsstring|null–Filter by attribute type contains (optional)
includeInstanceboolean–Include instance members (default: true)
includeNonPublicboolean–Include non-public members (default: false)
includePublicboolean–Include public members (default: true)
includeStaticboolean–Include static members (default: true)
maxItemsinteger|null–Maximum items to return (overrides take)
nameContainsstring|null–Filter by name contains (optional)
noCacheboolean–Bypass cache for this request
projectionstring–Response shape. 'summary' (default, token-lean): { name, signature } only - the C# signature already carries return type, parameters, and modifiers. 'full': adds parameters[], attributes, returnType,…
skipinteger|null–Items to skip (paging)
sortBystring–Sort by: name|access (default: name)
sortOrderstring–Sort order: asc|desc (default: asc)
takeinteger|null–Items to take (paging)
typeNamestringyesType name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted
NameTypeReqDescription
dataobject|nullyes–
hintsarray|null––
kindstringyes–
versionstringyes–

No examples provided.

get_type_properties ~339

Deprecated: use get_type_members with kinds=property. Gets properties from a type with filtering and pagination. Returns getter/setter info, indexers, and access modifiers.

NameTypeReqDescription
assemblyHandlestring|null–Handle returned by open_assembly; pass instead of assemblyPath
assemblyPathstring|null–Path to the .NET assembly file (.dll or .exe). Omit when passing assemblyHandle.
caseSensitiveboolean–Case sensitive type/member matching (default: false)
continuationTokenstring|null–Continuation token for paging
hasAttributeContainsstring|null–Filter by attribute type contains (optional)
includeInstanceboolean–Include instance members (default: true)
includeNonPublicboolean–Include non-public members (default: false)
includePublicboolean–Include public members (default: true)
includeStaticboolean–Include static members (default: true)
maxItemsinteger|null–Maximum items to return (overrides take)
nameContainsstring|null–Filter by name contains (optional)
noCacheboolean–Bypass cache for this request
skipinteger|null–Items to skip (paging)
sortBystring–Sort by: name|access (default: name)
sortOrderstring–Sort order: asc|desc (default: asc)
takeinteger|null–Items to take (paging)
typeNamestringyesType name to analyze. Prefer full name (e.g., 'System.String'); simple names are also accepted

No output schema declared.

No examples provided.

Install

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.15.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

# add to Claude Code
claude mcp add jcucci-dotnet-sherlock-mcp -- dnx Sherlock.MCP.Server@2.15.0 --yes
Common questions

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 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 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 47 tools: analyze_assembly, analyze_method, analyze_project, analyze_solution, analyze_type, and 42 more. Their descriptions and schemas cost roughly 11,911 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 4 November 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.