Единый сканер безопасности для MCP-серверов с режимами конфигурации, пентеста и сканирования репозиториев. Генерирует отчеты SARIF для интеграции с CI/CD, обнаруживает секреты, уязвимости и неверные конфигурации с помощью токенов и LLM-анализаторов.
[!NOTE] Хотите защитить навыки AI-агентов? Ознакомьтесь с Skill X-Ray — открытым статическим сканером безопасности, который анализирует пакеты навыков на предмет вредоносного или рискованного поведения перед установкой, без их выполнения.
MCP X-Ray — это унифицированное открытое решение для сканирования безопасности и тестирования на проникновение серверов Model Context Protocol (MCP). Оно генерирует готовые к использованию в производстве отчёты SARIF для бесшовной интеграции с инструментами безопасности и CI/CD-конвейерами. Результаты сканирования по желанию можно загрузить в Traceforce Atlas для централизованного управления безопасностью и отслеживания. В реестре Atlas более 600 MCP, что обеспечивает всеобъемлющую базу данных оценки безопасности для экосистемы MCP.
# Clone the repository
git clone https://github.com/traceforce/mcp-xray
cd mcp-xray
# Install required dependencies (buf, etc.)
make install-dependencies
# Build everything (generates protobuf code and builds the binary)
# The binary will be created as `mcpxray` in the current directory
make all
Сканируйте конфигурации MCP на предмет проблем безопасности; запускайте перед пентестом, чтобы зафиксировать базовое состояние вашей конфигурации.
# Scan a specific MCP config file (uses token analyzer by default)
./mcpxray config-scan /path/to/mcp/config.json
# Scan all known MCP config paths automatically for Cursor, Claude and Windsurf.
# Known config locations (relative to home directory):
# ~/.cursor/mcp.json (Cursor)
# ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop)
# ~/.codeium/windsurf/mcp_config.json (Windsurf)
./mcpxray config-scan --scan-known-configs
# Use LLM analyzer for more extensive and deepr analysis
./mcpxray config-scan /path/to/mcp/config.json --analyzer-type llm --llm-model claude-3-5-sonnet-20241022
# Specify custom output file
./mcpxray config-scan /path/to/mcp/config.json --output custom-report.sarif.json
Возможности обнаружения:
Выполняйте планы тестирования безопасности, совершая фактические вызовы инструментов к MCP-серверам. Для запуска pentest требуются LLM. Запускайте это перед фактическим развёртыванием в production.
# Run pentest with auto-generated test plan (requires LLM model)
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5
# Use a custom test plan YAML file
./mcpxray pentest /path/to/mcp/config.json --test-plan /path/to/test-plan.yaml --llm-model claude-sonnet-4-5
Возможности обнаружения: уязвимости выполнения кода, SSRF, обхода пути, обхода авторизации, инъекции входных данных, раскрытия информации и DoS
Сканируйте кодовую базу на наличие уязвимостей; используйте, когда вы владеете кодом или можете его изменить.
# Scan current directory
./mcpxray repo-scan
# Scan a specific repository
./mcpxray repo-scan /path/to/repository
# Specify custom output file
./mcpxray repo-scan --output custom-report.sarif.json
Возможности обнаружения:
Taint SAST использует движок OpenGrep. Установите
закреплённый, проверенный по SHA бинарный файл с помощью make install-opengrep (Linux x86_64/arm64, macOS
arm64/x86_64). На других платформах установите opengrep самостоятельно и задайте
MCPXRAY_OPENGREP_BIN. Анализ заражения активируется при установке: repo-scan запускает его
всякий раз, когда закреплённый движок доступен, а при отсутствии движка он пропускает taint
и всё равно запускает SCA, обнаружение секретов и правила небезопасных команд.
Для межфайлового, межпроцедурного анализа заражения на Go и TypeScript (а также Python) установите движок CodeQL. Он также активируется при установке, а его результаты объединяются с результатами OpenGrep:
make install-codeql # pinned CodeQL bundle (Linux x86_64, macOS, Windows)
./mcpxray repo-scan <repo> # every installed engine runs; results merged
CodeQL создаёт базу данных для каждого языка, поэтому после установки бандла сканирование занимает заметно больше времени; эта цена — плата за межфайловый анализ. Чтобы вернуться к быстрому внутрифайловому проходу, удалите движок тем же способом, которым устанавливали: удалите бандл из make install-codeql (он находится рядом с бинарным файлом) или снимите MCPXRAY_CODEQL_BIN, если вы указывали его на конкретный файл. Python и TypeScript извлекаются без сборки (цель никогда не выполняется). В Go нет режима без сборки, поэтому CodeQL компилирует цель; этот шаг выполняется только с --codeql-allow-build, иначе пропускается с предупреждением; сканирование никогда не блокируется на запросе.
Для каждого языка задаётся бюджет времени, покрывающий database create плюс analyze — по умолчанию 600 с. Цель, превысившая его, не даёт никакого результата, поэтому для больших репозиториев увеличьте его с помощью --codeql-timeout <seconds> (или MCPXRAY_CODEQL_TIMEOUT); при одновременной установке обоих побеждает флаг. Превышение бюджета сообщается как timed out after Ns, но никогда как чистый ноль.
MCP X-Ray генерирует отчёты в формате SARIF (Static Analysis Results Interchange Format), который широко поддерживается инструментами безопасности и платформами CI/CD.
Загружайте результаты сканирования в Traceforce Atlas для централизованного управления безопасностью, отчётности и отслеживания во времени. Добавьте флаг --upload к любой команде сканирования. Используйте --clean-up, чтобы удалить сгенерированные файлы после успешной загрузки.
Требуемые переменные окружения:
TRACEFORCE_CLIENT_IDTRACEFORCE_CLIENT_SECRETЭти учётные данные можно скачать со страницы настроек в интерфейсе Atlas.
# Upload config scan results
./mcpxray config-scan /path/to/mcp/config.json --upload
# Upload with cleanup
./mcpxray config-scan /path/xia-add-registry-imageto/mcp/config.json --upload --clean-up
# Upload pentest results
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5 --upload

Примеры выходных данных сканирования доступны в examples/findings/.
Примеры файлов конфигурации MCP доступны в каталоге examples/mcp_configs/.