MCPRadar: open-source сканер безопасности для MCP-экосистемы

Подключаете к Cursor или другому агентному стеку сторонние MCP-серверы с доступом к файлам, API и внутренним инструментам — и получаете новую поверхность атаки в описаниях tools, промптах и схемах, которую классические линтеры обычно не смотрят. MCPRadar — open-source сканер, заточенный именно под Model Context Protocol: автор yatuk позиционирует его как способ проверить сервер до того, как агент получит реальные credentials и данные.
Почему MCP-серверы — отдельный класс риска для агентов
MCP-серверы в материале yatuk названы «связующей тканью» между AI-агентами и внешним миром — файловыми системами, базами, API и внутренними тулами. Риск смещается в метаданные протокола: tool poisoning и prompt injection могут прятаться в описаниях capabilities без CVE и привычных overflow-паттернов. Там же приведена отсылка к академическому исследованию примерно 1 900 MCP-серверов: «значимые» проблемы безопасности — примерно в 7% случаев, MCP-специфичное отравление tools — ещё в 5%; название исследования и отдельная ссылка в первичном тексте не указаны.
Для соло-разработчика, который собирает агентный workflow из готовых MCP из реестра, это аргумент не полагаться на «выглядит популярным» как на сигнал безопасности.
Шесть углов сканирования вместо однопроходного линтера
MCPRadar смотрит на сервер с нескольких сторон:
| Угол | Что проверяется |
|---|---|
| Protocol inspection | Перечисление tools, prompts, resources и templates; server instructions на подозрительный контент |
| Source analysis | Python и JavaScript/TypeScript: SSRF, небезопасная десериализация, command/SQL injection, Trojan Source, расхождения между описанием tool и кодом |
| Configuration review | «Отравленные» MCP- и agent-конфиги, рискованные hooks, избыточно широкие permission grants |
| Supply chain | Загрузка пакетов без выполнения install scripts; сверка зависимостей с OSV; опционально CycloneDX SBOM |
| Change monitoring | Снимки в SQLite, diff во времени; классификация: cosmetic / behavioral / security-relevant |
| CI integration | Вывод JSON, SARIF или CEF; policy-as-code gates для pull requests |
Такой срез ближе к реальному MCP-стеку, чем однопроходный SAST по репозиторию в целом.
Угрозы, которые заявлены в материале
Помимо tool poisoning и prompt injection в descriptions, в посте перечислены over-permissioned configurations, SSRF, unsafe deserialization, command/SQL injection, Trojan Source, poisoned MCP/agent files, risky hooks и supply-chain риски в зависимостях. Отдельно отмечен silent drift — незаметные изменения поведения между снимками, когда сервер формально «тот же», но ведёт себя иначе.
Классические сканеры, по формулировке автора, «просто не смотрят туда», куда смотрит MCP — в tools, prompts и schemas, которые сервер отдаёт агенту.
Запуск в соло-workflow: от быстрого scan до CI
Быстрый старт без установки:
uvx mcpradar scan http://localhost:8080
Установка CLI: uv tool install mcpradar или pip install mcpradar, требуется Python 3.11+. Типичные сценарии из поста:
# Локальный stdio-сервер в disposable sandbox
mcpradar scan "python ./server.py" -t stdio --sandbox
# Анализ исходников без выполнения
mcpradar scan-source ./path/to/server
# Проверка опубликованного пакета и дерева зависимостей
mcpradar deps npm:@modelcontextprotocol/server-filesystem
# Diff против предыдущего снимка
mcpradar diff http://localhost:8080
# SARIF для CI
mcpradar scan http://localhost:8080 --format sarif -o mcpradar.sarif
Для агента с MCP в ежедневном цикле разумная последовательность: scan-source или deps до подключения, diff после обновления сервера, SARIF — если репозиторий уже на CI.
Модель доверия: каждый сервер — untrusted input
Сканер трактует каждый целевой сервер как недоверенный ввод. Stdio-команды на хосте не выполняются без явного --allow-host-exec; предпочтительный путь — --sandbox: disposable non-root контейнер, read-only filesystem, dropped capabilities, без host mounts. Source scan скачивает и инспектирует архивы без install scripts и server code; remote fetch ограничен по URL, redirect, size и timeout, с защитой от доступа в private networks. Сетевой доступ контейнеру — только opt-in (--sandbox-network bridge).
Для локального vibe-coding это снижает риск запустить чужой MCP на своей машине без изоляции.
MRS-v1, leaderboard и честные ограничения
Агрегированный MCPRadar Risk Score (MRS-v1) — шкала 0–10 с версионированным сигналом: findings, confidence, server capabilities, dependency risk и доля покрытия сканом. Это risk signal, не доказательство эксплуатируемости; неполный скан помечается incomplete, а не «clean».
Публичный leaderboard публикует воспроизводимые результаты для популярных installable servers из official MCP Registry с ежедневным обновлением; добавление сервера — через scan request issue с review, без автоматического исполнения по запросу. Возможны false positives; атаки только в runtime могут не попасть в point-in-time scan; обфускация обходит static rules — сканер дополняет ручной review, не заменяет его. Лицензия — MIT; проект open to contributions (detection rules, coverage). URL репозитория и номер релиза пакета в первичном тексте не указаны.
Источники
- yatuk, «MCPRadar: A Security Scanner Built for the MCP Ecosystem» — Dev.to (доступ: 2026-07-28 UTC, публикация: 2026-07-27)