mcp-audit
mcp-audit
npm audit для MCP-серверов. Укажите MCP-сервер и получите оценку безопасности (A–F), охватывающую отсутствие аутентификации, поверхность SSRF, инструменты с высокими привилегиями, склонные к инъекциям описания инструментов и утекшие секреты.
Почему это существует (данные 2026 года): из ~7 000 публичных MCP-серверов 41% не требуют аутентификации, 36,7% имеют поверхность SSRF, только 8,5% используют OAuth, и 30+ CVE были поданы за один 60-дневный период. Количество серверов насыщено (22k+); уровень безопасности — нет. Другие инструменты (например, mcp-scan от Invariant) проверяют один сервер глубоко — mcpaudit добавляет пакетное аудирование реестра: укажите его на официальный MCP-реестр и оцените всю экосистему сразу.
npm i -g @andreolf/mcpaudit # then: mcpaudit <url>
# or zero-install: npx @andreolf/mcpaudit <url>Безопасно ли его запускать? Да по замыслу: mcpaudit отправляет только initialize (только чтение) + рукопожатие tools/list и проверяет объявленные инструменты. Он никогда не выполняет код сканируемого сервера, если вы явно не передадите --allow-exec для запуска локального/npm-сервера.
⚠️ Эвристический сканер. Результаты описывают поверхность (например, "нет аутентификации", "предоставляет инструмент для получения URL"), а не доказанные эксплойты — чистый отчет не является гарантией безопасности. Сканируйте только серверы, которые вам разрешено тестировать, и ответственно сообщайте о находках. См. SECURITY.md.
Использование
Сканирование удаленного сервера (Streamable HTTP):
node bin/mcp-audit.js https://example.com/mcp
node bin/mcp-audit.js https://example.com/mcp --header "Authorization: Bearer $TOKEN" --jsonСканирование опубликованного сервера (запущен через npx -y <пакет>):
node bin/mcp-audit.js --npm @modelcontextprotocol/server-filesystem --timeout 20000Сканирование локального сервера, запущенного командой (stdio):
node bin/mcp-audit.js --cmd "node my-server.js"Требуется Node 18+ (использует глобальный fetch). Ноль зависимостей. Установка: npm i -g @andreolf/mcpaudit, затем mcpaudit <url> — или npx @andreolf/mcpaudit <url>.
Коды выхода: 0 чисто · 1 критическая/высокая находка · 2 не удалось отсканировать / неправильное использование. Подходит для CI.
Related MCP server: mcp-security-audit
Пакетный режим (запуск аудита)
Сканируйте множество серверов и получите таблицу лидеров по наихудшим результатам + сводную статистику для запускающего поста:
node bin/mcp-audit-batch.js targets.txt --out audit.mdtargets.txt — это одна цель на строку (https://…, npm:<пакет> или cmd:<команда>; допускаются комментарии #).
⚠️ Безопасность: сканирование
npm:/cmd:сервера запускает код этого сервера на вашей машине. Пакетный режим по умолчанию только HTTP и ПРОПУСКАЕТ локальные/npm-цели, если вы не передадите--allow-exec— делайте это только внутри песочницы/контейнера, которому доверяете. Массовый запуск непроверенных пакетов — это риск удаленного выполнения кода.
Вывод включает ключевые цифры ("X% доступных HTTP-серверов принимают initialize без аутентификации"), которые становятся основой запускающего поста.
Полный конвейер запуска
Извлеките цели из официального MCP-реестра (только обнаружение — никогда не выполняет сервер), затем проверьте их:
node bin/mcp-audit-fetch.js --max 300 --out targets.txt # HTTP remotes = safe to scan
node bin/mcp-audit-batch.js targets.txt --concurrency 8 --out audit.mdmcpaudit-fetch выводит конечные точки реестра HTTP как сканируемые строки, а npm-пакеты как закомментированные строки (включите с помощью --include-npm, затем --allow-exec в песочнице). Реальный запуск первых 30 серверов реестра показал, что 50% принимают initialize без аутентификации — именно такие цифры лежат в основе запускающего поста.
Использование в CI (GitHub Action)
Ограничьте безопасность вашего MCP-сервера в каждом PR. Запустите свой сервер, затем укажите действие на него:
- name: Start my MCP server
run: node my-server.js & # or docker run ..., then wait for it to be ready
- name: Security-audit the MCP server
uses: andreolf/mcp-audit@v1
with:
url: http://localhost:3000/mcp
fail-on: D # fail the job on grade D or worse (default: F)
# header: "Authorization: Bearer ${{ secrets.MCP_TOKEN }}" # optionalЗадание выводит оценку A–F и результаты, и завершается ошибкой, если оценка равна или ниже fail-on. На сканируемом сервере ничего не выполняется — отправляется только рукопожатие только для чтения.
Тест
npm test # spawns the mock insecure server (stdio + batch) and asserts findings — 12 checksЧто проверяется (начальные эвристики — расширяйте их)
no-auth — сервер принимает
initializeбез учетных данных (критично)ssrf-surface — инструменты, принимающие URL / выполняющие исходящие запросы (высоко)
high-privilege-tool — инструменты типа exec/shell/delete/write-file (высоко)
injection-in-description — формулировки переопределения/инъекции в описаниях инструментов (средне)
leaked-secret — строки, похожие на токены/ключи, в метаданных инструментов (критично)
Архитектура
bin/mcp-audit.js CLI entry (arg parsing, exit codes for CI)
src/scan.js orchestrator
src/mcpClient.js MCP Streamable-HTTP transport: initialize + tools/list
src/checks.js heuristic security checks -> findings
src/report.js grading (A–F), badge, Markdown/JSON outputПлан развития (превратите этот скелет в вирусную вещь)
✅ Транспорты stdio + npm — сканирование локальных (
--cmd) и опубликованных (--npm, через npx) серверов, а не только удаленных URL. Это открывает возможность сканирования топ-серверов реестра для запускающего аудита. (PyPI/uvxэквивалент — небольшое дополнение.)Обнаружение статического ключа vs OAuth — проверка вызова аутентификации / формата токена.
Более глубокий SSRF-зонд — фактический вызов инструментов типа fetch по внутреннему канареечному URL в песочнице.
✅ Пакетный режим + таблица лидеров —
mcpaudit-batch targets.txt→ ранжированный отчет + ключевые цифры. Этот ранжированный отчет и есть артефакт запуска: "Мы проверили 200 наиболее устанавливаемых MCP-серверов."✅ Получатель реестра (
mcpaudit-fetch) — извлекает HTTP-цели из официального MCP-реестра (только обнаружение, никогда не выполняет). npm-пакеты выводятся закомментированными.--include-npmдля включения.Встраиваемый значок —
MCP Security: Aзначок в стиле shields.io, который серверы добавляют в свой README (сигнал ранжирования 2026 года и бесплатное распространение для вас).Присутствие в реестре — список на mcp.so, smithery.ai, glama.ai, PulseMCP, официальном MCP-реестре и PR в punkpeye/awesome-mcp-servers. Подготовьте один пакет метаданных, отправьте во все.
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceSecurity scanner for MCP servers. Detects prompt injection, command injection, auth bypass, and excessive permissions across tools, resources, and prompts.482MIT
- Alicense-qualityCmaintenanceSecurity auditor for MCP servers that enumerates tools, resources, and prompts, scans for injection patterns, classifies risk levels, and produces a scored report (0-100, grades A-F).2MIT
- Alicense-qualityAmaintenanceSecurity scanner for MCP servers — vet an MCP before you wire it into an agent. Detects prompt-injection, credential exfiltration (via taint analysis), RCE, and supply-chain risks, and catches cross-server exfil chains no single server reveals. Zero-dependency local CLI, SARIF output, CI-gateable, no account.43MIT
- AlicenseCqualityBmaintenanceSecurity scanner and MCP server that catches dangerous patterns in MCP servers and AI agent projects, such as leaked secrets, shell execution, and prompt-injection text. Runs as both a CLI and MCP server with CI-friendly severity gates.21MIT
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Scans MCP servers for tool poisoning, prompt injection and supply chain risks.
Grade MCP servers A to F with the open behavioral litmus. npm: full toolset; hosted: lookups only.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/andreolf/mcp-audit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server