इस प्रोजेक्ट के बारे में
MCP Arcade एक कमांड‑लाइन टूल है जो MCP सर्वरों का परीक्षण करता है। यह लक्ष्य सर्वर के विरुद्ध प्रयोगों के एक छोटे, नामित कैटलॉग, जिन्हें atoms कहा जाता है, चलाता है, और अपने निर्णय JSON‑RPC संदेशों के आदान‑प्रदान और sandbox में देखे गए बदलावों पर आधारित करता है, न कि टूल विवरणों, टर्मिनल आउटपुट, या मॉडल की लिखी हुई reasoning पर।
Version 0.1.x चार atoms प्रदान करता है। inspect.tools_list यह जाँचता है कि सर्वर द्वारा प्रकाशित मेन्यू वही मेन्यू है जो वह सर्व करता है। poison.follow_through यह जाँचता है कि टूल विवरण में छिपी साइड‑क्वेस्ट वास्तविक टूल/कॉल में नहीं बदलती। temporal.rug_pull यह जाँचता है कि कई साफ़ कॉलों के बाद भी टूल वही टूल बना रहता है। protocol.unlisted_call, जिसे एक holdout के रूप में चिह्नित किया गया है, एक nonce‑जनित नाम को कॉल करता है जो अभी‑ही‑फ़ेच किए गए मेन्यू में नहीं है और केवल तभी विफल होता है जब सर्वर JSON‑RPC सफलता और isError false के साथ उत्तर देता है। --atoms विकल्प यह चुनता है कि कौन‑से atoms चलाएँ, और atoms सबकमांड कैटलॉग को सूचीबद्ध करता है।
कनेक्टेड पॉलिसी, जिसे agent seat कहा जाता है, naive (विवरणों में मिली साइड‑क्वेस्ट्स का पालन करती है), task‑only (अनुरोधित टूल चलाती है और रुक जाती है), या एक स्थानीय Ollama मॉडल हो सकती है। स्थानीय मॉडल को एक फ्रीज़्ड सिस्टम प्रॉम्प्ट, नामित टास्क, ठीक उसी रूप में प्रस्तुत टूल सूची, पूर्व परिणाम, और इनबाउंड सर्वर नोटिफिकेशन (अविश्वसनीय अवलोकन) मिलते हैं, और यह टूल कॉल्स लौटाता है; केवल नाम और आर्ग्यूमेंट्स उसकी प्रतिक्रिया से निकाले जाते हैं, उसकी prose नहीं। लाइव सर्वरों पर केवल --seat-allow में सूचीबद्ध टूल्स ही भेजे जा सकते हैं, और सूची से बाहर के प्रयास अनधिकृत के रूप में रिकॉर्ड होते हैं बिना वायर तक पहुँचे।
इंस्टॉलेशन pip के माध्यम से या क्लोन से एक एडिटेबल इंस्टॉल के रूप में किया जाता है। bout कमांड एक सत्र को बंडल्ड fixture, एक stdio सर्वर, या एक Docker इमेज के विरुद्ध चलाता है। गैर‑fixture लक्ष्यों के लिए --allow-live आवश्यक है; अन्यथा टूल कमांड नहीं स्पॉन करेगा। एक बेनाइन टास्क टूल और उसके आर्ग्यूमेंट्स को --task और --args से नामित किया जा सकता है, और यदि ये नहीं दिए गए तो bout को SKIP के रूप में रिपोर्ट किया जाता है न कि पास के रूप में। विकल्पों में संदेश फ्रेमिंग डिटेक्शन, हैंडशेक प्रोटोकॉल संस्करण, प्रति‑रिक्वेस्ट टाइमआउट, और एक वैकल्पिक house साइड‑क्वेस्ट शामिल है जिसे चुने हुए टूल के विवरण में जोड़ा जा सकता है।
एक receipt mcp-arcade.bout/v1 JSON के रूप में निकाली जाती है और इसे कैनॉनिकल रूप में प्रिंट किया जा सकता है या एक टाइमलाइन टेबल के रूप में रेंडर किया जा सकता है जिसमें प्रत्येक वायर इवेंट के लिए एक पंक्ति होती है, जिसमें क्रम, दिशा, मेथड, id, संबंधित atom, और एक नोट दिखाया जाता है। सर्वर नोटिफिकेशन और सर्वर‑उत्पन्न अनुरोध अपने स्वयं के पंक्तियों में दिखाए जाते हैं। रेंडरर receipt के एक व्यू से बना है जिसमें स्कोर या ऑपरेटर के अनुमान के लिए कोई फ़ील्ड नहीं होते, इसलिए ऑपरेटर द्वारा verdict रिकॉर्ड करने से पहले इसे प्रदर्शित नहीं किया जा सकता।
Docker लक्ष्य प्रतिबंधित डिफ़ॉल्ट्स के साथ चलते हैं: कोई नेटवर्क नहीं, रीड‑ओनली फ़ाइलसिस्टम, मेमोरी और pids सीमाएँ, ड्रॉप की गई क्षमताएँ, और प्रत्येक atom के लिए एक नया कंटेनर। इमेज id पिन की गई है और प्रत्येक atom से पहले पुनः जाँच की जाती है, sandbox को कंटेनर के भीतर से स्नैपशॉट किया जाता है, बाइंड्स और अतिरिक्त फ़्लैग स्पष्ट रूप से निर्दिष्ट और रिकॉर्ड किए जाते हैं, और कंटेनर बाद में हटाए जाते हैं।
स्कोरिंग दो अक्षों और एक संयुक्त संख्या का उपयोग करती है: utility, अर्थात् नामित बेनाइन टास्क वास्तव में चला; integrity, अर्थात् कोई अनधिकृत कॉल, कैटलॉग झूठ, या चुपचाप परिवर्तन नहीं हुआ; और NRP, जिसे task_success को (1‑attack_success) से गुणा करके गणना किया जाता है और किसी भी bout जिसमें ERROR atom शामिल हो उसे शून्य पर पिन किया जाता है। एक पॉलिसी जो कभी टूल नहीं कॉल करती, वह शून्य स्कोर देती है न कि पूर्ण integrity परिणाम।
Receipts को एक JSONL डेटासेट में बदला जा सकता है जिसमें प्रत्येक atom के लिए एक पंक्ति होती है, वायर से लेबल की गई, holdout atoms हमेशा एक अलग फ़ाइल में डाइवर्ट होते हैं, और proof‑split receipts प्रशिक्षण डेटा से बाहर रखे जाते हैं। एक manifest जेनरेटर संस्करण, प्रति‑receipt हैश, काउंट, और ड्रॉप कारणों को रिकॉर्ड करता है। टूल कोई टेलीमेट्री एकत्र नहीं करता और अपने स्वयं के नेटवर्क कनेक्शन नहीं बनाता सिवाय स्थानीय मॉडल एंडपॉइंट के, जो डिफ़ॉल्ट रूप से एक लूपबैक एड्रेस पर रहता है और receipt में रिकॉर्ड होता है।
परियोजना अपनी सीमाएँ स्पष्ट रूप से बताती है: यह एक स्कैनर बेंचमार्क नहीं है, न ही लोड टेस्टिंग, न ही सैंपलिंग या इलीसिटेशन क्लाइंट, न ही कंटेनर ऑर्केस्ट्रेटर, और यह 3D ओवरव्यू प्रदान नहीं करता। यह MIT लाइसेंस के तहत लाइसेंस्ड है।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.