
Server MCP per l'analisi statica Slither dei contratti intelligenti Solidity
Un server Model Context Protocol (MCP) che fornisce capacità di analisi statica per smart contract Solidity utilizzando Slither.
Questo server MCP integra la funzionalità di analisi statica di Slither, rendendola accessibile attraverso il Model Context Protocol. Può analizzare progetti Solidity (Foundry, Hardhat, ecc.) e generare metadati completi su contratti, funzioni, gerarchie di ereditarietà e altro.
Puoi anche utilizzare Slither MCP come API Slither facile da usare per altri casi d'uso.
{$PROJECT_PATH}/artifacts/project_facts.json per caricamenti successivi più velociAnche se questa è una versione 1.0, prevediamo modifiche all'API man mano che riceveremo ulteriori feedback.
Questo progetto utilizza UV per la gestione dei pacchetti:
# Install dependencies
uv sync
# Or install in development mode
uv pip install -e .
Avvia il server Slither MCP:
uv run slither-mcp
Tutti gli strumenti accettano un parametro path che specifica quale progetto Solidity analizzare. I progetti vengono automaticamente memorizzati nella cache in <path>/artifacts/project_facts.json per query successive più veloci.
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
Assicurati che uvx sia nel tuo path di Cursor usando sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx
Nel tuo ~/.cursor/mcp.json:
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
Slither MCP include metriche opt-out per migliorare l'affidabilità, permettendoci di sapere con che frequenza gli LLM utilizzano ogni strumento e il loro tasso di chiamate riuscite. Le metriche sono abilitate per impostazione predefinita ma possono essere disabilitate permanentemente.
Non raccogliamo: parametri di chiamata degli strumenti, dettagli dei contratti, nomi di funzioni o qualsiasi informazione specifica del progetto.
Per disattivare permanentemente:
uv run slither-mcp --disable-metrics
Per i dettagli completi, consulta METRICS.md.
Il server espone strumenti per interrogare informazioni su contratti e funzioni. Tutti gli strumenti accettano un parametro path che specifica la directory del progetto Solidity da analizzare.
list_contracts - Elenca i contratti con filtriRichiede: path (directory del progetto)
Filtra i contratti per tipo (concreto, astratto, interfaccia, libreria) o pattern del percorso.
get_contract - Ottieni informazioni dettagliate sul contrattoRecupera i metadati completi del contratto, incluse funzioni, ereditarietà e flag.
get_contract_source - Ottieni il codice sorgente del contrattoRestituisce il codice sorgente completo del file Solidity contenente il contratto specificato.
get_function_source - Ottieni il codice sorgente della funzioneRestituisce il codice sorgente per una funzione specifica con i numeri di riga. Utile per analisi mirate.
list_functions - Elenca le funzioni con filtriFiltra le funzioni per contratto, visibilità o modificatori.
function_callees - Ottieni relazioni di chiamata delle funzioniRestituisce le chiamate interne, esterne e di libreria per una funzione, inclusa l'individuazione di chiamate di basso livello.
function_callers - Ottieni funzioni che chiamano una funzione targetRestituisce tutte le funzioni che chiamano la funzione target specificata, raggruppate per tipo di chiamata (interna, esterna, libreria). È l'inverso di function_callees.
get_inherited_contracts - Ottieni l'ereditarietà del contrattoRestituisce un albero ricorsivo di tutti i contratti da cui un contratto eredita (genitori e antenati).
get_derived_contracts - Ottieni contratti che ereditano da questoRestituisce un albero ricorsivo di tutti i contratti che ereditano da un contratto (figli e discendenti).
list_function_implementations - Trova implementazioni di funzioniTrova tutte le implementazioni di una firma di funzione attraverso i contratti.
list_detectors - Elenca i detector Slither disponibiliRestituisce metadati sui detector di Slither, inclusi nomi, descrizioni, livelli di impatto e valutazioni di confidenza. Supporta il filtraggio per nome o descrizione.
run_detectors - Ottieni risultati dei detector con filtriRestituisce i risultati dei detector memorizzati nella cache. Filtra per nomi dei detector, livello di impatto (Alto, Medio, Basso, Informativo) o livello di confidenza (Alto, Medio, Basso).
Tutti gli strumenti restituiscono risposte con un booleano success e campi dati o un error_message. Consulta le implementazioni dei singoli strumenti in slither_mcp/tools/ per schemi dettagliati e utilizzo.
Il pacchetto slither-mcp include un client Python tipizzato (SlitherMCPClient) per interagire programmaticamente con il server Slither MCP. È utile per costruire strumenti, script o agenti che necessitano di interrogare progetti Solidity.
Il client fornisce:
Per esempi di utilizzo dettagliati e documentazione, consulta CLIENT_USAGE.md.
Installa gli hook pre-commit per eseguire il linting prima dei commit:
pre-commit install
uv run pytest