
خادم وكيل يغلف خوادم MCP مع التوصيف السلوكي، المسح الأمني، التحكم في المخاطر، والتنفيذ الآمن. يكتشف حقن الأوامر الفورية، بيانات وصفية للأدوات الضارة، حقن المعاملات، مخاطر الشفرة المصدرية، وكشف بيانات الاعتماد.
حارس أمان MCP هو خادم وكيل (proxy) يغلف أي خادم MCP ويضيف إليه التنميط السلوكي، وفحص الأمان، وتقييد المخاطر، والتنفيذ الآمن لأدواته.
[!IMPORTANT] أمان MCP هو مجال بحث نشط. تحدد الدراسات الحديثة العديد من فئات التهديدات الخاصة بالبروتوكول والتي تشمل تسميم الأدوات، حقن التعليمات، هجمات السحب البساط، اختراق سلسلة التوريد، سرقة بيانات الاعتماد، والهجمات المركبة عبر دورة حياة الخادم بالكامل. انظر تأمين MCP (OpenReview)، المشهد والتهديدات (arXiv)، عندما تهاجم خوادم MCP (arXiv)، و تصنيف MCP-38 (arXiv).
استخدمه كوسيط لإضافة بوابة أمان لأي خادم MCP، أو وجّهه نحو خادم لا تملكه وشغّل تدقيق أمني كامل دون إجراء أي استدعاء أداة.
شكل 1. وضعا التشغيل: الوكيل والتدقيق
التنميط السلوكي: تصنيف التأثير، سلامة إعادة المحاولة، التدميرية. بمساعدة LLM (Anthropic, OpenAI, Gemini, Ollama) مع تراجع قائم على القواعد. يتم تحديث الإحصائيات المرصودة (زمن الانتظار p50/p95، معدل الفشل، حجم المخرجات) بعد كل استدعاء تم وكالته.
فحص الأمان: mcpsafety+ خط أنابيب من خمس مراحل (استطلاع، مخطط، مخترق، مدقق، مشرف). Cisco AI Defense (AST/YARA). Snyk (تحليل البيانات الوصفية). تعزز تكاملات Kali و Burp Suite خط الأنابيب ببيانات شبكة حقيقية ومسابر طبقة HTTP. فحص الكود المصدري من GitHub مع اكتشاف الإنتروبيا، AST، تدفق التلوث، واكتشاف هجمات السحب البساط.
شكل 2. خط أنابيب mcpsafety+ ذو الخمس مراحل، يتم تشغيله عند تشغيل تدقيق أمني كامل على أي خادم MCP
التنفيذ الآمن: فحص الوسائط (أكثر من 20 فئة هجوم، مرور ثانٍ بواسطة LLM). فحص حقن المخرجات بطبقتين. تقييد المخاطر مع بدائل وسياسات لكل أداة. اكتشاف الانحراف في كل استدعاء وفحص مستقل.
شكل 3. خط أنابيب التنفيذ الآمن: الفحوصات الخمسة التي يمر بها كل استدعاء أداة تم وكالته
واجهة الأوامر: 24 أمراً فرعياً، قائمة مخاطر تفاعلية، علامة --json على كل أمر، --yes للتكامل المستمر.
ما يكتشفه
بدون مفتاح، يعمل الغلاف في وضع القواعد فقط: تصنيف أدوات بثقة أقل، فحص حقن يعتمد على regex فقط، لا بدائل في بوابة المخاطر، لا خط أنابيب mcpsafety+. للإعداد المحلي بالكامل، شغّل Ollama، وضبط OLLAMA_MODEL، ومرّر --provider ollama بشكل صريح (Ollama لا يُكتشف تلقائياً).
[!NOTE] خوادم stdio التي تتطلب إعداداً محلياً (خوادم
stdioالتي تحتاج إلى تهيئة محلية قبل البدء - ملفات إعدادات مفقودة، بيانات اعتماد، أدلة بيانات، أو تبعيات خاصة بنظام التشغيل) لا يمكن فحصها بواسطة الغلاف - سيفشل اكتشاف الأدوات وسيتم تخزين 0 أداة. لا يزال بإمكانك تشغيل فحص أمني كامل للكود المصدري دون تشغيل الخادم بتمرير--github-urlإلىscan/onboard، أو معاملgithub_urlإلىsecurity_scan_server. سيجلب خط أنابيب 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 تلقائياً عند التشغيل الأول في دليل بيانات المستخدم الخاص بالمنصة (~/.local/share/mcpsafetywarden/ على Linux، ~/Library/Application Support/mcpsafetywarden/ على macOS، %APPDATA%\mcpsafetywarden\ على Windows). يمكن تجاوز المسار باستخدام MCP_DB_PATH.
حماية بيانات الاعتماد (تلقائي، لا حاجة لإجراء)
يتم اكتشاف القيم السرية التي تم تمريرها إلى register_server أو onboard_server (رموز Bearer، مفاتيح API في headers أو env) تلقائياً واستبدالها بمعرفات cref_ غير شفافة قبل أن يلمسها سياق النموذج. يتم تخزين بيانات الاعتماد الحقيقية مشفرة في قاعدة البيانات وحلها بصمت عند الاتصال. النموذج، سجل المحادثة، والسجلات لا ترى أبداً سوى cref_<id>.
اختياري: تشفير بيانات الاعتماد المخزنة في وضع السكون
pip install cryptography
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
ضع المفتاح المطبوع كـ MCP_DB_ENCRYPTION_KEY قبل بدء الخادم. هذا يشفر كلاً من بيانات اعتماد الخادم وقيم cref_ في وضع السكون.
جميع الإعدادات عبر متغيرات البيئة.
ملاحظة أمنية: لا تقم أبداً بإيداع مفاتيح 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 للمرجع الكامل للأدوات.
24 أمراً فرعياً تغطي جميع أدوات MCP الـ 25. كل أمر يدعم --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
عيّن مفتاح API لـ LLM لتضمين الاختبارات المدعومة بـ LLM؛ بدونها سيتم تخطيها تلقائياً. راجع docs/TESTING.md للتحقق خطوة بخطوة من التصنيف، فحص الحقن، تقييد المخاطر، وتطبيق السياسات.
راجع CONTRIBUTING.md لمعايير الكود وإرشادات طلبات السحب.
ترخيص Apache 2.0. راجع LICENSE للتفاصيل.
| المتغير | الافتراضي | الغرض |
|---|
MCP_TRANSPORT | stdio | وضع النقل: stdio، sse، أو streamable_http |
MCP_HOST | 127.0.0.1 | عنوان الربط لنقل HTTP |
MCP_PORT | 8000 | منفذ الربط لنقل HTTP |
MCP_AUTH_TOKEN | (غير مضبوط) | رمز Bearer لمصادقة نقل HTTP |
MCP_DB_ENCRYPTION_KEY | (غير مضبوط) | مفتاح Fernet لتشفير بيانات الاعتماد المخزنة في وضع السكون |
ANTHROPIC_API_KEY | (غير مضبوط) | يمكّن Anthropic كمزود LLM |
OPENAI_API_KEY | (غير مضبوط) | يمكّن OpenAI كمزود LLM |
GEMINI_API_KEY أو GOOGLE_API_KEY | (غير مضبوط) | يمكّن Gemini كمزود LLM (يُفضل GEMINI_API_KEY) |
OLLAMA_MODEL | (غير مضبوط) | اسم النموذج لـ Ollama (مثل llama3.1) |
OLLAMA_BASE_URL | http://localhost:11434/v1 | عنوان قاعدة API لـ Ollama |
SNYK_TOKEN | (غير مضبوط) | يمكّن اكتشاف حقن التعليمات E001 من Snyk |
MCP_SCANNER_API_KEY | (غير مضبوط) | مفتاح محرك ML السحابي لـ Cisco AI Defense |
MCP_SCANNER_LLM_API_KEY | (غير مضبوط) | مفتاح LLM لتحليل AST الداخلي لـ Cisco |
MCP_DB_PATH | (غير مضبوط) | تجاوز مسار ملف قاعدة بيانات SQLite |
MCP_GRAPH_POLICY | warn | تطبيق الرسم البياني في safe_tool_call: off (معطل)، warn (إرفاق سياق المخاطر بالاستجابة)، block (حظر صارم للأدوات ذات المخاطر الحرجة/العالية ما لم تكن approved=True) |
GITHUB_TOKEN | (غير مضبوط) | رمز الوصول الشخصي لـ GitHub لفحص الكود المصدري (يرفع حد المعدل من 60 إلى 5000 طلب/ساعة) |
| الأداة | ما تفعله |
|---|
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 | بناء أو الاستعلام عن رسم بياني لمخاطر المخزون (الخوادم، الأدوات، النتائج، عملاء الوكيل) |
explain_tool_risk | السير في مسارات المخاطر لأداة: نصف قطر الانفجار، مخاطر التركيب، علامات MITRE، الإجراء الموصى به |
explain_client_risk | تحليل المخاطر عبر الخوادم لجميع الخوادم تحت عميل وكيل واحد |
analyze_cve_blast_radius | الإبلاغ عن ثغرات CVE التي تؤثر على خوادم متعددة تحت نفس العميل |
export_graph | تصدير رسم المخاطر كـ JSON أو مخطط Mermaid |
| المستند | المحتوى |
|---|
| docs/TOOLS.md | المرجع الكامل لجميع أدوات MCP الـ 25 |
| docs/CLI.md | الأوامر الفرعية لواجهة الأوامر، العلامات، والأمثلة |
| 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 | الميزات المخطط لها |