sharplens-mcp
SharpLensMcp
Ein Model Context Protocol (MCP)-Server, der 62 KI-optimierte Tools für die semantische .NET/C#-Codeanalyse, Navigation, Refactoring und Codegenerierung mittels Microsoft Roslyn bereitstellt.
Entwickelt für KI-Coding-Agenten – bietet compilergenaues Codeverständnis, das eine KI allein durch das Lesen von Quelldateien nicht ableiten kann.
Installation
Via NuGet (Empfohlen)
dotnet tool install -g SharpLensMcpAnschließend ausführen mit:
sharplensVia npm
npx -y sharplens-mcpAus Quellcode bauen
dotnet build -c Release
dotnet publish -c Release -o ./publishClaude Code Einrichtung
Tool installieren (eines auswählen):
dotnet tool install -g SharpLensMcp
# or
npx -y sharplens-mcp.mcp.jsonim Projektstammverzeichnis erstellen:
{
"mcpServers": {
"sharplens": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sharplens-mcp"],
"env": {
"DOTNET_SOLUTION_PATH": "/path/to/your/Solution.sln (or .slnx)"
}
}
}
}Claude Code neu starten, um den MCP-Server zu laden
Überprüfen, indem Sie Claude bitten, einen Health-Check auf dem Roslyn-Server durchzuführen
Warum dies mit Claude Code verwenden?
Claude Code verfügt über native LSP-Unterstützung für grundlegende Navigation (Gehe zu Definition, Referenzen finden). SharpLensMcp fügt tiefe semantische Analyse hinzu:
Fähigkeit | Natives LSP | SharpLensMcp |
Gehe zu Definition | ✅ | ✅ |
Referenzen finden | ✅ | ✅ |
Async-Methoden ohne CancellationToken finden | ❌ | ✅ |
Auswirkungsanalyse (was geht kaputt?) | ❌ | ✅ |
Erkennung von totem Code | ❌ | ✅ |
Komplexitätsmetriken | ❌ | ✅ |
Sicheres Refactoring mit Vorschau | ❌ | ✅ |
Batch-Operationen | ❌ | ✅ |
Konfiguration
Umgebungsvariable | Beschreibung | Standard |
| Pfad zur | Keine (muss |
| Absolute statt relative Pfade verwenden |
|
| Ausführlichkeit der Protokollierung: |
|
| Timeout für lang laufende Operationen |
|
| Maximale Anzahl der zurückzugebenden Diagnosen |
|
| Semantisches Modell-Caching aktivieren |
|
Wenn DOTNET_SOLUTION_PATH nicht gesetzt ist, müssen Sie das Tool load_solution aufrufen, bevor Sie andere Tools verwenden.
Tipps zur Konfiguration von KI-Agenten
KI-Modelle können eine trainierte Tendenz haben, ihre nativen Tools (Grep, Read, LSP) anstelle von MCP-Server-Tools zu verwenden, selbst wenn SharpLensMcp bessere Fähigkeiten bietet.
Um eine optimale Tool-Nutzung sicherzustellen:
Claude Code: Fügen Sie dies zu Ihrer
CLAUDE.mdim Projekt hinzu:For C# code analysis, prefer SharpLensMcp tools over native tools: - Use `roslyn:search_symbols` instead of Grep for finding symbols - Use `roslyn:get_method_source` instead of Read for viewing methods - Use `roslyn:find_references` for semantic (not text) referencesAndere MCP-Clients: Konfigurieren Sie die Tool-Priorität im System-Prompt Ihres Agenten
Die semantische Analyse von Roslyn ist genauer als textbasierte Suche, insbesondere bei überladenen Methoden, partiellen Klassen und Vererbungshierarchien.
Verantwortung des Agenten: Dokumentensynchronisierung
Wichtig: SharpLensMcp unterhält eine In-Memory-Repräsentation Ihrer Lösung für schnelle Abfragen. Wenn Dateien extern geändert werden (über Edit/Write-Tools), ist der Agent für die Synchronisierung der Änderungen verantwortlich.
Wann sync_documents aufrufen:
Aktion |
|
Edit-Tool zum Ändern von .cs-Dateien verwendet | ✅ Ja |
Write-Tool zum Erstellen neuer .cs-Dateien verwendet | ✅ Ja |
.cs-Dateien gelöscht | ✅ Ja |
SharpLensMcp Refactoring-Tools verwendet (umbenennen, extrahieren, etc.) | ❌ Nein (automatisch aktualisiert) |
.csproj-Dateien geändert | ❌ Nein (verwenden Sie stattdessen |
Verwendung:
# After editing specific files
sync_documents(filePaths: ["src/MyClass.cs", "src/MyService.cs"])
# After bulk changes - sync all documents
sync_documents()Warum dieses Design?
Dies spiegelt die Funktionsweise von LSP (Language Server Protocol) wider – der Client (Editor) benachrichtigt den Server über Änderungen. Dieser Ansatz:
Eliminiert Race Conditions (der Agent steuert das Timing)
Vermeidet die Komplexität von Datei-Watchern und plattformspezifische Eigenheiten
Ist schneller als ein vollständiges Neuladen der Lösung
Gibt Agenten explizite Kontrolle über den Workspace-Status
Wenn Sie nicht synchronisieren: Abfragen können veraltete Daten zurückgeben (alte Methodensignaturen, fehlende neue Dateien, etc.)
Funktionen
62 semantische Analysetools – Navigation, Refactoring, Codegenerierung, Diagnose, Erkennung
KI-optimierte Beschreibungen – Klare USAGE/OUTPUT/WORKFLOW-Muster
Strukturierte Antworten – Konsistentes
success/error/data-Format mitsuggestedNextToolsNullbasierte Koordinaten – Klare Warnungen zur Vermeidung von Off-by-One-Fehlern
Vorschaumodus – Sicheres Refactoring mit Vorschau vor der Anwendung
Batch-Operationen – Mehrere Abfragen in einem Aufruf zur Reduzierung des Kontextverbrauchs
Tool-Kategorien
Navigation & Erkennung (17 Tools)
Tool | Beschreibung |
| Semantische Info an Position |
| Zu Symboldefinition springen |
| Alle Referenzen in der gesamten Lösung |
| Interface-/abstrakte Implementierungen |
| Auswirkungsanalyse - wer ruft dies auf? |
| Vererbungskette |
| Glob-Mustersuche ( |
| Multi-Filter-Suche (async, public, etc.) |
| Alle Member nach Typname |
| Mehrere Typen in einem Aufruf |
| Detaillierte Signatur nach Name |
| Alle Unterklassen finden |
| Vollständige Vererbungskette |
| Attribute eines Symbols auflisten |
| Umschließendes Symbol an Position |
| Alle Überladungen einer Methode |
| Typen/Member nach Attribut finden |
Analyse (11 Tools)
Tool | Beschreibung |
| Compiler-Fehler/-Warnungen |
| Variablenzuweisungen und -nutzung |
| Verzweigung/Erreichbarkeit |
| Was geht bei Änderung kaputt? |
| Kann A nach B zugewiesen werden? |
| Was ruft diese Methode auf? |
| Erkennung von totem Code |
| Kompilierungsprüfung ohne Schreiben |
| Zyklomatisch, Verschachtelung, LOC, kognitiv |
| Projekt- und Namespace-Zykluserkennung |
| Nicht implementierte Interface-/abstrakte Member |
Refactoring (14 Tools)
Tool | Beschreibung |
| Sicheres Umbenennen in der gesamten Lösung |
| Parameter hinzufügen/entfernen/neu anordnen |
| Extrahieren mit Datenflussanalyse |
| Interface aus Klasse generieren |
| Aus Feldern/Eigenschaften |
| Sortieren und ungenutzte entfernen |
| Batch-Organisierung mehrerer Dateien |
| Batch-Formatierung von Dateien im Projekt |
| Alle Roslyn-Refactorings an Position |
| Beliebiges Refactoring nach Titel anwenden |
| Interface-Stubs generieren |
| Feld zu Eigenschaft |
| Temporäre Variable inlinen |
| Ausdruck in Variable extrahieren |
Codegenerierung (2 Tools)
Tool | Beschreibung |
| ArgumentNullException-Wächter generieren |
| Equals/GetHashCode/Operatoren |
Zusammengesetzte Tools (6 Tools)
Tool | Beschreibung |
| Vollständige Typinfo in einem Aufruf |
| Signatur + Aufrufer + ausgehende Aufrufe + Ort |
| Dateizusammenfassung mit Diagnosen |
| Quellcode nach Name |
| Mehrere Methodenquellen in einem Aufruf |
| Wie man einen Typ erstellt |
Erkennung (2 Tools)
Tool | Beschreibung |
| DI-Dienstregistrierungen scannen |
| Reflexions-/dynamische Nutzung erkennen |
Infrastruktur (10 Tools)
Tool | Beschreibung |
| Serverstatus |
| .sln/.slnx für Analyse laden |
| Dateiänderungen in geladene Lösung synchronisieren |
| Lösungsstruktur |
| Projektabhängigkeiten |
| Verfügbare Korrekturen für eine Diagnose |
| Spezifische Code-Korrektur anwenden |
| NuGet-Paketliste pro Projekt |
| Aktive Source-Generatoren auflisten |
| Generierten Quellcode anzeigen |
Andere MCP-Clients
Für andere MCP-Clients als Claude Code, fügen Sie dies zu Ihrer Konfiguration hinzu:
{
"mcpServers": {
"sharplens": {
"command": "sharplens",
"args": [],
"env": {
"DOTNET_SOLUTION_PATH": "/path/to/your/Solution.sln (or .slnx)"
}
}
}
}Verwendung
Lösung laden: Rufen Sie
roslyn:load_solutionmit dem Pfad zur.slnoder.slnxDatei auf (oder setzen SieDOTNET_SOLUTION_PATH)Code analysieren: Verwenden Sie eines der 57 Tools für Navigation, Analyse, Refactoring
Sicher refactoren: Änderungen vor der Anwendung mit
preview: truein der Vorschau anzeigen
Architektur
MCP Client (AI Agent)
| stdin/stdout (JSON-RPC 2.0)
v
SharpLensMcp
- Protocol handling
- 57 AI-optimized tools
|
v
Microsoft.CodeAnalysis (Roslyn)
- MSBuildWorkspace
- SemanticModel
- SymbolFinderAnforderungen
.NET 8.0 SDK oder neuer — funktioniert mit .NET 8, 9, 10 und zukünftigen Versionen. Analysiert jedes .NET 8+ Projekt/Lösung.
MCP-kompatibler KI-Agent
Entwicklung
Neue Tools hinzufügen
Methode zu
src/RoslynService.cshinzufügen:
public async Task<object> YourToolAsync(string param1, int? param2 = null)
{
EnsureSolutionLoaded();
// Your logic...
return CreateSuccessResponse(
data: new { /* results */ },
suggestedNextTools: new[] { "next_tool_hint" }
);
}Tool-Definition zu
src/McpServer.cshinzufügen inHandleListToolsAsyncRouting zu
src/McpServer.cshinzufügen imHandleToolCallAsyncSwitchBauen und veröffentlichen:
dotnet build -c Release
dotnet publish -c Release -o ./publishWichtige Dateien
Datei | Zweck |
| Tool-Implementierungen (57 Methoden) |
| MCP-Protokoll, Tool-Definitionen, Routing |
Lizenz
MIT - Siehe LICENSE für Details.
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/pzalutski-pixel/sharplens-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server