
MCP-сервер промышленного уровня, предоставляющий Claude 27 инструментов киберразведки через 21 API — поиск CVE, оценка EPSS, CISA KEV, MITRE ATT&CK, Shodan, VirusTotal и многое другое.

AI-аналитика безопасности у вас под рукой — 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 даёт Claude прямой доступ к 28 инструментам безопасности через 24 API — во главе с однокомандным оркестратором 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) — начните здесь
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `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 инструментов)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `lookup_cve` | Получить подробную запись CVE из NVD, включая оценки CVSS, CWE, затронутые продукты, ссылки и хронологию | Бесплатно / без ключа (ключ рекомендуется) | `lookup_cve("CVE-2024-3400")` |
| `search_cves` | Искать CVE в NVD по ключевому слову, названию продукта, уровню серьезности или диапазону дат | Бесплатно / без ключа (ключ рекомендуется) | `search_cves(keyword="Apache Log4j", severity="CRITICAL")` |
| `get_epss_score` | Получить вероятность эксплуатации EPSS (0–1) и процентиль для одного или нескольких CVE | Бесплатно / без ключа | `get_epss_score("CVE-2024-3400")` |
| `check_kev_status` | Проверить, присутствует ли CVE в каталоге Known Exploited Vulnerabilities от 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` | Найти сведения о Common Weakness Enumeration по идентификатору 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 инструмента)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `search_exploits` | Искать на GitHub публичные эксплойты proof-of-concept и репозитории с кодом эксплойтов | `GITHUB_TOKEN` (необязательно) | `search_exploits("CVE-2024-3400")` |
| `get_mitre_techniques` | Сопоставить CVE или CWE с соответствующими техниками, тактиками и мерами смягчения MITRE ATT&CK | Бесплатно / без ключа | `get_mitre_techniques("CVE-2021-44228")` |
| `check_poc_availability` | Определить, существует ли известный код proof-of-concept для CVE в нескольких источниках | `GITHUB_TOKEN` (необязательно) | `check_poc_availability("CVE-2024-3400")` |
| `get_attack_patterns` | Получить сведения о шаблонах атак CAPEC, связанных с CWE или CVE | Бесплатно / без ключа | `get_attack_patterns("CWE-89")` |
### Этап 3: Расширенный анализ рисков и отчётность (4 инструмента)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `calculate_risk_score` | Вычислить комплексный показатель риска от 0 до 100 с использованием CVSS, EPSS, статуса KEV и наличия PoC | Бесплатно / без ключа (ключ рекомендуется) | `calculate_risk_score("CVE-2024-3400")` |
| `generate_risk_report` | Сформировать оформленный отчёт по безопасности для руководства по одному или нескольким CVE с рекомендациями | Бесплатно / без ключа (ключ рекомендуется) | `generate_risk_report(["CVE-2024-3400", "CVE-2023-44487"])` |
| `prioritize_cves` | Ранжировать список CVE по комплексному показателю риска для приоритизации триажа | Бесплатно / без ключа (ключ рекомендуется) | `prioritize_cves(["CVE-2024-3400", "CVE-2023-4966", "CVE-2023-44487"])` |
| `get_trending_cves` | Получить популярные CVE на основе высоких показателей EPSS и недавних добавлений в KEV | Бесплатно / без ключа | `get_trending_cves(days=7, min_epss=0.5)` |
### Сетевая аналитика (4 инструмента)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `lookup_ip_reputation` | Проверить историю злоупотреблений IP-адреса и показатель уверенности через AbuseIPDB | `ABUSEIPDB_API_KEY` | `lookup_ip_reputation("185.220.101.34")` |
| `check_ip_noise` | Запросить в GreyNoise данные об активности сканирования/атак с IP, классификацию и связанные CVE | `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 инструмента)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `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 инструмента)
| Tool | Description | API Key Required | Example Usage |
|------|-------------|-----------------|---------------|
| `scan_dependencies` | Проверить названия и версии пакетов через OSV.dev на наличие известных уязвимостей | Бесплатно / без ключа | `scan_dependencies(ecosystem="PyPI", packages={"requests": "2.28.0"})` |
| `scan_github_advisories` | Искать GitHub Security Advisories по экосистеме, пакету или уровню серьезности | `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, разбор CVSS, 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: Установка (2 минуты)```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
Ответ Claude: "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, оценённый AbuseIPDB как 100% вредоносный, с 4832 жалобами. 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 и range API сервиса HIBP Pwned Passwords.scoring_version — CVE из списка KEV всегда имеют метку CRITICAL (балл ≥ 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
Opens at 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 / домен intel | 1 час |
| CSV Exploit-DB | 24 часа |
| Данные ATT&CK STIX | 24 часа |
| Intel по программам-вымогателям | 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 keys and response payloads are never written to audit logs.
All network intelligence tools block private and reserved IP ranges before any external API call:
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 (RFC 1918)127.0.0.0/8 (loopback), 169.254.0.0/16 (link-local)::1, fc00::/7 (IPv6 private).env is gitignoreddefusedxml is used for all XML parsing to prevent XML bomb attacks (billion laughs, XXE injection).
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 Advisory + поиск эксплойтов PoC | Создать PAT на github.com/settings/tokens | 5 000 запросов/час | Необязательно (60/час без него) |
| Переменная окружения | Что даёт | Как получить | Лимиты бесплатного тарифа | Обязательно? |
|---|
ABUSEIPDB_KEY | Проверка репутации IP-адресов | Зарегистрироваться на abuseipdb.com | 1 000 проверок/день | Требуется для IP-инструментов |
VIRUSTOTAL_KEY | Сканирование файлов/URL/доменов/IP на вредоносное ПО | Зарегистрироваться на virustotal.com | 500 обращений/день, 4/мин | Требуется для VT-инструментов |
GREYNOISE_API_KEY | Аналитика шума/скан-активности IP | Зарегистрироваться на viz.greynoise.io | 50 запросов/неделю (community) | Требуется для инструментов GreyNoise |
SHODAN_KEY | Разведка хостов/портов/сервисов | Зарегистрироваться на account.shodan.io | Базовые проверки хостов (бесплатный тариф) | Требуется для инструментов Shodan |
| Переменная окружения | Что даёт | Как получить | Лимиты бесплатного тарифа | Обязательно? |
|---|
URLSCAN_KEY | Сканирование URL и анализ веб-сайтов | Зарегистрироваться на urlscan.io | 5 000 публичных сканирований/день | Необязательно |
CIRCL_PDNS_USER | Запросы CIRCL Passive DNS | Запросить доступ на circl.lu | Только для партнёров | Необязательно |
CIRCL_PDNS_PASS | Аутентификация CIRCL Passive DNS | Предоставляется при регистрации в CIRCL | Только для партнёров | Необязательно |
| Компонент | Вес | Что учитывает |
|---|
| Базовый балл CVSS v3.1 | 20% | Теоретическая наихудшая серьёзность |
| Вероятность EPSS | 35% | Статистическая вероятность эксплуатации в ближайшие 30 дней |
| Статус CISA KEV | 30% | Подтверждённая активная эксплуатация в реальной среде |
| Доступность PoC | 15% | Публичный код эксплойта снижает порог входа для атакующих |
| Балл | Метка | Рекомендуемое действие |
|---|
| 0 – 25 | LOW | Запланировать на ближайшее окно обслуживания |
| 26 – 50 | MEDIUM | Установить исправление в течение 30 дней согласно SLA |
| 51 – 75 | HIGH | Установить исправление в течение 7 дней; эскалировать руководителю команды |
| 76 – 100 | CRITICAL | Установить исправление в течение 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); новые исходящие пути вносятся в список разрешённых по схеме/хосту (allowlist).| № | Источник | Предоставляемые данные | Аутентификация | Лимит запросов (бесплатно) |
|---|
| 1 | NVD | Детали CVE, CVSS, CWE, CPE | заголовок 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 | TTP, техники, меры смягчения | Нет | Опубликованного лимита нет |
| 7 | AbuseIPDB | Уровень доверия по злоупотреблениям IP, отчёты, ISP, геоданные | заголовок Key | 1 000 проверок/день |
| 8 | GreyNoise | Шумовая/сканерная активность IP, классификация | заголовок key | 50 запросов/неделю |
| 9 | Shodan | Открытые порты, сервисы, баннеры, CVE | query-параметр key | Базовые запросы |
| 10 | VirusTotal | Результаты сканирования несколькими антивирусами, репутация | заголовок x-apikey | 500/день, 4/мин |
| 11 | MalwareBazaar | Образцы вредоносного ПО, хеши, сигнатуры | заголовок Auth-Key | Добросовестное использование |
| 12 | ThreatFox | IOC, связанные с семействами вредоносного ПО | заголовок Auth-Key | Добросовестное использование |
| 13 | Ransomwhere | BTC-адреса и транзакции программ-вымогателей | Нет | Опубликованного лимита нет |
| 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 | Уведомления Red Hat о CVE | Нет | Опубликованного лимита нет |
| 21 | Ubuntu Security | Трекер CVE Ubuntu | Нет | Опубликованного лимита нет |
| 22 | VulnCheck NVD++ | Записи CVE в схеме NVD (прозрачный резервный источник NVD) | Bearer-токен (бесплатный Community) | Согласно тарифу VulnCheck Community |
| 23 | CIRCL hashlookup | Метаданные заведомо безопасных файлов (NSRL и др.), hashlookup:trust | Нет | По мере возможности |
| 24 | HIBP Pwned Passwords | Количество утечек паролей через range API с k-анонимностью | Нет | Жёсткого лимита нет |