
Solidity 스마트 계약의 Slither 정적 분석을 위한 MCP 서버
Slither를 사용하여 Solidity 스마트 계약에 대한 정적 분석 기능을 제공하는 Model Context Protocol(MCP) 서버입니다.
이 MCP 서버는 Slither 정적 분석 기능을 래핑하여 Model Context Protocol을 통해 접근할 수 있게 합니다. Foundry, Hardhat 등과 같은 Solidity 프로젝트를 분석하고 계약, 함수, 상속 계층 등에 대한 포괄적인 메타데이터를 생성할 수 있습니다.
또한 Slither MCP를 다른 사용 사례를 위한 사용하기 쉬운 Slither API로 사용할 수 있습니다.
{$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
모든 도구는 분석할 Solidity 프로젝트를 지정하는 path 매개변수를 허용합니다. 프로젝트는 이후 쿼리를 더 빠르게 실행하기 위해 <path>/artifacts/project_facts.json에 자동으로 캐시됩니다.
claude mcp add --transport stdio --scope user slither -- uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp
sudo ln -s ~/.local/bin/uvx /usr/local/bin/uvx를 사용하여 uvx가 Cursor 경로에 있는지 확인하세요.
~/.cursor/mcp.json에 다음을 입력하세요:
{
"mcpServers": {
"slither-mcp": {
"command": "uvx --from git+https://github.com/trailofbits/slither-mcp slither-mcp",
}
}
}
Slither MCP는 LLM이 각 도구를 사용하는 빈도와 성공적인 호출 비율을 파악하여 안정성을 개선하는 데 도움이 되는 옵트아웃 메트릭을 포함합니다. 메트릭은 기본적으로 활성화되어 있지만 영구적으로 비활성화할 수 있습니다.
수집하지 않는 정보: 도구 호출 매개변수, 계약 세부 정보, 함수 이름 또는 프로젝트별 정보.
영구적으로 옵트아웃하려면:
uv run slither-mcp --disable-metrics
전체 세부 정보는 METRICS.md를 참조하세요.
서버는 계약 및 함수 정보를 조회하기 위한 도구를 노출합니다. 모든 도구는 분석할 Solidity 프로젝트 디렉터리를 지정하는 path 매개변수를 허용합니다.
list_contracts - 필터를 사용하여 계약 나열필요: path (프로젝트 디렉터리)
유형(concrete, abstract, interface, library) 또는 경로 패턴으로 계약을 필터링합니다.
get_contract - 계약에 대한 자세한 정보 가져오기함수, 상속 및 플래그를 포함한 전체 계약 메타데이터를 검색합니다.
get_contract_source - 계약 소스 코드 가져오기지정된 계약이 포함된 Solidity 파일의 전체 소스 코드를 반환합니다.
get_function_source - 함수 소스 코드 가져오기특정 함수의 소스 코드를 줄 번호와 함께 반환합니다. 집중 분석에 유용합니다.
list_functions - 필터를 사용하여 함수 나열계약, 가시성 또는 수정자로 함수를 필터링합니다.
function_callees - 함수 호출 관계 가져오기함수에 대한 내부, 외부 및 라이브러리 피호출자를 반환하며 저수준 호출 탐지를 포함합니다.
function_callers - 대상 함수를 호출하는 함수 가져오기지정된 대상 함수를 호출하는 모든 함수를 호출 유형(내부, 외부, 라이브러리)별로 그룹화하여 반환합니다. 이는 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 패키지는 Slither MCP 서버와 프로그래밍 방식으로 상호 작용하기 위한 타입 기반 Python 클라이언트(SlitherMCPClient)를 포함합니다. 이는 Solidity 프로젝트를 쿼리해야 하는 도구, 스크립트 또는 에이전트를 구축하는 데 유용합니다.
클라이언트는 다음을 제공합니다:
자세한 사용 예제와 문서는 CLIENT_USAGE.md를 참조하세요.
커밋 전 린팅을 실행하도록 pre-commit 훅을 설치합니다:
pre-commit install
uv run pytest