
Solidity स्मार्ट अनुबंधों के Slither स्थैतिक विश्लेषण के लिए MCP सर्वर
एक मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर जो Slither का उपयोग करके Solidity स्मार्ट कॉन्ट्रैक्ट्स के लिए स्थैतिक विश्लेषण क्षमताएँ प्रदान करता है।
यह MCP सर्वर Slither की स्थैतिक विश्लेषण कार्यक्षमता को लपेटता है, जिससे यह मॉडल कॉन्टेक्स्ट प्रोटोकॉल के माध्यम से सुलभ हो जाता है। यह Solidity प्रोजेक्ट्स (Foundry, Hardhat, आदि) का विश्लेषण कर सकता है और कॉन्ट्रैक्ट्स, फ़ंक्शन्स, इनहेरिटेंस पदानुक्रमों और अधिक के बारे में व्यापक मेटाडेटा उत्पन्न कर सकता है।
आप 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
सभी टूल्स एक 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 में ऑप्ट-आउट मेट्रिक्स शामिल हैं जो हमें यह बताकर विश्वसनीयता बेहतर बनाने में मदद करते हैं कि 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 - फ़ंक्शन कॉल संबंध प्राप्त करेंकिसी फ़ंक्शन के लिए internal, external और library 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 पैकेज में Slither MCP सर्वर के साथ प्रोग्रामेटिक रूप से इंटरैक्ट करने के लिए एक टाइप-एनोटेटेड Python क्लाइंट (SlitherMCPClient) शामिल है। यह उन टूल्स, स्क्रिप्ट्स या एजेंट्स को बनाने के लिए उपयोगी है जिन्हें Solidity प्रोजेक्ट्स क्वेरी करने की आवश्यकता होती है।
क्लाइंट प्रदान करता है:
विस्तृत उपयोग उदाहरणों और दस्तावेज़ीकरण के लिए, CLIENT_USAGE.md देखें।
कमिट से पहले लिंटिंग चलाने के लिए प्री-कमिट हुक्स स्थापित करें:
pre-commit install
uv run pytest