
خادم MCP للتحليل الثابت لـ Slither للعقود الذكية بلغة Solidity
خادم بروتوكول سياق النموذج (MCP) يوفر قدرات تحليل ثابت للعقود الذكية بلغة Solidity باستخدام Slither.
يغلف خادم MCP هذا وظائف التحليل الثابت لـ Slither، مما يجعلها قابلة للوصول عبر بروتوكول سياق النموذج. يمكنه تحليل مشاريع Solidity (Foundry، Hardhat، إلخ) وإنشاء بيانات وصفية شاملة حول العقود والوظائف والتسلسلات الهرمية للوراثة والمزيد.
يمكنك أيضًا استخدام Slither MCP كواجهة برمجة تطبيقات 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 مقاييس اختيارية للمساعدة في تحسين الموثوقية من خلال إعلامنا بعدد مرات استخدام LLMs لكل أداة ومعدل نجاح استدعائها. المقاييس ممكّنة افتراضيًا ولكن يمكن تعطيلها بشكل دائم.
لا نجمع: معاملات استدعاء الأداة، تفاصيل العقد، أسماء الوظائف، أو أي معلومات خاصة بالمشروع.
للإلغاء الدائم:
uv run slither-mcp --disable-metrics
للتفاصيل الكاملة، راجع METRICS.md.
يعرض الخادم أدوات للاستعلام عن معلومات العقد والوظائف. تقبل جميع الأدوات معلمة path تحدد دليل مشروع Solidity المراد تحليله.
list_contracts - قائمة العقود مع مرشحاتيتطلب: path (دليل المشروع)
تصفية العقود حسب النوع (ملموس، مجرد، واجهة، مكتبة) أو نمط المسار.
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 - الحصول على نتائج الكاشف مع التصفيةيعيد نتائج الكاشف المخزنة مؤقتًا. تصفية حسب أسماء الكاشف أو مستوى التأثير (عالٍ، متوسط، منخفض، إعلامي) أو مستوى الثقة (عالٍ، متوسط، منخفض).
تعيد جميع الأدوات استجابات تحتوي على قيمة منطقية success وحقول بيانات أو error_message. راجع تنفيذات الأدوات الفردية في slither_mcp/tools/ للحصول على مخططات مفصلة والاستخدام.
تتضمن حزمة slither-mcp عميل Python مكتوب (SlitherMCPClient) للتفاعل برمجيًا مع خادم Slither MCP. هذا مفيد لبناء أدوات أو نصوص أو وكلاء يحتاجون إلى الاستعلام عن مشاريع Solidity.
يوفر العميل:
للحصول على أمثلة استخدام مفصلة ووثائق، راجع CLIENT_USAGE.md.
قم بتثبيت خطافات ما قبل الالتزام لتشغيل التحليل اللغوي قبل الالتزامات:
pre-commit install
uv run pytest