
MCP-сервер для статического анализа смарт-контрактов Solidity с помощью Slither
Сервер Model Context Protocol (MCP), предоставляющий возможности статического анализа смарт-контрактов Solidity с помощью Slither.
Этот MCP-сервер оборачивает функциональность статического анализа Slither, делая её доступной через Model Context Protocol. Он может анализировать Solidity-проекты (Foundry, Hardhat и т.д.) и генерировать подробные метаданные о контрактах, функциях, иерархиях наследования и многом другом.
Вы также можете использовать Slither MCP как простой в использовании API Slither для других сценариев.
{$PROJECT_PATH}/artifacts/project_facts.json для ускорения последующих загрузокХотя это релиз v1.0, мы ожидаем изменений API по мере получения обратной связи.
Этот проект использует UV для управления пакетами:
# Install dependencies
uv sync
# Or install in development mode
uv pip install -e .
Запустите сервер Slither MCP:
uv run slither-mcp
Все инструменты принимают параметр path, который указывает, какой Solidity-проект анализировать. Проекты автоматически кэшируются в <path>/artifacts/project_facts.json для ускорения последующих запросов.
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
Убедитесь, что uvx находится в пути Cursor, используя sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx
В вашем ~/.cursor/mcp.json:
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
Slither MCP включает метрики с возможностью отказа (opt-out), которые помогают повысить надёжность, позволяя нам знать, как часто LLM используют каждый инструмент и какова доля успешных вызовов. Метрики включены по умолчанию, но их можно отключить навсегда.
Мы не собираем: параметры вызовов инструментов, детали контрактов, имена функций или любую информацию, специфичную для проекта.
Чтобы отказаться навсегда:
uv run slither-mcp --disable-metrics
Подробные сведения см. в METRICS.md.
Сервер предоставляет инструменты для запроса информации о контрактах и функциях. Все инструменты принимают параметр path, который указывает каталог Solidity-проекта для анализа.
list_contracts - Список контрактов с фильтрамиТребуется: path (каталог проекта)
Фильтрация контрактов по типу (concrete, abstract, interface, library) или по шаблону пути.
get_contract - Получить подробную информацию о контрактеВозвращает полные метаданные контракта, включая функции, наследование и флаги.
get_contract_source - Получить исходный код контрактаВозвращает полный исходный код Solidity-файла, содержащего указанный контракт.
get_function_source - Получить исходный код функцииВозвращает исходный код конкретной функции с номерами строк. Полезно для целенаправленного анализа.
list_functions - Список функций с фильтрамиФильтрация функций по контракту, видимости или модификаторам.
function_callees - Получить связи вызовов функцииВозвращает внутренние, внешние и библиотечные вызываемые функции (callees) для функции, включая обнаружение низкоуровневых вызовов.
function_callers - Получить функции, которые вызывают целевую функциюВозвращает все функции, которые вызывают указанную целевую функцию, сгруппированные по типу вызова (internal, external, library). Это обратная операция к function_callees.
get_inherited_contracts - Получить наследование контрактаВозвращает рекурсивное дерево всех контрактов, от которых наследуется контракт (родители и предки).
get_derived_contracts - Получить контракты, которые наследуются от данногоВозвращает рекурсивное дерево всех контрактов, которые наследуются от контракта (дочерние контракты и потомки).
list_function_implementations - Найти реализации функцииНаходит все реализации сигнатуры функции в контрактах.
list_detectors - Список доступных детекторов SlitherВозвращает метаданные о детекторах Slither, включая названия, описания, уровни воздействия и оценки достоверности. Поддерживает фильтрацию по названию или описанию.
run_detectors - Получить результаты детекторов с фильтрациейВозвращает кэшированные результаты детекторов. Фильтрация по названиям детекторов, уровню воздействия (High, Medium, Low, Informational) или уровню достоверности (High, Medium, Low).
Все инструменты возвращают ответы с логическим значением success и либо полями данных, либо error_message. См. реализации отдельных инструментов в каталоге slither_mcp/tools/ для получения подробных схем и примеров использования.
Пакет slither-mcp включает типизированный Python-клиент (SlitherMCPClient) для программного взаимодействия с сервером Slither MCP. Это полезно для создания инструментов, скриптов или агентов, которым необходимо запрашивать Solidity-проекты.
Клиент предоставляет:
Подробные примеры использования и документацию см. в CLIENT_USAGE.md.
Установите pre-commit хуки для запуска линтинга перед коммитами:
pre-commit install
uv run pytest