
Serveur MCP pour l'analyse statique Slither des contrats intelligents Solidity
Un serveur Model Context Protocol (MCP) qui fournit des capacités d'analyse statique pour les contrats intelligents Solidity en utilisant Slither.
Ce serveur MCP encapsule les fonctionnalités d'analyse statique de Slither, les rendant accessibles via le Model Context Protocol. Il peut analyser des projets Solidity (Foundry, Hardhat, etc.) et générer des métadonnées complètes sur les contrats, les fonctions, les hiérarchies d'héritage, etc.
Vous pouvez également utiliser Slither MCP comme une API Slither facile à utiliser pour d'autres cas d'usage.
{$PROJECT_PATH}/artifacts/project_facts.json pour des chargements ultérieurs plus rapidesBien qu'il s'agisse d'une version v1.0, nous nous attendons à des modifications de l'API suite aux retours.
Ce projet utilise UV pour la gestion des paquets :
# Installer les dépendances
uv sync
# Ou installer en mode développement
uv pip install -e .
Démarrez le serveur MCP Slither :
uv run slither-mcp
Tous les outils acceptent un paramètre path qui spécifie le projet Solidity à analyser. Les projets sont automatiquement mis en cache dans <path>/artifacts/project_facts.json pour des requêtes ultérieures plus rapides.
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
Assurez-vous que uvx est dans votre PATH Cursor en utilisant sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx
Dans votre ~/.cursor/mcp.json :
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
Slither MCP inclut des métriques facultatives pour améliorer la fiabilité en nous permettant de savoir à quelle fréquence les LLM utilisent chaque outil et leur taux d'appel réussi. Les métriques sont activées par défaut mais peuvent être désactivées définitivement.
Nous ne collectons pas : les paramètres d'appel d'outil, les détails des contrats, les noms de fonctions ou toute information spécifique au projet.
Pour vous désinscrire définitivement :
uv run slither-mcp --disable-metrics
Pour plus de détails, voir METRICS.md.
Le serveur expose des outils pour interroger les informations des contrats et des fonctions. Tous les outils acceptent un paramètre path qui spécifie le répertoire du projet Solidity à analyser.
list_contracts - Liste des contrats avec filtresNécessite : path (répertoire du projet)
Filtrez les contrats par type (concret, abstrait, interface, bibliothèque) ou par motif de chemin.
get_contract - Obtenir les informations détaillées d'un contratRécupérez les métadonnées complètes du contrat, y compris les fonctions, l'héritage et les indicateurs.
get_contract_source - Obtenir le code source du contratRetourne le code source complet du fichier Solidity contenant le contrat spécifié.
get_function_source - Obtenir le code source d'une fonctionRetourne le code source d'une fonction spécifique avec les numéros de ligne. Utile pour une analyse ciblée.
list_functions - Liste des fonctions avec filtresFiltrez les fonctions par contrat, visibilité ou modificateurs.
function_callees - Obtenir les relations d'appel d'une fonctionRetourne les appels internes, externes et de bibliothèque pour une fonction, y compris la détection d'appels de bas niveau.
function_callers - Obtenir les fonctions qui appellent une fonction cibleRetourne toutes les fonctions qui appellent la fonction cible spécifiée, regroupées par type d'appel (interne, externe, bibliothèque). C'est l'inverse de function_callees.
get_inherited_contracts - Obtenir l'héritage d'un contratRetourne un arbre récursif de tous les contrats dont un contrat hérite (parents et ancêtres).
get_derived_contracts - Obtenir les contrats qui héritent de celui-ciRetourne un arbre récursif de tous les contrats qui héritent d'un contrat (enfants et descendants).
list_function_implementations - Trouver les implémentations de fonctionsTrouve toutes les implémentations d'une signature de fonction dans les contrats.
list_detectors - Liste des détecteurs Slither disponiblesRetourne les métadonnées sur les détecteurs Slither, y compris les noms, descriptions, niveaux d'impact et évaluations de confiance. Prend en charge le filtrage par nom ou description.
run_detectors - Obtenir les résultats des détecteurs avec filtrageRetourne les résultats des détecteurs mis en cache. Filtrez par noms de détecteurs, niveau d'impact (Élevé, Moyen, Faible, Informationnel) ou niveau de confiance (Élevé, Moyen, Faible).
Tous les outils retournent des réponses avec un booléen success et soit des champs de données, soit un error_message. Voir les implémentations individuelles des outils dans slither_mcp/tools/ pour les schémas détaillés et l'utilisation.
Le paquet slither-mcp inclut un client Python typé (SlitherMCPClient) pour interagir programmatiquement avec le serveur MCP Slither. Ceci est utile pour construire des outils, scripts ou agents qui doivent interroger des projets Solidity.
Le client fournit :
Pour des exemples d'utilisation détaillés et la documentation, voir CLIENT_USAGE.md.
Installez les hooks pré-commit pour exécuter le linting avant les commits :
pre-commit install
uv run pytest