Skip to main content
Glama
andreolf
by andreolf

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.md

targets.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.md

mcpaudit-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

План развития (превратите этот скелет в вирусную вещь)

  1. Транспорты stdio + npm — сканирование локальных (--cmd) и опубликованных (--npm, через npx) серверов, а не только удаленных URL. Это открывает возможность сканирования топ-серверов реестра для запускающего аудита. (PyPI/uvx эквивалент — небольшое дополнение.)

  2. Обнаружение статического ключа vs OAuth — проверка вызова аутентификации / формата токена.

  3. Более глубокий SSRF-зонд — фактический вызов инструментов типа fetch по внутреннему канареечному URL в песочнице.

  4. Пакетный режим + таблица лидеровmcpaudit-batch targets.txt → ранжированный отчет + ключевые цифры. Этот ранжированный отчет и есть артефакт запуска: "Мы проверили 200 наиболее устанавливаемых MCP-серверов."

  5. Получатель реестра (mcpaudit-fetch) — извлекает HTTP-цели из официального MCP-реестра (только обнаружение, никогда не выполняет). npm-пакеты выводятся закомментированными. --include-npm для включения.

  6. Встраиваемый значокMCP Security: A значок в стиле shields.io, который серверы добавляют в свой README (сигнал ранжирования 2026 года и бесплатное распространение для вас).

  7. Присутствие в реестре — список на mcp.so, smithery.ai, glama.ai, PulseMCP, официальном MCP-реестре и PR в punkpeye/awesome-mcp-servers. Подготовьте один пакет метаданных, отправьте во все.

Лицензия

MIT

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

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

  • A
    license
    -
    quality
    C
    maintenance
    Security scanner for MCP servers. Detects prompt injection, command injection, auth bypass, and excessive permissions across tools, resources, and prompts.
    48
    2
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Security 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).
    2
    MIT
  • A
    license
    -
    quality
    A
    maintenance
    Security 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.
    43
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Security 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.
    2
    1
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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