
प्रॉक्सी सर्वर जो MCP सर्वर को व्यवहारिक प्रोफाइलिंग, सुरक्षा स्कैनिंग, जोखिम गेटिंग और सुरक्षित निष्पादन के साथ लपेटता है। प्रॉम्प्ट इंजेक्शन, दुर्भावनापूर्ण टूल मेटाडेटा, आर्गुमेंट इंजेक्शन, सोर्स कोड जोखिम और क्रेडेंशियल एक्सपोज़र का पता लगाता है।
[!महत्वपूर्ण] MCP सुरक्षा एक सक्रिय अनुसंधान क्षेत्र है। हाल के सर्वेक्षणों में प्रोटोकॉल-विशिष्ट खतरे की श्रेणियों की एक विस्तृत श्रृंखला सूचीबद्ध है, जिसमें टूल पॉइज़निंग, प्रॉम्प्ट इंजेक्शन, रग-पुल हमले, आपूर्ति श्रृंखला समझौता, क्रेडेंशियल एक्सफ़िल्ट्रेशन और पूर्ण सर्वर जीवनचक्र में रचना हमले शामिल हैं। देखें सिक्योरिंग द MCP (OpenReview), लैंडस्केप एंड थ्रेट्स (arXiv), व्हेन MCP सर्वर्स अटैक (arXiv), और MCP-38 टैक्सोनॉमी (arXiv)।
किसी भी MCP सर्वर में सुरक्षा गेटिंग जोड़ने के लिए प्रॉक्सी के रूप में उपयोग करें, या इसे ऐसे सर्वर पर इंगित करें जो आपका नहीं है और एक भी टूल कॉल किए बिना पूर्ण सुरक्षा ऑडिट चलाएँ।
चित्र 1. दो संचालन मोड: प्रॉक्सी और ऑडिट
व्यवहारिक प्रोफाइलिंग: प्रभाव वर्ग, पुनःप्रयास सुरक्षा, विनाशशीलता। LLM-सहायता प्राप्त (एन्थ्रोपिक, OpenAI, Gemini, Ollama) नियम-आधारित फ़ॉलबैक के साथ। देखे गए आँकड़े (लेटेंसी p50/p95, विफलता दर, आउटपुट आकार) प्रत्येक प्रॉक्सी कॉल के बाद अपडेट किए जाते हैं।
सुरक्षा स्कैनिंग: mcpsafety+ पाँच-चरणीय पाइपलाइन (रीकॉन, प्लानर, हैकर, ऑडिटर, सुपरवाइज़र)। Cisco AI डिफेंस (AST/YARA)। Snyk (मेटाडेटा विश्लेषण)। Kali और Burp Suite एकीकरण वास्तविक नेटवर्क डेटा और HTTP-स्तरीय जाँच के साथ पाइपलाइन को समृद्ध करते हैं। GitHub से स्रोत कोड स्कैनिंग एंट्रॉपी, AST, टेंट फ़्लो और रग-पुल डिटेक्शन के साथ।
चित्र 2. mcpsafety+ पाँच-चरणीय पाइपलाइन, जो किसी भी MCP सर्वर पर पूर्ण सुरक्षा ऑडिट चलाने पर ट्रिगर होती है
सुरक्षित निष्पादन: तर्क स्कैनिंग (20+ हमला श्रेणियाँ, LLM दूसरा पास)। दो-परत आउटपुट इंजेक्शन स्कैनिंग। विकल्पों और प्रति-टूल नीतियों के साथ जोखिम गेटिंग। प्रत्येक कॉल और स्वतंत्र जाँच पर ड्रिफ्ट डिटेक्शन।
चित्र 3. सुरक्षित निष्पादन पाइपलाइन: पाँच जाँचें जिनसे प्रत्येक प्रॉक्सी टूल कॉल गुज़रता है
CLI: 24 उपकमांड, इंटरैक्टिव जोखिम मेनू, प्रत्येक कमांड पर --json फ़्लैग, CI के लिए --yes।
यह क्या पता लगाता है
बिना कुंजी के रैपर केवल-नियम-आधारित मोड में काम करता है: कम विश्वास वाला टूल वर्गीकरण, केवल-रेगेक्स इंजेक्शन स्कैनिंग, जोखिम गेट में कोई विकल्प नहीं, कोई mcpsafety+ पाइपलाइन नहीं। पूरी तरह से स्थानीय सेटअप के लिए, Ollama चलाएँ, OLLAMA_MODEL सेट करें, और स्पष्ट रूप से --provider ollama पास करें (Ollama स्वतः-पता नहीं लगाया जाता है)।
[!नोट] stdio सर्वर जिन्हें स्थानीय सेटअप की आवश्यकता होती है (stdio सर्वर जिन्हें शुरू करने से पहले स्थानीय कॉन्फ़िगरेशन की आवश्यकता होती है - अनुपलब्ध कॉन्फ़िग फ़ाइलें, क्रेडेंशियल, डेटा निर्देशिकाएँ, या OS-विशिष्ट निर्भरताएँ) रैपर द्वारा निरीक्षण नहीं किया जा सकता - टूल डिस्कवरी विफल हो जाएगी और 0 टूल संग्रहीत होंगे। आप सर्वर को स्पॉन किए बिना
scan/onboardको--github-urlपास करके याsecurity_scan_serverकोgithub_urlपैरामीटर पास करके पूर्ण स्रोत-कोड सुरक्षा स्कैन चला सकते हैं। mcpsafety+ पाइपलाइन सीधे GitHub से स्रोत प्राप्त करेगी और उसका विश्लेषण करेगी।sseऔरstreamable_httpसर्वर प्रभावित नहीं होते हैं।
pip install mcpsafetywarden
सभी वैकल्पिक एक्स्ट्रा के साथ:
pip install "mcpsafetywarden[all]"
या विशिष्ट एक्स्ट्रा के साथ:
pip install "mcpsafetywarden[anthropic,snyk]"
स्रोत से:
git clone https://github.com/gautamvarmadatla/mcpsafetywarden
cd mcpsafetywarden
pip install .
SQLite डेटाबेस पहली बार चलाने पर प्लेटफ़ॉर्म उपयोगकर्ता डेटा निर्देशिका (Linux पर ~/.local/share/mcpsafetywarden/, macOS पर ~/Library/Application Support/mcpsafetywarden/, Windows पर %APPDATA%\mcpsafetywarden\) में स्वचालित रूप से बनाया जाता है। MCP_DB_PATH से ओवरराइड करें।
क्रेडेंशियल सुरक्षा (स्वचालित, कोई कार्रवाई आवश्यक नहीं)
register_server या onboard_server को पास किए गए गुप्त मान (Bearer टोकन, headers या env में API कुंजियाँ) मॉडल संदर्भ को छूने से पहले स्वचालित रूप से पता लगाए जाते हैं और अपारदर्शी cref_ पहचानकर्ताओं से बदल दिए जाते हैं। वास्तविक क्रेडेंशियल डेटाबेस में एन्क्रिप्टेड संग्रहीत किया जाता है और कनेक्शन समय पर चुपचाप हल किया जाता है। मॉडल, वार्तालाप इतिहास और लॉग कभी भी cref_<id> देखते हैं।
वैकल्पिक: संग्रहीत क्रेडेंशियल के लिए आराम-पर एन्क्रिप्शन
pip install cryptography
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
सर्वर शुरू करने से पहले मुद्रित कुंजी को MCP_DB_ENCRYPTION_KEY के रूप में सेट करें। यह सर्वर क्रेडेंशियल और cref_ मानों दोनों को आराम पर एन्क्रिप्ट करता है।
सभी कॉन्फ़िगरेशन पर्यावरण चर के माध्यम से होता है।
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
MCP_TRANSPORT | stdio | परिवहन मोड: stdio, sse, या streamable_http |
MCP_HOST | 127.0.0.1 | HTTP परिवहन के लिए बाइंड पता |
MCP_PORT | 8000 | HTTP परिवहन के लिए बाइंड पोर्ट |
MCP_AUTH_TOKEN | (अनसेट) | HTTP परिवहन प्रमाणीकरण के लिए बियरर टोकन |
MCP_DB_ENCRYPTION_KEY | (अनसेट) | संग्रहीत क्रेडेंशियल को आराम पर एन्क्रिप्ट करने के लिए फ़र्नेट कुंजी |
ANTHROPIC_API_KEY | (अनसेट) | LLM प्रदाता के रूप में एन्थ्रोपिक को सक्षम करता है |
OPENAI_API_KEY | (अनसेट) | LLM प्रदाता के रूप में OpenAI को सक्षम करता है |
GEMINI_API_KEY या GOOGLE_API_KEY | (अनसेट) | LLM प्रदाता के रूप में Gemini को सक्षम करता है (GEMINI_API_KEY प्राथमिकता) |
OLLAMA_MODEL | (अनसेट) | Ollama के लिए मॉडल नाम (जैसे llama3.1) |
OLLAMA_BASE_URL | http://localhost:11434/v1 | Ollama API आधार URL |
SNYK_TOKEN | (अनसेट) | Snyk E001 प्रॉम्प्ट-इंजेक्शन डिटेक्शन सक्षम करता है |
MCP_SCANNER_API_KEY | (अनसेट) | Cisco AI डिफेंस क्लाउड ML इंजन कुंजी |
MCP_SCANNER_LLM_API_KEY | (अनसेट) | Cisco आंतरिक AST विश्लेषण के लिए LLM कुंजी |
MCP_DB_PATH | (अनसेट) | SQLite डेटाबेस फ़ाइल पथ को ओवरराइड करें |
MCP_GRAPH_POLICY | warn | safe_tool_call में ग्राफ़ प्रवर्तन: off (अक्षम), warn (प्रतिक्रिया में जोखिम संदर्भ संलग्न करें), (हार्ड-ब्लॉक महत्वपूर्ण/उच्च ब्लास्ट-त्रिज्या टूल जब तक न हो) |
सुरक्षा नोट: API कुंजियाँ या एन्क्रिप्शन कुंजी कभी भी कमिट न करें। रैपर अपने स्वयं के रहस्यों को चाइल्ड प्रोसेस वातावरण से स्ट्रिप करता है इससे पहले कि वह stdio सर्वर को स्पॉन करे।
claude_desktop_config.json में रैपर जोड़ें:
{
"mcpServers": {
"mcpsafetywarden": {
"command": "mcpsafetywarden-server",
"args": [],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"MCP_DB_ENCRYPTION_KEY": "<generated_fernet_key>"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
}
}
}
उपयोग से पहले प्रत्येक सर्वर को रैपर के साथ पंजीकृत करें:
mcpsafetywarden register filesystem --transport stdio \
--command npx \
--args '["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]'
अनिवार्य गेटवे सेटअप के लिए जहाँ सभी टूल कॉल को रैपर के माध्यम से जाना चाहिए, देखें docs/DEPLOYMENT.md।
पूर्ण टूल संदर्भ के लिए देखें docs/TOOLS.md।
| उपकरण | यह क्या करता है |
|---|---|
onboard_server | एक कॉल में पंजीकरण + निरीक्षण + सुरक्षा स्कैन |
register_server | सर्वर पंजीकृत करें; वैकल्पिक रूप से स्वचालित निरीक्षण |
inspect_server | टूल सूची और प्रोफ़ाइल ताज़ा करें |
check_server_drift | संग्रहीत आधार रेखा के विरुद्ध स्कीमा और टूल-सूची ड्रिफ्ट का पता लगाएँ |
list_servers | सभी पंजीकृत सर्वरों की सूची बनाएँ |
list_server_tools | सर्वर पर टूल उनकी सारांश प्रोफ़ाइल के साथ सूचीबद्ध करें |
preflight_tool_call | निष्पादन के बिना जोखिम आकलन |
safe_tool_call | जोखिम गेटिंग और विकल्पों के साथ निष्पादित करें |
get_tool_profile | देखे गए आँकड़ों के साथ पूर्ण व्यवहार प्रोफ़ाइल |
get_retry_policy | पुनःप्रयास और टाइमआउट अनुशंसाएँ |
suggest_safer_alternative | LLM-रैंक किए गए सुरक्षित विकल्प |
run_replay_test | आइडेम्पोटेंसी परीक्षण (टूल को दो बार कॉल करता है) |
security_scan_server | लाइव सुरक्षा ऑडिट (mcpsafety+, Cisco, Snyk) |
scan_all_servers | सभी पंजीकृत सर्वरों में mcpsafety+ पाइपलाइन |
get_security_scan | नवीनतम संग्रहीत स्कैन रिपोर्ट |
set_tool_policy | किसी टूल के लिए स्थायी अनुमति/अवरोध नीति |
get_run_history | किसी टूल के लिए हालिया निष्पादन इतिहास |
ping_server | लेटेंसी के साथ पहुँच की जाँच |
discover_servers | MCP क्लाइंट कॉन्फ़िग के लिए फ़ाइलसिस्टम स्कैन करें और सर्वर प्रविष्टियाँ निकालें |
onboard_discovered_servers | खोजे गए सर्वरों को बल्क में पंजीकृत करें |
get_risk_graph | इन्वेंट्री जोखिम ग्राफ़ (सर्वर, टूल, निष्कर्ष, एजेंट क्लाइंट) बनाएँ या क्वेरी करें |
सभी 25 MCP टूल को कवर करने वाले 24 उपकमांड। प्रत्येक कमांड मशीन-पठनीय आउटपुट के लिए --json और पुष्टिकरण संकेतों को छोड़ने के लिए --yes / -y का समर्थन करता है।
फ़्लैग और उदाहरणों के साथ पूर्ण संदर्भ के लिए देखें docs/CLI.md।
Kali Linux MCP, Burp Suite MCP और Snyk प्रत्येक एक बार पंजीकृत होने के बाद स्वचालित रूप से एकीकृत हो जाते हैं। Kali रीकॉन चरण और ping_server को वास्तविक nmap/traceroute डेटा से समृद्ध करता है। Burp कच्ची HTTP जाँच, आउट-ऑफ़-बैंड कॉलबैक और प्रॉक्सी साक्ष्य जोड़ता है। Snyk इंजेक्शन स्ट्रिंग्स, टूल छायांकन, हार्डकोडेड रहस्य और 16 अन्य जाँचों के लिए टूल मेटाडेटा का विश्लेषण करता है।
सेटअप निर्देशों के लिए देखें docs/INTEGRATIONS.md।
एडिटेबल मोड में स्थापित करें:
pip install -e ".[all]"
सर्वर चलाएँ और लॉग देखें:
mcpsafetywarden-server 2>server.log
प्रत्येक मॉड्यूल logging.getLogger(__name__) का उपयोग करता है। सर्वर स्वयं logging.basicConfig कॉल नहीं करता है - आयात से पहले अपने एंट्री पॉइंट में लॉगिंग कॉन्फ़िगर करें।
pytest tests/ -v
LLM-सहायता प्राप्त परीक्षण शामिल करने के लिए एक LLM API कुंजी सेट करें; इसके बिना वे स्वचालित रूप से छोड़ दिए जाते हैं। वर्गीकरण, इंजेक्शन स्कैनिंग, जोखिम गेटिंग और नीति प्रवर्तन के चरण-दर-चरण सत्यापन के लिए देखें docs/TESTING.md।
| दस्तावेज़ | सामग्री |
|---|---|
| docs/TOOLS.md | सभी 25 MCP टूल के लिए पूर्ण संदर्भ |
| docs/CLI.md | CLI उपकमांड, फ़्लैग और उदाहरण |
| docs/INTEGRATIONS.md | Kali, Burp Suite और Snyk सेटअप |
| docs/DEPLOYMENT.md | stdio, HTTP, कंटेनर और गेटवे परिनियोजन |
| docs/TROUBLESHOOTING.md | सामान्य त्रुटियाँ और समाधान |
| docs/SECURITY.md | रहस्य, प्रमाणीकरण, अलगाव और स्कैनिंग विवरण |
| docs/TESTING.md | प्रत्येक सुविधा के लिए सत्यापन चरण |
| docs/COMPARISON.md | संबंधित उपकरणों के साथ तुलना |
| docs/ROADMAP.md | नियोजित सुविधाएँ |
कोड मानकों और पुल अनुरोध दिशानिर्देशों के लिए देखें CONTRIBUTING.md।
Apache लाइसेंस 2.0। विवरण के लिए देखें LICENSE।
blockapproved=TrueGITHUB_TOKEN | (अनसेट) | स्रोत-कोड स्कैनिंग के लिए GitHub व्यक्तिगत पहुँच टोकन (दर सीमा 60 से 5,000 अनुरोध/घंटा बढ़ाता है) |
explain_tool_risk | किसी टूल के लिए जोखिम पथ चलें: ब्लास्ट त्रिज्या, रचना जोखिम, MITRE टैग, अनुशंसित कार्रवाई |
explain_client_risk | एक एजेंट क्लाइंट के अंतर्गत सभी सर्वरों के लिए क्रॉस-सर्वर जोखिमों का विश्लेषण करें |
analyze_cve_blast_radius | एक ही क्लाइंट के अंतर्गत कई सर्वरों को प्रभावित करने वाले CVE की रिपोर्ट करें |
export_graph | जोखिम ग्राफ़ को JSON या Mermaid आरेख के रूप में निर्यात करें |