dotnet-sherlock-mcp
Sherlock MCP für .NET
Sherlock MCP für .NET ist ein umfassender Model Context Protocol (MCP)-Server, der tiefgreifende Introspektionsfunktionen für .NET-Assemblies bietet. Er ermöglicht es Large Language Models (LLMs), Ihren .NET-Code präzise zu analysieren und zu verstehen, um genaue und kontextbezogene Antworten für komplexe Entwicklungsszenarien zu liefern.
Dieses Tool ist unverzichtbar für Entwickler, die LLM-Funktionen für folgende Zwecke nutzen möchten:
Tiefe Codebasis-Analyse - Verständnis komplexer .NET-Architekturen und Abhängigkeiten
Präzise Typinformationen - Detaillierte Metadaten über Typen, Member und deren Signaturen erhalten
Automatisierte Dokumentation - Extrahieren und Nutzen von XML-Dokumentationen und Attributen
Benutzerdefinierte Tooling-Lösungen - Entwicklung anspruchsvoller Tools, die mit .NET-Assemblies interagieren
Codegenerierung - Erstellung präzisen Codes basierend auf bestehenden Typstrukturen
Hauptfunktionen
Umfassender MCP-Server: Bietet über 31 spezialisierte Tools für die Analyse von .NET-Assemblies
Erweiterte Assembly-Introspektion: Tiefgreifende, auf Reflection basierende Analyse von Typen, Membern und Metadaten
Umfangreiche Member-Analyse: Detaillierte Untersuchung von Methoden, Eigenschaften, Feldern, Ereignissen und Konstruktoren
Intelligente Filterung & Paginierung: Erweiterte Filterung nach Namen/Attributen mit effizienter Paginierung für große Datensätze
XML-Dokumentationsintegration: Automatische Extraktion von Zusammenfassungen, Parametern, Rückgabewerten und Anmerkungen
Leistungsoptimiert: Caching, Streaming und speichereffiziente Verarbeitung
Stabile JSON-API: Konsistente Envelopes mit Versionierung und strukturierten Fehlercodes
.NET 9.0 Native: Auf der neuesten .NET-Plattform mit modernen C#-Funktionen aufgebaut
Projektintegration: Analyse von Projekt- und Solution-Dateien mit Abhängigkeitsauflösung
Installation
Installieren Sie das globale Tool von NuGet (fügt sherlock-mcp zu Ihrem PATH hinzu):
dotnet tool install -g Sherlock.MCP.ServerAlternativ können Sie den Server während der Entwicklung lokal ausführen:
dotnet run --project src/server/Sherlock.MCP.Server.csprojKonfigurieren Sie Ihren MCP-Client
Sherlock läuft als Standard-MCP-Server, der über stdio kommuniziert.
Cursor: Einstellungen → MCP / Benutzerdefinierte Tools → Tool hinzufügen → Befehl:
sherlock-mcpClaude Desktop / andere MCP-Clients: Fügen Sie einen Servereintrag hinzu, der auf den Befehl
sherlock-mcpverweist. Beispiel-JSON-Eintrag (siehe Dokumentation Ihres Clients für den genauen Dateipfad/das Format):
{
"servers": {
"sherlock": {
"command": "sherlock-mcp"
}
}
}Es sind keine Argumente erforderlich. Der Server registriert beim Start alle Tools automatisch.
Automatische Konfiguration für .NET-Projekte
Um Sherlock bei der Arbeit mit .NET-Code automatisch zu verwenden, fügen Sie diese Konfigurationen hinzu:
Claude Code (CLAUDE.md)
Fügen Sie dies zur CLAUDE.md-Datei Ihres Projekts hinzu:
## .NET Assembly Analysis
This project uses Sherlock MCP for .NET assembly analysis. When analyzing .NET types, methods, or assemblies:
1. Use sherlock-mcp tools instead of guessing about .NET APIs
2. For type analysis: `GetTypeInfo`, `GetTypeMethods`, `GetTypeProperties`
3. For assembly overview: `AnalyzeAssembly` or `GetTypesFromAssembly`
4. For project structure: `AnalyzeProject`, `AnalyzeSolution`
5. Assembly paths are typically: `./bin/Debug/net9.0/ProjectName.dll`
Always include assembly path, prefer full type names, and use pagination for large results.Cursor (.cursorrules)
Fügen Sie dies zur .cursorrules-Datei Ihres Projekts hinzu:
# .NET Analysis Rules
When working with .NET code, assemblies, or types:
- Use sherlock-mcp tools for accurate type/member information
- Assembly paths: ./bin/Debug/net9.0/*.dll or ./bin/Release/net9.0/*.dll
- For unknown types: GetTypesFromAssembly -> GetTypeInfo -> GetTypeMethods/Properties
- For code analysis: AnalyzeAssembly for overview, GetTypeInfo for details
- Use pagination (maxItems=50) for large results to avoid token limitsGlobale Konfiguration
Für die systemweite Nutzung fügen Sie dies zu Ihren globalen Claude Code-Einstellungen oder der Cursor-Konfiguration hinzu:
For .NET development: Use sherlock-mcp tools when analyzing assemblies, types, methods, or project structure. Prefer these over guessing .NET API details.So verwenden Sie Prompts
Nachfolgend finden Sie kompakte Prompt-Snippets, die Sie in Ihren Chat kopieren können, um schnell produktiv zu werden. Passen Sie die Pfade an Ihre lokalen DLLs an.
Allgemeine Einrichtung
You have access to an MCP server named "sherlock" that can analyze .NET assemblies. Prefer these tools for .NET questions and include short reasoning for which tool you chose. Ask me for the assembly path if missing.Member für einen Typ auflisten
Analyze: /absolute/path/to/MyLib/bin/Debug/net9.0/MyLib.dll
Type: MyNamespace.MyType
List methods, including non-public, filter name contains "Async", include attributes, return JSON.XML-Dokumentation für ein Member abrufen
Use GetXmlDocsForMember on /abs/path/MyLib.dll, type MyNamespace.MyType, member TryParse. Summarize the summary + params.Typen finden und Details untersuchen
List types from /abs/path/MyLib.dll; then get type info for the first result and list its nested types.Paging und Filter anpassen
Use GetTypeMethods on /abs/path/MyLib.dll, type MyNamespace.MyType, sortBy name, sortOrder asc, skip 0, take 25, hasAttributeContains Obsolete.Tool-Übersicht
Assembly-Erkennung & Analyse
AnalyzeAssembly: Vollständiger Assembly-Überblick mit öffentlichen Typen und MetadatenFindAssemblyByClassName: Assemblies finden, die bestimmte Klassennamen enthaltenFindAssemblyByFileName: Assemblies anhand des Dateinamens in gängigen Build-Pfaden finden
Typ-Introspektion
GetTypesFromAssembly: Alle öffentlichen Typen mit Metadaten auflisten (paginiert)AnalyzeType: Umfassende Typanalyse mit allen MembernGetTypeInfo: Detaillierte Typ-Metadaten (Zugriffsberechtigung, Generics, verschachtelte Typen)GetTypeHierarchy: Vererbungskette und SchnittstellenimplementierungenGetGenericTypeInfo: Generische Parameter, Argumente und VarianzinformationenGetTypeAttributes: Benutzerdefinierte Attribute, die für Typen deklariert sindGetNestedTypes: Deklarationen verschachtelter Typen
Member-Analyse (filterbar & paginiert)
GetAllTypeMembers: Alle Member über alle Kategorien hinwegGetTypeMethods: Methodensignaturen, Überladungen und MetadatenGetTypeProperties: Eigenschaftsdetails einschließlich Getter/Setter und IndexerGetTypeFields: Feldinformationen einschließlich Konstanten und schreibgeschützter FelderGetTypeEvents: Ereignisdeklarationen mit Handler-TypenGetTypeConstructors: Konstruktorsignaturen und ParameterAnalyzeMethod: Tiefe Methodenanalyse mit Überladungen und Attributen
Rückwärtssuche
FindImplementationsOf: Typen, die eine Schnittstelle implementieren oder von einer Basisklasse erbenFindMethodsReturning: Methoden, deren Rückgabetyp mit einem bestimmten Typ übereinstimmt (Open-Generic-Übereinstimmung unterstützt)FindReferencesTo: Breitere Suche über Parameter, Felder, Eigenschaften, Ereignisse und generische Argumente
Attribute & Metadaten
GetMemberAttributes: Attribute für bestimmte MemberGetParameterAttributes: Attributinformationen auf Parameterebene
XML-Dokumentation
GetXmlDocsForType: XML-Dokumentation auf Typ-Ebene extrahierenGetXmlDocsForMember: Member-spezifische Dokumentation (Zusammenfassung/Parameter/Rückgabewerte/Anmerkungen)
Projekt- & Solution-Analyse
AnalyzeSolution: .sln-Dateien parsen und Projekte auflistenAnalyzeProject: Projekt-Metadaten, Referenzen und Build-KonfigurationGetProjectOutputPaths: Ausgabeverzeichnisse für verschiedene Konfigurationen auflösenResolvePackageReferences: NuGet-Pakete auf zwischengespeicherte Assemblies abbildenFindDepsJsonDependencies: deps.json für Laufzeitabhängigkeiten parsen
Konfiguration & Laufzeit
GetRuntimeOptions: Aktuelle Serverkonfiguration und StandardwerteUpdateRuntimeOptions: Paginierung, Caching und Suchverhalten ändern
Erweiterte Filterung & Paginierung
Alle Member-Analyse-Tools unterstützen umfassende Filterung und Paginierung:
Filteroptionen:
caseSensitive(bool): Groß-/Kleinschreibung bei der Typ-/Member-ÜbereinstimmungnameContains(string): Filtern nach Teilstring des Member-NamenshasAttributeContains(string): Filtern nach Teilstring des AttributtypsincludePublic/includeNonPublic(bool): SichtbarkeitsfilterungincludeStatic/includeInstance(bool): Member-Typ-Filterung
Paginierung:
skip/take(int): Standard-Offset-PaginierungmaxItems(int): Maximale Ergebnisse pro AnfragecontinuationToken(string): Token-basierte Paginierung für große DatensätzesortBy/sortOrder(string): Sortierung nach Name/Zugriff in aufsteigender/absteigender Reihenfolge
Typauflösung:
Unterstützt vollständige Namen (
Namespace.Type), einfache Namen (Type) und verschachtelte Typen (Outer+Inner)Groß-/Kleinschreibung wird durch den Parameter
caseSensitivegesteuertAutomatische Fallback-Auflösung für mehrdeutige Typnamen
Antwort-Schema
Alle Tools geben einen stabilen JSON-Envelope zurück:
{ "kind": "type.list|member.methods|...", "version": "1.0.0", "data": { /* result */ } }Fehler verwenden eine konsistente Form:
{ "kind": "error", "version": "1.0.0", "code": "AssemblyNotFound|TypeNotFound|InvalidArgument|InternalError", "message": "...", "details": { } }
Common error codes include `AssemblyNotFound`, `TypeNotFound`, `MemberNotFound`, `InvalidArgument`, and `InternalError`.Mitwirken
Beiträge sind willkommen. Dieses Repo enthält eine .editorconfig mit modernen C#-Präferenzen (file-scoped namespaces, expression-bodied members, 4-Leerzeichen-Einrückung).
Commit-Nachrichtenformat
Dieses Projekt verwendet Conventional Commits für die automatisierte Changelog-Generierung. Alle Commits müssen diesem Format folgen:
type(scope): descriptionGültige Typen:
feat- Ein neues Featurefix- Ein Bugfixdocs- Nur Dokumentationsänderungenstyle- Änderungen am Codestil (Formatierung, Semikolons, etc.)refactor- Codeänderung, die weder einen Bug behebt noch ein Feature hinzufügtperf- Leistungsverbesserungtest- Hinzufügen oder Korrigieren von Testsbuild- Änderungen am Build-System oder an Abhängigkeitenci- Änderungen an der CI-Konfigurationchore- Andere Änderungen, die keine Quell- oder Testdateien modifizierenrevert- Macht einen vorherigen Commit rückgängig
Beispiele:
git commit -m "feat(tools): add new assembly analysis tool"
git commit -m "fix: resolve null reference in type loader"
git commit -m "docs(readme): update installation instructions"Entwicklungseinrichtung
# Restore .NET tools (versionize, husky)
dotnet tool restore
# Install git hooks for commit validation
dotnet husky installRichtlinien
Halten Sie Änderungen klein und fokussiert; fügen Sie Unit-Tests für neues Verhalten hinzu.
Befolgen Sie die Konventionen für Antwort-Envelopes und Fehlercodes beim Hinzufügen von Tools.
Führen Sie
dotnet buildunddotnet testlokal aus, bevor Sie einen PR öffnen.
Erstellen eines Releases
Maintainer können Releases wie folgt erstellen:
# Restore tools if not already done
dotnet tool restore
# Preview what will change
dotnet versionize --dry-run
# Create release (bumps version, updates changelog, creates git tag)
dotnet versionize
# Push changes and tag to trigger release workflow
git push --follow-tagsDer Release-Workflow wird automatisch:
Das Projekt bauen und testen
Ein GitHub-Release mit Changelog-Notizen erstellen
Das NuGet-Paket veröffentlichen
server.jsonmit der neuen Version aktualisieren
MCP-Registry
mcp-name: io.github.jcucci/dotnet-sherlock-mcp
Lizenz
Sherlock MCP für .NET ist unter der MIT-Lizenz lizenziert.
This server cannot be installed
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jcucci/dotnet-sherlock-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server