Cómo verificar servidores MCP en busca de amenazas ocultas y puertas traseras
Conectar extensiones de terceros a asistentes de IA se ha convertido rápidamente en algo común. Añadimos sin dudar nuevos servidores MCP a Cursor, Windsurf o Claude Desktop para que el modelo pueda leer documentación, consultar bases de datos o ejecutar scripts. Sin embargo, pocas personas realmente leen el código fuente de estas utilidades antes de ejecutarlas. Gran error.
Cualquier herramienta externa obtiene acceso directo al contexto del modelo y a tu sistema. Si la descripción de una herramienta contiene una instrucción sutil (inyección de prompts), o un paquete envía silenciosamente variables de entorno a un servidor externo, detectar el truco manualmente es difícil. El equipo de Cisco AI Defense ha lanzado un proyecto de código abierto mcp-scanner — una utilidad de línea de comandos y biblioteca de Python diseñada específicamente para auditar servidores MCP.

Lo que puede hacer el escáner
La herramienta verifica cuatro entidades del protocolo MCP a la vez: descripciones de funciones (herramientas), prompts preconfigurados, recursos estáticos e instrucciones del sistema del servidor.
En su interior, ejecuta un sistema de análisis híbrido. El escáner no se limita a la coincidencia de firmas — combina varios enfoques:
- Análisis de firmas YARA. Verifica código y esquemas en busca de patrones de ataque típicos, llamadas a comandos de shell y intentos de escape del sandbox. Se ejecuta localmente y es rápido, no necesita claves API.
- Verificación semántica LLM-as-a-judge. Envía esquemas de herramientas y prompts del sistema a un modelo (soporta OpenAI, Bedrock, Azure u Ollama local) para detectar inyecciones ocultas y discrepancias entre la descripción de una función y su comportamiento real.
- Auditoría de comportamiento del código fuente. Un analizador estático compara docstrings con los cuerpos de funciones en Python, TypeScript, Go, Rust, Java y otros cinco lenguajes. Si una función dice ser una calculadora pero inicia solicitudes HTTP internamente, el escáner genera una alerta.
- Aislamiento de paquetes de PyPI y npm. La utilidad puede descargar paquetes y ejecutarlos en un contenedor Docker aislado, identificando código malicioso antes de que lo instales en tu sistema.
Un detalle interesante: el repositorio incluye un Readiness Analyzer. Contiene 20 heurísticas y busca problemas puramente de ingeniería: timeouts olvidados, lógica de reintento faltante para fallos de red y mal manejo de errores.
Inicio rápido en la terminal
La forma más sencilla de instalar la utilidad es mediante uv:
uv tool install --python 3.13 cisco-ai-mcp-scanner
Si solo quieres verificar lo que ya está configurado en tus editores, ejecuta un escaneo de configuraciones conocidas:
mcp-scanner --scan-known-configs --analyzers yara --format summary
El comando encontrará los archivos de configuración de Claude Desktop, Cursor y Windsurf en tu máquina, se conectará a los servidores configurados y ejecutará reglas YARA básicas.
Para verificar un servidor local que se ejecuta sobre stdio, pasa el comando de lanzamiento:
mcp-scanner --analyzers yara,prompt_defense --format table \
stdio --stdio-command uvx --stdio-arg mcp-server-fetch
Si tienes un endpoint remoto ejecutándose, la verificación comienza de la misma manera:
mcp-scanner --server-url https://mcp.deepwiki.com/mcp --analyzers yara --format summary
La utilidad mostrará un resumen para cada herramienta con su estado de seguridad y una lista de amenazas detectadas.
=== MCP Scanner Results Table ===
Scan Target: http://127.0.0.1:8002/sse
Scan Target Tool Name Status API YARA LLM Severity
-----------------------------------------------------------------------------------------
http://127.0.0.1:8002/sse exec_secrets UNSAFE HIGH HIGH HIGH HIGH
http://127.0.0.1:8002/sse safe_command SAFE SAFE SAFE SAFE SAFE
Uso en código y CI/CD
El proyecto está diseñado no solo como CLI, sino también como un SDK independiente. Es conveniente integrarlo en puertas de enlace de backend o tuberías de validación de herramientas antes de publicar en el registro interno de tu empresa.
import asyncio
import logging
from mcpscanner import Config, Scanner, set_log_level
from mcpscanner.core.models import AnalyzerEnum
async def main():
set_log_level(logging.ERROR)
config = Config(
llm_provider_api_key="your_llm_api_key"
)
scanner = Scanner(config)
# Проверяем удаленный сервер
results = await scanner.scan_remote_server_tools(
"http://127.0.0.1:8000/mcp",
analyzers=[AnalyzerEnum.YARA, AnalyzerEnum.LLM]
)
for res in results:
status = "OK" if res.is_safe else "ВНИМАНИЕ"
print(f"Инструмент: {res.tool_name} -> {status}")
asyncio.run(main())
Para tuberías de circuito cerrado, existe un modo static. Puedes exportar esquemas de herramientas a JSON de antemano y escanearlos sin conexión sin iniciar servidores y realizar solicitudes de red:
mcp-scanner --analyzers yara static --tools ./output/tools-list.json
Qué tener en cuenta
El proyecto es de código abierto bajo la licencia Apache 2.0. Los analizadores básicos (YARA, pip-audit, Prompt Defense y verificaciones de preparación) se ejecutan de forma totalmente autónoma y gratuita.
Para el análisis semántico profundo, necesitarás una clave API para cualquier LLM a través de LiteLLM, o un modelo ejecutándose localmente a través de Ollama. El motor de API de inspección de Cisco AI Defense se conecta opcionalmente si ya tienes una suscripción a sus servicios de seguridad empresarial.
La herramienta es útil para desarrolladores que construyen sus propios servidores MCP para auto-verificarse antes del lanzamiento, así como para equipos que integran agentes de IA en flujos de trabajo internos de la empresa.
Proyectos relacionados