
MCP-Server für die statische Analyse von Solidity-Smart-Contracts mit Slither
Ein Model Context Protocol (MCP)-Server, der statische Analysefunktionen für Smart Contracts in Solidity mithilfe von Slither bereitstellt.
Dieser MCP-Server kapselt die statische Analysefunktionalität von Slither und macht sie über das Model Context Protocol zugänglich. Er kann Solidity-Projekte (Foundry, Hardhat usw.) analysieren und umfassende Metadaten zu Contracts, Funktionen, Vererbungshierarchien und mehr erzeugen.
Sie können Slither MCP auch als einfach zu verwendende Slither-API für andere Anwendungsfälle nutzen.
{$PROJECT_PATH}/artifacts/project_facts.json zwischengespeichertAuch wenn dies eine v1.0-Veröffentlichung ist, erwarten wir API-Änderungen, sobald wir mehr Feedback erhalten.
Dieses Projekt verwendet UV für die Paketverwaltung:
# Install dependencies
uv sync
# Or install in development mode
uv pip install -e .
Starten Sie den Slither-MCP-Server:
uv run slither-mcp
Alle Tools akzeptieren einen Parameter path, der angibt, welches Solidity-Projekt analysiert werden soll. Projekte werden automatisch in <path>/artifacts/project_facts.json zwischengespeichert, um nachfolgende Abfragen zu beschleunigen.
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
Stellen Sie sicher, dass sich uvx mit sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx in Ihrem Cursor-Pfad befindet.
In Ihrer Datei ~/.cursor/mcp.json:
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
Slither MCP enthält Opt-out-Metriken, die uns helfen, die Zuverlässigkeit zu verbessern, indem sie uns zeigen, wie häufig LLMs welches Tool verwenden und wie hoch deren Erfolgsquote bei Aufrufen ist. Metriken sind standardmäßig aktiviert, können aber dauerhaft deaktiviert werden.
Wir erfassen nicht: Tool-Aufrufparameter, Contract-Details, Funktionsnamen oder projektspezifische Informationen.
So deaktivieren Sie die Metriken dauerhaft:
uv run slither-mcp --disable-metrics
Ausführliche Details finden Sie in METRICS.md.
Der Server stellt Tools zum Abfragen von Contract- und Funktionsinformationen bereit. Alle Tools akzeptieren einen Parameter path, der das zu analysierende Solidity-Projektverzeichnis angibt.
list_contracts - Contracts mit Filtern auflistenErfordert: path (Projektverzeichnis)
Filtert Contracts nach Typ (concrete, abstract, interface, library) oder Pfadmuster.
get_contract - Detaillierte Contract-Informationen abrufenRuft vollständige Contract-Metadaten einschließlich Funktionen, Vererbung und Flags ab.
get_contract_source - Contract-Quellcode abrufenGibt den vollständigen Quellcode der Solidity-Datei zurück, die den angegebenen Contract enthält.
get_function_source - Funktionsquellcode abrufenGibt den Quellcode einer bestimmten Funktion mit Zeilennummern zurück. Nützlich für gezielte Analysen.
list_functions - Funktionen mit Filtern auflistenFiltert Funktionen nach Contract, Sichtbarkeit oder Modifiern.
function_callees - Funktionsaufrufbeziehungen abrufenGibt interne, externe und Library-Callees einer Funktion zurück, einschließlich der Erkennung von Low-Level-Aufrufen.
function_callers - Funktionen abrufen, die eine Zielfunktion aufrufenGibt alle Funktionen zurück, die die angegebene Zielfunktion aufrufen, gruppiert nach Aufruftyp (internal, external, library). Dies ist die Umkehrung von function_callees.
get_inherited_contracts - Contract-Vererbung abrufenGibt einen rekursiven Baum aller Contracts zurück, von denen ein Contract erbt (Eltern und Vorfahren).
get_derived_contracts - Contracts abrufen, die von diesem erbenGibt einen rekursiven Baum aller Contracts zurück, die von einem Contract erben (Kinder und Nachfahren).
list_function_implementations - Funktionsimplementierungen findenFindet alle Implementierungen einer Funktionssignatur über Contracts hinweg.
list_detectors - Verfügbare Slither-Detektoren auflistenGibt Metadaten zu Slither-Detektoren zurück, einschließlich Namen, Beschreibungen, Auswirkungsstufen und Konfidenzratings. Unterstützt das Filtern nach Name oder Beschreibung.
run_detectors - Detektorergebnisse mit Filterung abrufenGibt zwischengespeicherte Detektorergebnisse zurück. Filtern Sie nach Detektornamen, Auswirkungsstufe (High, Medium, Low, Informational) oder Konfidenzstufe (High, Medium, Low).
Alle Tools geben Antworten mit einem booleschen Wert success und entweder Datenfeldern oder einer error_message zurück. Detaillierte Schemata und Verwendung finden Sie in den jeweiligen Tool-Implementierungen unter slither_mcp/tools/.
Das Paket slither-mcp enthält einen typisierten Python-Client (SlitherMCPClient) für die programmatische Interaktion mit dem Slither-MCP-Server. Dies ist nützlich für die Erstellung von Tools, Skripte oder Agents, die Solidity-Projekte abfragen müssen.
Der Client bietet:
Ausführliche Verwendungsbeispiele und Dokumentation finden Sie in CLIENT_USAGE.md.
Installieren Sie Pre-Commit-Hooks, um vor Commits Linting auszuführen:
pre-commit install
uv run pytest