
Servidor MCP para el análisis estático de contratos inteligentes de Solidity con Slither
Un servidor del Model Context Protocol (MCP) que proporciona capacidades de análisis estático para contratos inteligentes de Solidity mediante Slither.
Este servidor MCP envuelve la funcionalidad de análisis estático de Slither, haciéndola accesible a través del Model Context Protocol. Puede analizar proyectos de Solidity (Foundry, Hardhat, etc.) y generar metadatos exhaustivos sobre contratos, funciones, jerarquías de herencia y más.
También puedes utilizar Slither MCP como una API de Slither fácil de usar para otros casos de uso.
{$PROJECT_PATH}/artifacts/project_facts.json para cargas posteriores más rápidasAunque esta es una versión v1.0, prevemos cambios en la API a medida que recibamos más comentarios.
Este proyecto utiliza UV para la gestión de paquetes:
# Install dependencies
uv sync
# Or install in development mode
uv pip install -e .
Inicia el servidor Slither MCP:
uv run slither-mcp
Todas las herramientas aceptan un parámetro path que especifica qué proyecto de Solidity se va a analizar. Los proyectos se guardan automáticamente en caché en <path>/artifacts/project_facts.json para consultas posteriores más rápidas.
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
Asegúrate de que uvx esté en el PATH de Cursor mediante sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx
En tu ~/.cursor/mcp.json:
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
Slither MCP incluye métricas de exclusión voluntaria (opt-out) para ayudar a mejorar la fiabilidad, informándonos de con qué frecuencia los LLM utilizan cada herramienta y su tasa de llamadas correctas. Las métricas están habilitadas por defecto, pero pueden desactivarse de forma permanente.
No recopilamos: parámetros de llamadas a herramientas, detalles de contratos, nombres de funciones ni ninguna información específica del proyecto.
Para desactivarlas de forma permanente:
uv run slither-mcp --disable-metrics
Para obtener todos los detalles, consulta METRICS.md.
El servidor expone herramientas para consultar información de contratos y funciones. Todas las herramientas aceptan un parámetro path que especifica el directorio del proyecto Solidity que se va a analizar.
list_contracts - Listar contratos con filtrosRequiere: path (directorio del proyecto)
Filtra contratos por tipo (concreto, abstracto, interfaz, biblioteca) o por patrón de ruta.
get_contract - Obtener información detallada del contratoRecupera los metadatos completos del contrato, incluidas funciones, herencia e indicadores.
get_contract_source - Obtener el código fuente del contratoDevuelve el código fuente completo del archivo Solidity que contiene el contrato especificado.
get_function_source - Obtener el código fuente de la funciónDevuelve el código fuente de una función específica con números de línea. Útil para análisis centrados.
list_functions - Listar funciones con filtrosFiltra funciones por contrato, visibilidad o modificadores.
function_callees - Obtener relaciones de llamadas de una funciónDevuelve las funciones llamadas internas, externas y de biblioteca de una función, incluida la detección de llamadas de bajo nivel.
function_callers - Obtener funciones que llaman a una función objetivoDevuelve todas las funciones que llaman a la función objetivo especificada, agrupadas por tipo de llamada (interna, externa, biblioteca). Es la operación inversa de function_callees.
get_inherited_contracts - Obtener herencia de contratosDevuelve un árbol recursivo de todos los contratos de los que hereda un contrato (padres y ancestros).
get_derived_contracts - Obtener contratos que heredan de uno dadoDevuelve un árbol recursivo de todos los contratos que heredan de un contrato (hijos y descendientes).
list_function_implementations - Buscar implementaciones de funcionesEncuentra todas las implementaciones de una firma de función en todos los contratos.
list_detectors - Listar los detectores de Slither disponiblesDevuelve metadatos sobre los detectores de Slither, incluidos nombres, descripciones, niveles de impacto y niveles de confianza. Admite el filtrado por nombre o descripción.
run_detectors - Obtener resultados de detectores con filtradoDevuelve resultados de detectores almacenados en caché. Filtra por nombres de detectores, nivel de impacto (High, Medium, Low, Informational) o nivel de confianza (High, Medium, Low).
Todas las herramientas devuelven respuestas con un booleano success y, o bien campos de datos, o un error_message. Consulta las implementaciones individuales de las herramientas en slither_mcp/tools/ para ver los esquemas detallados y su uso.
El paquete slither-mcp incluye un cliente Python tipado (SlitherMCPClient) para interactuar programáticamente con el servidor Slither MCP. Esto es útil para crear herramientas, scripts o agentes que necesiten consultar proyectos de Solidity.
El cliente proporciona:
Para ver ejemplos de uso detallados y documentación, consulta CLIENT_USAGE.md.
Instala los hooks de pre-commit para ejecutar el linting antes de cada commit:
pre-commit install
uv run pytest