mcp-audit
mcp-audit
Auditoría npm para servidores MCP. Apúntalo a un servidor MCP y obtén una calificación de seguridad (A–F) que cubre falta de autenticación, superficie SSRF, herramientas de alto privilegio, descripciones de herramientas propensas a inyección de prompts y secretos filtrados.
Por qué existe esto (datos de 2026): de aproximadamente 7,000 servidores MCP públicos, el 41% no requiere autenticación, el 36,7% expone una superficie SSRF, solo el 8,5% usa OAuth, y se presentaron más de 30 CVEs en una sola ventana de 60 días. El recuento de servidores está saturado (más de 22k servidores); la postura de seguridad no lo está. Otras herramientas (por ejemplo, mcp-scan de Invariant) inspeccionan un solo servidor en profundidad — mcpaudit agrega auditoría por lotes a nivel de registro: apúntalo al Registro MCP oficial y califica todo el ecosistema a la vez.
npm i -g @andreolf/mcpaudit # then: mcpaudit <url>
# or zero-install: npx @andreolf/mcpaudit <url>¿Es seguro ejecutarlo? Sí por diseño: mcpaudit envía solo un handshake de solo lectura initialize + tools/list e inspecciona las herramientas declaradas. Nunca ejecuta el código de un servidor escaneado a menos que pases explícitamente --allow-exec para iniciar un servidor local/npm.
⚠️ Escáner heurístico. Los hallazgos describen superficie (ej. "sin autenticación", "expone una herramienta de obtención de URL"), no exploits probados — un informe limpio no es una garantía de seguridad. Escanea solo servidores que estés autorizado a probar y divulga los hallazgos de manera responsable. Ver SECURITY.md.
Uso
Escanea un servidor remoto (HTTP Streamable):
node bin/mcp-audit.js https://example.com/mcp
node bin/mcp-audit.js https://example.com/mcp --header "Authorization: Bearer $TOKEN" --jsonEscanea un servidor publicado (iniciado mediante npx -y <paquete>):
node bin/mcp-audit.js --npm @modelcontextprotocol/server-filesystem --timeout 20000Escanea un servidor local iniciado por un comando (stdio):
node bin/mcp-audit.js --cmd "node my-server.js"Requiere Node 18+ (usa fetch global). Cero dependencias. Instalación: npm i -g @andreolf/mcpaudit luego mcpaudit <url> — o npx @andreolf/mcpaudit <url>.
Códigos de salida: 0 limpio · 1 hallazgo crítico/alto · 2 no se pudo escanear / uso incorrecto. Apto para CI.
Related MCP server: mcp-security-audit
Modo por lotes (la auditoría de lanzamiento)
Escanea muchos servidores y obtén un ranking de peor a mejor + las estadísticas agregadas para un post de lanzamiento:
node bin/mcp-audit-batch.js targets.txt --out audit.mdtargets.txt es un objetivo por línea (https://…, npm:<paquete>, o cmd:<comando>; se permiten comentarios con #).
⚠️ Seguridad: escanear un servidor
npm:/cmd:ejecuta el código de ese servidor en tu máquina. El modo por lotes es solo HTTP por defecto y OMITE los objetivos locales/npm a menos que pases--allow-exec— hazlo solo dentro de un contenedor/sandbox de confianza. Ejecutar paquetes no confiables en masa es exposición a ejecución remota de código.
La salida incluye los números destacados ("El X% de los servidores HTTP accesibles aceptan initialize sin autenticación") que se convierten en el hilo de lanzamiento.
El pipeline completo de lanzamiento
Extrae objetivos del Registro MCP oficial (solo descubrimiento — nunca ejecuta un servidor), luego audítalos:
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 emite los endpoints HTTP del registro como líneas escaneables y los paquetes npm como líneas comentadas (opta con --include-npm, luego --allow-exec en un sandbox). Una ejecución real de los primeros 30 servidores del registro encontró que el 50% acepta initialize sin autenticación — el tipo de número sobre el que se construye el post de lanzamiento.
Uso en CI (GitHub Action)
Protege la seguridad de tu servidor MCP en cada PR. Inicia tu servidor, luego apunta la acción hacia él:
- 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 }}" # optionalEl trabajo imprime una calificación A–F y los hallazgos, y falla si la calificación es igual o inferior a fail-on. No se ejecuta nada en el servidor escaneado — solo envía un handshake de solo lectura.
Prueba
npm test # spawns the mock insecure server (stdio + batch) and asserts findings — 12 checksQué verifica (heurísticas iniciales — amplíalas)
no-auth — el servidor acepta
initializesin credenciales (crítico)ssrf-surface — herramientas que toman URLs / realizan solicitudes salientes (alto)
high-privilege-tool — herramientas de tipo exec/shell/delete/write-file (alto)
injection-in-description — redacción de anulación/inyección en descripciones de herramientas (medio)
leaked-secret — cadenas con forma de token/clave en metadatos de herramientas (crítico)
Arquitectura
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 outputHoja de ruta (convierte este esqueleto en algo viral)
✅ Transportes stdio + npm — escanea servidores locales (
--cmd) y publicados (--npm, mediante npx), no solo URLs remotas. Esto desbloquea escanear los servidores principales del registro para la auditoría de lanzamiento. (El equivalente PyPI/uvxes un pequeño seguimiento).Detección de clave estática vs OAuth — inspecciona el desafío de autenticación / formato del token.
Sonda SSRF más profunda — llama realmente a herramientas tipo fetch contra una URL interna canary en un sandbox.
✅ Modo por lotes + ranking —
mcpaudit-batch targets.txt→ informe clasificado + estadísticas destacadas. Ese informe clasificado es el artefacto de lanzamiento: "Auditamos los 200 servidores MCP más instalados".✅ Obtenedor de registro (
mcpaudit-fetch) — extrae objetivos HTTP del Registro MCP oficial (solo descubrimiento, nunca ejecuta). Los paquetes npm se emiten comentados.--include-npmpara optar.Insignia incrustable —
MCP Security: Ainsignias estilo shields.io que los servidores agregan a su README (señal de ranking en 2026 y distribución gratuita para ti).Presencia en el registro — listar en mcp.so, smithery.ai, glama.ai, PulseMCP, Registro MCP oficial, y PR a punkpeye/awesome-mcp-servers. Prepara un paquete de metadatos, envíalo a todos.
Licencia
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