
Servidor MCP para análise estática Slither de contratos inteligentes Solidity
Um servidor Model Context Protocol (MCP) que fornece capacidades de análise estática para contratos inteligentes Solidity utilizando Slither.
Este servidor MCP encapsula a funcionalidade de análise estática do Slither, tornando-a acessível através do Model Context Protocol. Ele pode analisar projetos Solidity (Foundry, Hardhat, etc.) e gerar metadados abrangentes sobre contratos, funções, hierarquias de herança e muito mais.
Você também pode usar o Slither MCP como uma API Slither fácil de usar para outros casos de uso.
{$PROJECT_PATH}/artifacts/project_facts.json para carregamentos subsequentes mais rápidosEmbora esta seja uma versão v1.0, antecipamos mudanças na API à medida que recebermos mais feedback.
Este projeto utiliza UV para gerenciamento de pacotes:
# Instalar dependências
uv sync
# Ou instalar em modo de desenvolvimento
uv pip install -e .
Inicie o servidor Slither MCP:
uv run slither-mcp
Todas as ferramentas aceitam um parâmetro path que especifica qual projeto Solidity analisar. Projetos são automaticamente armazenados em cache em <path>/artifacts/project_facts.json para consultas subsequentes mais rápidas.
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
Certifique-se de que o uvx esteja no seu PATH do Cursor usando sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx
No seu ~/.cursor/mcp.json:
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
O Slither MCP inclui métricas opcionais para ajudar a melhorar a confiabilidade, informando-nos com que frequência os LLMs usam cada ferramenta e sua taxa de chamadas bem-sucedidas. As métricas estão ativadas por padrão, mas podem ser permanentemente desativadas.
Não coletamos: parâmetros de chamada de ferramenta, detalhes de contratos, nomes de funções ou qualquer informação específica do projeto.
Para desativar permanentemente:
uv run slither-mcp --disable-metrics
Para detalhes completos, veja METRICS.md.
O servidor expõe ferramentas para consultar informações de contratos e funções. Todas as ferramentas aceitam um parâmetro path que especifica o diretório do projeto Solidity a ser analisado.
list_contracts - Listar contratos com filtrosRequer: path (diretório do projeto)
Filtrar contratos por tipo (concreto, abstrato, interface, biblioteca) ou padrão de caminho.
get_contract - Obter informações detalhadas do contratoRecuperar metadados completos do contrato, incluindo funções, herança e flags.
get_contract_source - Obter código-fonte do contratoRetorna o código-fonte completo do arquivo Solidity que contém o contrato especificado.
get_function_source - Obter código-fonte da funçãoRetorna o código-fonte de uma função específica com números de linha. Útil para análise focada.
list_functions - Listar funções com filtrosFiltrar funções por contrato, visibilidade ou modificadores.
function_callees - Obter relacionamentos de chamadas de funçãoRetorna chamadas internas, externas e de biblioteca para uma função, incluindo detecção de chamadas de baixo nível.
function_callers - Obter funções que chamam uma função alvoRetorna todas as funções que chamam a função alvo especificada, agrupadas por tipo de chamada (interna, externa, biblioteca). Esta é a inversa de function_callees.
get_inherited_contracts - Obter herança de contratoRetorna uma árvore recursiva de todos os contratos dos quais um contrato herda (pais e ancestrais).
get_derived_contracts - Obter contratos que herdam desteRetorna uma árvore recursiva de todos os contratos que herdam de um contrato (filhos e descendentes).
list_function_implementations - Encontrar implementações de funçãoEncontra todas as implementações de uma assinatura de função entre contratos.
list_detectors - Listar detectores Slither disponíveisRetorna metadados sobre os detectores do Slither, incluindo nomes, descrições, níveis de impacto e classificações de confiança. Suporta filtragem por nome ou descrição.
run_detectors - Obter resultados dos detectores com filtragemRetorna resultados em cache dos detectores. Filtre por nomes de detectores, nível de impacto (Alto, Médio, Baixo, Informativo) ou nível de confiança (Alto, Médio, Baixo).
Todas as ferramentas retornam respostas com um booleano success e, ou campos de dados, ou um error_message. Consulte as implementações individuais das ferramentas em slither_mcp/tools/ para esquemas detalhados e uso.
O pacote slither-mcp inclui um cliente Python tipado (SlitherMCPClient) para interagir programaticamente com o servidor Slither MCP. Isso é útil para construir ferramentas, scripts ou agentes que precisam consultar projetos Solidity.
O cliente fornece:
Para exemplos de uso detalhados e documentação, consulte CLIENT_USAGE.md.
Instale os hooks pre-commit para executar linting antes dos commits:
pre-commit install
uv run pytest