
خادم MCP بمستوى الإنتاج يوفّر لـClaude 27 أداة استخبارات أمنية عبر 21 واجهة API — الاستعلام عن CVE، وتقييم EPSS، وCISA KEV، وMITRE ATT&CK، وShodan، وVirusTotal، والمزيد.

ذكاء أمني مدعوم بالذكاء الاصطناعي في متناول يدك — 28 أداة + منسّق triage_cve بنداء واحد، 24 مصدر بيانات، بروتوكول واحد.
خادم Model Context Protocol (MCP) بمستوى إنتاجي يحوّل Claude إلى محلل أمني شامل الطيف. بدلًا من التنقل بين أكثر من 15 تبويب متصفح عبر NVD وEPSS وCISA KEV وShodan وVirusTotal وGreyNoise، اسأل Claude سؤالًا واحدًا واحصل على استخبارات مترابطة في ثوانٍ. مبني بلغة Python وباستخدام FastMCP وhttpx وaiosqlite وPydantic v2 وdefusedxml.
المشكلة: فرز CVE واحد يعني الاستعلام عن NVD للحصول على درجات CVSS، وEPSS لاحتمالية الاستغلال، وCISA KEV لحالة الاستغلال النشط، وGitHub للتصحيحات، وVirusTotal للارتباطات بالبرمجيات الخبيثة — ثم الربط الذهني بين كل ذلك. أما بالنسبة لـ50 CVE، فهذا يعني خسارة يوم كامل.
الحل: يمنح CVE MCP Server كلود وصولًا مباشرًا إلى 28 أداة أمنية عبر 24 واجهة برمجة تطبيقات — مقدَّمة من المنسّق أحادي النداء triage_cve. اطلب «هل يجب أن نصلح CVE-2024-3400؟» فيقوم Claude بالانتشار بالتوازي إلى كل مصدر ذي صلة، ويحسب درجة مخاطر مركّبة (مع تجاوز صارم من CISA KEV)، ويقدّم توصية ذات أولوية مدعومة بالأدلة.
أُجري دراسة أكاديمية عالمية لقياس مدى جاهزية المتخصصين في الأمن، والمطوّرين، وفرق المؤسسات فعليًا للذكاء الاصطناعي الفاعل — خوادم MCP، واستدعاء الأدوات، والحوكمة، وسير العمل القائمة على الإشراف البشري.
إذا كنت تستخدم هذا المستودع، فإن إجابتك ستكون نقطة بيانات قيّمة حقًا.
📋 خذ الاستطلاع (10 دقائق): الاستطلاع
┌─────────────────────────────────────────────────────────────────────┐ │ Claude Desktop / Claude Code │ │ (MCP Client via stdio) │ └──────────────────────────────┬──────────────────────────────────────┘ │ Model Context Protocol (stdio) ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ CVE MCP Server (Python) │ │ ┌─────────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │ 27 MCP │ │ Composite │ │ SQLite Cache │ │ │ │ Tools │ │ Risk Engine │ │ + Audit Log │ │ │ └──────┬──────┘ └──────┬───────┘ └───────┬───────┘ │ │ │ │ │ │ │ ┌──────┴────────────────┴───────────────────┴──────┐ │ │ │ Async HTTP Client (httpx) │ │ │ │ Rate Limiter · Response Cache │ │ │ └──────────────────────┬───────────────────────────┘ │ └─────────────────────────┼───────────────────────────────────────────┘ │ HTTPS (outbound only) ┌───────────────┼───────────────────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ VULNERABILITY│ │ NETWORK │ │ THREAT │ │ INTELLIGENCE │ │ INTELLIGENCE │ │ INTELLIGENCE │ ├──────────────┤ ├──────────────┤ ├──────────────┤ │ NVD API 2.0 │ │ AbuseIPDB │ │ VirusTotal │ │ EPSS / FIRST │ │ GreyNoise v3 │ │ MalwareBazaar│ │ CISA KEV │ │ Shodan │ │ ThreatFox │ │ OSV.dev │ │ CIRCL PDNS │ │ Ransomwhere │ │ GitHub GHSA │ │ │ │ AlienVault │ │ MITRE ATT&CK │ │ │ │ URLScan.io │ └──────────────┘ └──────────────┘ └──────────────┘
جميع حركة المرور هي **HTTPS صادرة فقط** — لا يتم فتح أي منافذ واردة. يتم تحميل مفاتيح API من متغيرات البيئة ولا يتم تسجيلها أبدًا. يتم حظر عناوين IP الخاصة/الداخلية من جميع أدوات البحث.
---
## 🔍 كتالوج الأدوات (28 أداة)
### ⭐ التنسيق (v0.2.0) — ابدأ من هنا
| الأداة | الوصف | مفتاح API مطلوب | مثال الاستخدام |
|------|-------------|-----------------|---------------|
| `triage_cve` | فرز أولي بنداء واحد يوزّع NVD + EPSS + CISA KEV (+ PoC عام لـ `depth != "quick"`) بشكل متزامن، ويحسب درجة المخاطر المركبة مع تجاوز صارم لـ KEV، ويعود إلى VulnCheck NVD++ عند تقييد NIST NVD، وعند `depth="deep"` يُصدر قرار SSVC v2 المُقيَّد | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `triage_cve("CVE-2021-44228", depth="deep")` |
> **متاح أيضًا عبر بدائيات MCP** — الموارد: `kev://catalog`, `epss://scores/{cve_id}`, `manifest://tool-hash` (SHA-256 على سطح الأدوات المسجّل لكشف العبث). المطالبات: `patch_decision`, `compare_and_prioritize`, `dependency_triage`.
### استخبارات الثغرات الأساسية (8 أدوات)
| الأداة | الوصف | مفتاح API مطلوب | مثال الاستخدام |
|------|-------------|-----------------|---------------|
| `lookup_cve` | جلب سجل CVE مفصّل من NVD بما في ذلك درجات CVSS وCWEs والمنتجات المتأثرة والمراجع والخط الزمني | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `lookup_cve("CVE-2024-3400")` |
| `search_cves` | البحث في NVD عن CVEs حسب الكلمة المفتاحية أو اسم المنتج أو الخطورة أو النطاق الزمني | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `search_cves(keyword="Apache Log4j", severity="CRITICAL")` |
| `get_epss_score` | الحصول على احتمالية استغلال EPSS (0–1) والنسبة المئوية لواحد أو أكثر من CVEs | مجاني / بدون مفتاح | `get_epss_score("CVE-2024-3400")` |
| `check_kev_status` | التحقق مما إذا كان CVE موجودًا في كتالوج CISA للثغرات المستغلة المعروفة | مجاني / بدون مفتاح | `check_kev_status("CVE-2021-44228")` |
| `get_cvss_details` | تحليل وشرح سلسلة متجه CVSS v3.1 مع تفصيل لكل مقياس | مجاني / بدون مفتاح | `get_cvss_details("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H")` |
| `get_cwe_info` | البحث عن تفاصيل التعداد الشائع للضعف (CWE) بواسطة معرف CWE من قاعدة البيانات المدمجة | مجاني / بدون مفتاح | `get_cwe_info("CWE-79")` |
| `get_cve_references` | استخراج وتصنيف جميع روابط المراجع لـ CVE (تصحيحات، نصائح أمنية، استغلالات) | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `get_cve_references("CVE-2023-44487")` |
| `bulk_cve_lookup` | جلب تفاصيل حتى 20 CVE دفعة واحدة في نداء واحد مع إثراء متوازٍ | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `bulk_cve_lookup(["CVE-2024-3400", "CVE-2023-44487"])` |
### استخبارات الاستغلال والهجمات (4 أدوات)
| الأداة | الوصف | مفتاح API مطلوب | مثال الاستخدام |
|------|-------------|-----------------|---------------|
| `search_exploits` | البحث في GitHub عن استغلالات إثبات المفهوم العامة ومستودعات أكواد الاستغلال | `GITHUB_TOKEN` (اختياري) | `search_exploits("CVE-2024-3400")` |
| `get_mitre_techniques` | ربط CVE أو CWE بتقنيات وتكتيكات وتخفيفات MITRE ATT&CK ذات الصلة | مجاني / بدون مفتاح | `get_mitre_techniques("CVE-2021-44228")` |
| `check_poc_availability` | تحديد ما إذا كان كود إثبات المفهوم المعروف موجودًا لـ CVE عبر مصادر متعددة | `GITHUB_TOKEN` (اختياري) | `check_poc_availability("CVE-2024-3400")` |
| `get_attack_patterns` | استرجاع تفاصيل أنماط الهجوم CAPEC المرتبطة بـ CWE أو CVE | مجاني / بدون مفتاح | `get_attack_patterns("CWE-89")` |
### المرحلة 3: المخاطر المتقدمة وإعداد التقارير (4 أدوات)
| الأداة | الوصف | مفتاح API مطلوب | مثال الاستخدام |
|------|-------------|-----------------|---------------|
| `calculate_risk_score` | حساب درجة مخاطر مركبة من 0–100 باستخدام CVSS وEPSS وحالة KEV وتوفر PoC | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `calculate_risk_score("CVE-2024-3400")` |
| `generate_risk_report` | إنشاء تقرير أمني تنفيذي منسّق لواحد أو أكثر من CVEs مع توصيات | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `generate_risk_report(["CVE-2024-3400", "CVE-2023-44487"])` |
| `prioritize_cves` | ترتيب قائمة CVEs حسب درجة المخاطر المركبة لتحديد أولويات الفرز | مجاني / بدون مفتاح (يُوصى بالمفتاح) | `prioritize_cves(["CVE-2024-3400", "CVE-2023-4966", "CVE-2023-44487"])` |
| `get_trending_cves` | استرجاع CVEs الرائجة بناءً على درجات EPSS المرتفعة والإضافات الحديثة إلى KEV | مجاني / بدون مفتاح | `get_trending_cves(days=7, min_epss=0.5)` |
### استخبارات الشبكة (4 أدوات)
| الأداة | الوصف | مفتاح API مطلوب | مثال الاستخدام |
|------|-------------|-----------------|---------------|
| `lookup_ip_reputation` | التحقق من سجل إساءة استخدام عنوان IP ودرجة الثقة عبر AbuseIPDB | `ABUSEIPDB_API_KEY` | `lookup_ip_reputation("185.220.101.34")` |
| `check_ip_noise` | الاستعلام من GreyNoise عن نشاط فحص/هجوم IP وتصنيفه وCVEs المرتبطة | `GREYNOISE_API_KEY` | `check_ip_noise("185.220.101.34")` |
| `shodan_host_lookup` | الحصول على المنافذ المفتوحة والخدمات واللافتات والثغرات لعنوان IP عبر Shodan | `SHODAN_API_KEY` | `shodan_host_lookup("8.8.8.8")` |
| `passive_dns_lookup` | استرجاع بيانات حل DNS التاريخية لنطاق من CIRCL Passive DNS | `CIRCL_PDNS_USER` + `CIRCL_PDNS_PASSWORD` | `passive_dns_lookup("example.com")` |
### استخبارات التهديدات (4 أدوات)
| الأداة | الوصف | مفتاح API مطلوب | مثال الاستخدام |
|------|-------------|-----------------|---------------|
| `virustotal_lookup` | تحليل تجزئات الملفات أو عناوين URL أو النطاقات أو عناوين IP ضد أكثر من 70 محرك مكافحة فيروسات | `VIRUSTOTAL_API_KEY` | `virustotal_lookup(hash="44d88612fea8a8f36de82e1278abb02f")` |
| `search_malware` | البحث في MalwareBazaar عن عينات برمجيات خبيثة حسب التجزئة أو العلامة أو التوقيع | `ABUSECH_AUTH_KEY` (اختياري) | `search_malware(tag="Emotet")` |
| `search_iocs` | الاستعلام من ThreatFox عن مؤشرات الاختراق المرتبطة بعائلات البرمجيات الخبيثة | `ABUSECH_AUTH_KEY` (اختياري) | `search_iocs(malware="CobaltStrike")` |
| `check_ransomware` | البحث عن عناوين دفع الفدية وبيانات المعاملات من Ransomwhere | مجاني / بدون مفتاح | `check_ransomware(address="bc1q...")` |
### DevSecOps (3 أدوات)
| الأداة | الوصف | مفتاح API مطلوب | مثال الاستخدام |
|------|-------------|-----------------|---------------|
| `scan_dependencies` | فحص أسماء وإصدارات الحزم مقابل OSV.dev بحثًا عن الثغرات المعروفة | مجاني / بدون مفتاح | `scan_dependencies(ecosystem="PyPI", packages={"requests": "2.28.0"})` |
| `scan_github_advisories` | البحث في نصائح GitHub الأمنية حسب النظام البيئي أو الحزمة أو الخطورة | `GITHUB_TOKEN` (اختياري) | `scan_github_advisories(ecosystem="pip", package="django")` |
| `urlscan_check` | إرسال URL للفحص أو استرجاع نتائج الفحص السابقة من URLScan.io | `URLSCAN_API_KEY` | `urlscan_check("https://suspicious-site.com")` |
---
## 📦 التثبيت
### المتطلبات الأساسية
- **Python 3.10+** (يُوصى بـ 3.11 أو 3.12)
- مدير حزم **pip** أو **uv**
- **Git** لاستنساخ المستودع
- طرفية مع إمكانية الوصول إلى متغيرات البيئة
### الإعداد خطوة بخطوة```bash
# 1. Clone the repository
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
# 2. Create and activate a virtual environment
python -m venv venv
# macOS / Linux:
source venv/bin/activate
# Windows (PowerShell):
.\venv\Scripts\Activate.ps1
# Windows (CMD):
venv\Scripts\activate.bat
# 3. Install dependencies
pip install -e .
# 4. Copy and configure environment variables
cp .env.example .env
# Edit .env with your API keys (see API Keys Setup section below)
# 5. Verify the server starts
python -m cve_mcp.server
git clone https://github.com/mukul975/cve-mcp-server.git cd cve-mcp-server uv venv source .venv/bin/activate # or .venv\Scripts\activate on Windows uv pip install -e . cp .env.example .env
### مع تبعيات الاختبار```bash
pip install -e ".[test]"
تُنظَّم مفاتيح API حسب الأولوية — احصل على مفاتيح المستوى 1 أولاً لتغطية قصوى مع الأدوات المجانية، ثم أضف تدريجيًا المستويين 2 و3 حسب الحاجة.
⚡ بداية بدون مفاتيح: ثماني أدوات تعمل بدون أي مفتاح API — EPSS, CISA KEV, OSV.dev, MITRE ATT&CK, CWE lookups, CVSS parsing, Ransomwhere, وNVD (بمعدل مخفَّض). يمكنك البدء باستخدام الخادم فورًا وإضافة المفاتيح تدريجيًا.
NVD_API_KEY=
GITHUB_TOKEN=
ABUSEIPDB_KEY= # https://www.abuseipdb.com/account/api VIRUSTOTAL_KEY= # https://www.virustotal.com/gui/join-us URLSCAN_KEY= # https://urlscan.io/user/signup SHODAN_KEY= # https://account.shodan.io/register
GREYNOISE_API_KEY= # https://viz.greynoise.io/signup
CIRCL_PDNS_USER= CIRCL_PDNS_PASS=
CACHE_DB_PATH= # defaults to ~/.cve-mcp/cache.db AUDIT_LOG_PATH= # defaults to ~/.cve-mcp/audit.log REQUEST_TIMEOUT=30 # HTTP timeout in seconds MAX_RETRIES=3 # retries on transient errors
### إعداد Claude Desktop
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json````json
{
"mcpServers": {
"cve-mcp": {
"command": "python",
"args": ["-m", "cve_mcp.server"],
"cwd": "/absolute/path/to/cve-mcp-server",
"env": {
"NVD_API_KEY": "your-key-here",
"GITHUB_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx",
"ABUSEIPDB_KEY": "your-abuseipdb-key",
"GREYNOISE_API_KEY": "your-greynoise-key",
"SHODAN_KEY": "your-shodan-key"
}
}
}
}
⚠️ مهم: استخدم دائمًا المسارات المطلقة. أغلق Claude Desktop تمامًا (Cmd+Q / Alt+F4) بعد تغيير الإعدادات — إعادة التحميل ليست كافية.
claude mcp add cve-mcp -- python -m cve_mcp.server
claude mcp add cve-mcp -e NVD_API_KEY=your_key -e VULNCHECK_TOKEN=your_token -- python -m cve_mcp.server
claude mcp list
---
## 🚀 بدء سريع
### الخطوة 1: التثبيت (دقيقتان)```bash
git clone https://github.com/mukul975/cve-mcp-server.git
cd cve-mcp-server
python -m venv venv && source venv/bin/activate
pip install -e .
لا حاجة لملف .env. أضِف الخادم إلى Claude Desktop أو Claude Code وجرّب:
"ما هو CVE-2021-44228؟ هل يتم استغلاله بنشاط؟"
سيستخدم Claude lookup_cve (NVD) وget_epss_score (EPSS) وcheck_kev (CISA KEV) — جميعها مجانية ولا تتطلب مفاتيح.
"افحص حزم Python هذه بحثًا عن الثغرات الأمنية: requests 2.28.0، flask 2.2.0، django 3.2.0"
echo 'NVD_API_KEY=your-key-here' > .env
اطلب مفتاح NVD مجاني من [nvd.nist.gov](https://nvd.nist.gov/developers/request-an-api-key) — يصلك فورًا عبر البريد الإلكتروني، ويرفع حد المعدل من **5 إلى 50 طلبًا لكل 30 ثانية**.
### الخطوة 4: وضع الطاقة الكاملة
بمجرد إضافة مفاتيح المستوى 1 والمستوى 2:
> **"احسب درجة المخاطر لـ CVE-2024-3400 وأخبرني إذا كان علينا تطبيق الترقيع فورًا."**
---
## 💬 أمثلة الاستخدام
### السيناريو 1: "هل يجب أن نطبّق الترقيع على Log4Shell فورًا؟"
> **أنت:** حلّل ما إذا كان CVE-2021-44228 (Log4Shell) يحتاج إلى ترقيع فوري. أعطني درجة المخاطر وتوصيتك.
ينسّق Claude أدوات متعددة في الخلفية:```
→ lookup_cve("CVE-2021-44228")
CVSS 3.1: 10.0 (CRITICAL) | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
→ get_epss_score("CVE-2021-44228")
EPSS: 0.97531 (97.5%) | Percentile: 99.99%
→ check_kev("CVE-2021-44228")
✅ IN CISA KEV — Added 2021-12-10 | Known ransomware use: Yes
→ check_poc_exists("CVE-2021-44228")
✅ WEAPONIZED — 300+ public PoC repositories found
→ calculate_risk_score("CVE-2021-44228")
Risk Score: 97/100 (CRITICAL) | Urgency: PATCH IMMEDIATELY
ردّ كلود: "تُسجَّل CVE-2021-44228 درجة 97/100 (حرِجة). تنفيذ تعليمات برمجية عن بُعد في Apache Log4j، بدرجة CVSS 10.0، واحتمالية EPSS تبلغ 97.5%، واستغلال نشِط مؤكَّد في قائمة CISA KEV بما في ذلك حملات برامج الفدية، وأكثر من 300 استغلال عام. يجب تطبيق التصحيح فورًا."
أنت: افحص هذه التبعيات: requests==2.28.0, flask==2.2.0, django==3.2.0, pillow==9.0.0, cryptography==37.0.0``` → scan_dependencies(ecosystem="PyPI", packages={...}) Found 12 vulnerabilities across 4 packages
**استجابة Claude:** "عثرت على **12 ثغرة أمنية** في حزمك. **إجراء فوري:** Django 3.2.0 (3 ثغرات CVE حرجة بما في ذلك حقن SQL)، Pillow 9.0.0 (تجاوز سعة الكومة)، cryptography 37.0.0 (سلسلة OpenSSL). قم بالترقية إلى: django>=4.2.16, pillow>=10.3.0, cryptography>=42.0.0."
### السيناريو 3: "التحقيق في عنوان IP مشبوه"
> **أنت:** تحقق من عنوان IP المشبوه 185.220.101.34 — هل هو خبيث؟```
→ check_ip_reputation("185.220.101.34")
AbuseIPDB Confidence: 100% | Reports: 4,832 | ISP: Tor Exit Node
→ check_ip_noise("185.220.101.34")
GreyNoise: MALICIOUS | Tags: [Tor Exit Node, Web Scanner]
CVEs targeted: CVE-2024-3400, CVE-2023-46805
→ shodan_host_lookup("185.220.101.34")
Open ports: 22, 80, 443, 9001 | OS: Linux
رد Claude: "185.220.101.34 هو عقدة خروج Tor معروفة بتصنيف خبيث بنسبة 100% من AbuseIPDB مع 4,832 بلاغ إساءة. يؤكد GreyNoise وجود مسح نشط يستهدف CVE-2024-3400 (Palo Alto) وCVE-2023-46805 (Ivanti). التوصية: احظرها على جدار الحماية."
أنت: أنشئ تقريرًا أمنيًا تنفيذيًا لـ: CVE-2024-3400, CVE-2023-44487, CVE-2023-4966, CVE-2024-21887``` → compare_cves([...]) Compiles: NVD, EPSS, KEV, PoC availability, MITRE ATT&CK mapping Generates: Ranked risk table, remediation timeline, executive summary
---
## 📊 شرح درجة المخاطر
تنتج أداة `calculate_risk_score` **درجة مخاطر مركبة من 0 إلى 100** من خلال ترجيح أربع إشارات مستقلة.
### المعادلة```
Risk Score = (CVSS × 0.20) + (EPSS × 0.35) + (KEV × 0.30) + (PoC × 0.15)
النتيجة محدودة عند 100.
العداد العددي هو scoring_version 1.0 (يظهر في triage_cve و calculate_risk_score و health_check). المجموع الخطي الموزون أعلاه هو الافتراضي v1 للنتيجة الرقمية، مع تجاوز صارم واحد:
Act / Attend / Track* / Track) عبر triage_cve(depth="deep") كبديل نوعي قابل للتفسير عن الرقم من 0 إلى 100.يحصل EPSS على أعلى وزن (35%) لأنه أفضل متنبئ منفرد للاستغلال الفعلي — أفضل بكثير من CVSS وحده. CVSS 10.0 مع EPSS 0.01 خطر نظريًا لكنه غير مرجح عمليًا. KEV بنسبة 30% هو الحقيقة الأرضية: استغلال مؤكد وليس تنبؤًا. CVSS بنسبة 20% يلتقط سياق الخطورة لثغرات CVE الجديدة التي تفتقر إلى بيانات EPSS كافية. PoC بنسبة 15% يعكس أن الاستغلالات العامة تسرّع الهجمات في العالم الحقيقي بشكل كبير.
triage_cve — استدعاء أداة واحد يوزّع NVD + EPSS + CISA KEV (+ اكتشاف PoC العام لـ depth != "quick") بشكل متزامن، ويحسب نتيجة المخاطر المركبة، ويعيد تقريرًا نظيفًا. depth هو quick / standard (الافتراضي) / deep؛ deep يُصدر بالإضافة إلى ذلك قرار SSVC v2 المُقيَّد.triage_cve عندما يكون NIST NVD غير قابل للوصول/مقيَّدًا)، و CIRCL hashlookup، وواجهة HIBP Pwned Passwords range API.scoring_version — ثغرات CVE المدرجة في KEV تكون دائمًا حرجة (نتيجة ≥ 76)؛ يتم الإبلاغ عن إصدار التسجيل في triage_cve و health_check.MCP_TRANSPORT=http لخدمة streamable-HTTP على (الافتراضي ، بدون حالة) بدلاً من stdio. يأتي مع .pytest tests/ -v
pytest tests/test_validators.py tests/test_risk_scorer.py -v
pytest tests/ -v --cov=src/cve_mcp --cov-report=term-missing
### الاختبار باستخدام MCP Inspector```bash
npx @modelcontextprotocol/inspector python -m cve_mcp.server
يُفتح على http://localhost:6274 — اختبر كل أداة بشكل تفاعلي، واعرض مخططات الإدخال، وافحص تنسيقات الاستجابة.
src/cve_mcp/ ├── server.py # FastMCP server — all 27 @mcp.tool() definitions ├── config.py # Environment config and API base URLs ├── models.py # Pydantic models (CVERecord, KEVEntry, EPSSScore, ...) ├── audit.py # Rotating audit log (50MB, 5 backups) ├── api/ │ ├── nvd_client.py # NVD REST API v2.0 │ ├── osv_client.py # OSV.dev package vulnerability API │ ├── epss_client.py # FIRST EPSS API │ ├── kev_client.py # CISA KEV catalog │ ├── ip_intel.py # AbuseIPDB + GreyNoise │ ├── domain_intel.py # crt.sh + CIRCL passive DNS │ ├── shodan_client.py # Shodan host intelligence │ ├── hash_intel.py # MalwareBazaar + VirusTotal │ ├── url_safety.py # URLScan.io │ ├── malware_intel.py # ThreatFox IOC lookup │ ├── ransomware_intel.py# Ransomwhere Bitcoin address lookup │ ├── exploit_intel.py # GitHub PoC/exploit search │ ├── vendor_advisory.py # MSRC + Red Hat + Ubuntu advisories │ ├── attack_mapping.py # MITRE ATT&CK STIX mapping │ ├── cve_timeline.py # CVE event timeline builder │ ├── dependency_scan.py # OSV-based dependency scanning │ ├── poc_checker.py # GitHub + Exploit-DB + Nuclei PoC search │ ├── report_generator.py# Vuln report + CVE comparison matrix │ └── rate_limiter.py # Token bucket rate limiter for NVD ├── cache/ │ └── sqlite_cache.py # Async SQLite cache with per-key TTL └── utils/ ├── validators.py # CVE ID normalization, IP/hash validation └── risk_scorer.py # Composite risk score computation
### استراتيجية التخزين المؤقت
| المورد | TTL |
|----------|-----|
| سجلات CVE (NVD) | 1 ساعة |
| نتائج EPSS | 6 ساعات |
| كتالوج KEV | 1 ساعة |
| معلومات IP / النطاق | 1 ساعة |
| Exploit-DB CSV | 24 ساعة |
| بيانات ATT&CK STIX | 24 ساعة |
| معلومات برامج الفدية | 24 ساعة |
### سجل التدقيق
يتم تسجيل كل استدعاء للأداة في `~/.cve-mcp/audit.log`:```json
{
"timestamp": "2026-04-14T10:23:45.123Z",
"tool": "lookup_cve",
"parameters": {"cve_id": "CVE-2024-3400"},
"duration_ms": 342,
"cache_hit": false,
"status": "ok"
}
مفاتيح API وحمولات الاستجابة لا تُكتب أبدًا في سجلات التدقيق.
جميع أدوات الاستخبارات الشبكية تحظر نطاقات عناوين IP الخاصة والمحجوزة قبل أي استدعاء API خارجي:
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 (RFC 1918)127.0.0.0/8 (حلقة محلية), 169.254.0.0/16 (محلي الارتباط)::1, fc00::/7 (عناوين IPv6 خاصة).env مستثنى من Gitيُستخدم defusedxml في جميع عمليات تحليل XML لمنع هجمات قنبلة XML (billion laughs، وحقن XXE).
pip install -e . python --version # must be 3.10+
**Claude Desktop لا يُظهر أيقونة المطرقة (🔨)**
- تحقق من أخطاء صياغة JSON (لا توجد فواصل زائدة في النهاية) في إعداداتك
- استخدم **المسارات المطلقة** — المسارات النسبية تفشل بصمت
- أنهِ Claude Desktop بالكامل (Cmd+Q / Alt+F4) ثم أعد تشغيله
### تم تقييد معدل NVD```bash
# Add your free NVD API key to .env
NVD_API_KEY=your-key-here
# https://nvd.nist.gov/developers/request-an-api-key
يقوم الخادم بوضع الطلبات الزائدة في قائمة الانتظار تلقائيًا، لكن مع مفتاح تحصل على إنتاجية 10×.
curl -H "key: YOUR_KEY" https://api.greynoise.io/v3/ip/8.8.8.8
### مشكلات ترميز Windows```powershell
$env:PYTHONUTF8 = "1"
$env:PYTHONIOENCODING = "utf-8"
نرحب بالمساهمات.
أضف دالة الأداة في server.py باستخدام المُزيِّن @mcp.tool()
أضف التحقق من صحة الإدخال في utils/validators.py
نفّذ عميل API في api/
أضف الاختبارات في tests/
حدّث ملف README هذا```python @mcp.tool() async def my_new_tool(param: str, ctx: Context = None) -> str: """ One-line description for Claude to know when to use this tool.
Args: param: Description of the parameter """ app = _get_app(ctx)
### متطلبات الاختبار
- يجب أن تحتوي جميع الأدوات الجديدة على اختبار غير متصل واحد على الأقل مع استجابات محاكاة
- يجب أن تتضمن تغييرات درجة المخاطر حالات اختبار للتحقق من المعادلة
- يجب أن تتضمن أدوات الشبكة اختبارًا يتحقق من حظر عناوين IP الخاصة
- يجب أن تنجح جميع الاختبارات: `pytest tests/ -v`
---
## 📄 الترخيص
رخصة MIT — راجع [LICENSE](https://github.com/mukul975/cve-mcp-server/blob/main/LICENSE) للتفاصيل.```
Copyright (c) 2025-2026 Mahipal Jangra (mukul975)
صُنع بـ 🔐 بواسطة Mahipal Jangra · برلين، ألمانيا
تحويل الاستخبارات الأمنية إلى محادثة.
| متغير البيئة | يُمكّن | طريقة الحصول | حدود الخطة المجانية | مطلوب؟ |
|---|
NVD_API_KEY | استعلامات NVD أسرع بـ 10× (50 طلب/30ث مقابل 5) | اطلب من nvd.nist.gov | 50 طلبًا لكل 30 ثانية | اختياري لكن يُنصح به بشدة |
GITHUB_TOKEN | البحث في استشارات GitHub + البحث عن PoC للاستغلال | أنشئ PAT على github.com/settings/tokens | 5,000 طلب/ساعة | اختياري (60/ساعة بدونه) |
| متغير البيئة | يُمكّن | طريقة الحصول | حدود الخطة المجانية | مطلوب؟ |
|---|
ABUSEIPDB_KEY | استعلامات سمعة IP | سجّل في abuseipdb.com | 1,000 فحص/يوم | مطلوب لأدوات IP |
VIRUSTOTAL_KEY | فحص البرمجيات الخبيثة للملفات/الروابط/النطاقات/عناوين IP | اشترك في virustotal.com | 500 استعلام/يوم، 4/دقيقة | مطلوب لأدوات VT |
GREYNOISE_API_KEY | ذكاء نشاط الضوضاء/الفحص لعناوين IP | سجّل في viz.greynoise.io | 50 استعلام/أسبوع (المجتمع) | مطلوب لأدوات GreyNoise |
SHODAN_KEY | استطلاع للمضيف/المنفذ/الخدمة | سجّل في account.shodan.io | استعلامات مضيف أساسية (الخطة المجانية) | مطلوب لأدوات Shodan |
| متغير البيئة | يُمكّن | طريقة الحصول | حدود الخطة المجانية | مطلوب؟ |
|---|
URLSCAN_KEY | فحص الروابط وتحليل المواقع | سجّل في urlscan.io | 5,000 فحص عام/يوم | اختياري |
CIRCL_PDNS_USER | استعلامات CIRCL Passive DNS | اطلب الوصول من circl.lu | وصول الشركاء فقط | اختياري |
CIRCL_PDNS_PASS | مصادقة CIRCL Passive DNS | يُوفَّر مع تسجيل CIRCL | وصول الشركاء فقط | اختياري |
| المكوّن | الوزن | ما يلتقطه |
|---|
| CVSS v3.1 Base Score | 20% | أقصى خطورة نظرية |
| EPSS Probability | 35% | الاحتمالية الإحصائية للاستغلال خلال الثلاثين يومًا القادمة |
| CISA KEV Status | 30% | استغلال نشط مؤكد في البرية |
| PoC Availability | 15% | كود الاستغلال العام يخفض الحاجز أمام المهاجمين |
| النتيجة | التصنيف | الإجراء الموصى به |
|---|
| 0 – 25 | منخفض | جدولة إلى نافذة الصيانة التالية |
| 26 – 50 | متوسط | التصحيح خلال 30 يومًا وفق اتفاقية مستوى الخدمة SLA |
| 51 – 75 | عالٍ | التصحيح خلال 7 أيام؛ تصعيد إلى قائد الفريق |
| 76 – 100 | حرج | التصحيح خلال 24–48 ساعة. نافذة تغيير طارئة. |
HOST:PORT0.0.0.0:8000Dockerfilekev://catalog و epss://scores/{cve_id} و manifest://tool-hash (SHA-256 عبر سطح الأدوات المسجّل)؛ موجهات patch_decision و compare_and_prioritize و dependency_triage.sampling/createMessage أبدًا (متجه هجوم MCP-sampling من Unit 42)؛ المسارات الصادرة الجديدة مدرجة في القائمة البيضاء حسب المخطط/المضيف.| # | المصدر | البيانات المقدمة | المصادقة | حد المعدل (مجاني) |
|---|
| 1 | NVD | تفاصيل CVE، CVSS، CWEs، CPEs | ترويسة apiKey (اختياري) | 5 طلبات/30 ثانية (50 مع المفتاح) |
| 2 | EPSS | احتمالية الاستغلال والنسب المئوية | لا شيء | 1,000 طلب/دقيقة |
| 3 | CISA KEV | كتالوج ثغرات CVE المستغلة بنشاط | لا شيء | ملف ثابت |
| 4 | OSV.dev | ثغرات الحزم مفتوحة المصدر | لا شيء | لا يوجد حد منشور |
| 5 | GitHub Advisories | نشرات GHSA، التصحيحات، الإصدارات المتأثرة | رمز Bearer | 60/ساعة (5,000 مع PAT) |
| 6 | MITRE ATT&CK | TTPs، تقنيات، تخفيفات | لا شيء | لا يوجد حد منشور |
| 7 | AbuseIPDB | مستوى الثقة في إساءة استخدام IP، التقارير، مزود الخدمة، الجغرافيا | ترويسة Key | 1,000 فحص/يوم |
| 8 | GreyNoise | نشاط الضوضاء/الفحص لعناوين IP، التصنيف | ترويسة key | 50 استعلامًا/أسبوع |
| 9 | Shodan | المنافذ المفتوحة، الخدمات، اللافتات، CVEs | معامل استعلام key | عمليات بحث أساسية |
| 10 | VirusTotal | نتائج فحص متعدد مضادات الفيروسات، السمعة | ترويسة x-apikey | 500/يوم، 4/دقيقة |
| 11 | MalwareBazaar | عينات البرمجيات الخبيثة، التجزئات، التواقيع | ترويسة Auth-Key | استخدام عادل |
| 12 | ThreatFox | مؤشرات الاختراق (IOCs) المرتبطة بعائلات البرمجيات الخبيثة | ترويسة Auth-Key | استخدام عادل |
| 13 | Ransomwhere | عناوين ومعاملات BTC لفدية ransomware | لا شيء | لا يوجد حد منشور |
| 14 | URLScan.io | فحص URL، لقطات شاشة، DOM | ترويسة API-Key | 5,000 فحص عام/يوم |
| 15 | CIRCL PDNS | سجلات DNS السلبية التاريخية | HTTP Basic Auth | وصول الشريك |
| 16 | GitHub Code Search | البحث في مستودعات PoC للاستغلال | رمز Bearer | مشترك مع حدود GHSA |
| 17 | Exploit-DB | قاعدة بيانات الاستغلال العامة CSV | لا شيء | لا يوجد حد منشور |
| 18 | Nuclei Templates | قوالب كشف المجتمع | لا شيء | لا يوجد حد منشور |
| 19 | MSRC | نشرات أمان Microsoft | لا شيء | لا يوجد حد منشور |
| 20 | Red Hat Security | نشرات CVE من Red Hat | لا شيء | لا يوجد حد منشور |
| 21 | Ubuntu Security | متتبع CVE من Ubuntu | لا شيء | لا يوجد حد منشور |
| 22 | VulnCheck NVD++ | سجلات CVE بنمط NVD (بديل NVD شفاف) | رمز Bearer (مجتمع مجاني) | حسب مستوى مجتمع VulnCheck |
| 23 | CIRCL hashlookup | بيانات وصفية للملفات المعروفة بأنها سليمة (NSRL وغيرها)، hashlookup:trust | لا شيء | حسب الجهد المبذول |
| 24 | HIBP Pwned Passwords | عدادات كلمات المرور المخترقة عبر واجهة النطاق مع إخفاء الهوية k-anonymity | لا شيء | لا يوجد حد صارم |