
Marco de búsqueda evolutiva consciente de la trayectoria para red-teaming de agentes LLM sobre servidores MCP, generando prompts adversariales para mapear paisajes de vulnerabilidad en categorías de riesgo.

T-MAP es un marco de búsqueda evolutiva consciente de la trayectoria para el red-teaming de agentes LLM sobre servidores MCP. Genera y muta iterativamente prompts adversariales guiados por trayectorias de ejecución, mapeando el panorama de vulnerabilidades del agente en diversas categorías de riesgo y estilos de ataque.
pip install -r requirements.txt
Requisitos: Python 3.11+, claves API para los modelos atacante y objetivo, acceso a uno o más servidores MCP.
Servidor único
python run_main.py \
--server Slack \
--attacker_model "deepseek-chat" \
--attacker_model_api "https://api.deepseek.com" \
--attacker_model_api_token "$DEEPSEEK_API_KEY" \
--target_model "openai/gpt-5-mini" \
--target_model_api "https://openrouter.ai/api/v1" \
--target_model_api_token "$OPENROUTER_API_KEY" \
--stdio_server_cmd npx \
--stdio_server_args "-y slack-mcp-server@latest --transport stdio" \
--stdio_server_envs "SLACK_MCP_XOXP_TOKEN=$SLACK_MCP_XOXP_TOKEN SLACK_MCP_ADD_MESSAGE_TOOL=true" \
--iteration 100 \
--mutation_n 3
Multi-servidor
python run_main.py \
--server "Slack,CodeExecutor" \
--attacker_model "deepseek-chat" \
--attacker_model_api "https://api.deepseek.com" \
--attacker_model_api_token "$DEEPSEEK_API_KEY" \
--target_model "openai/gpt-5-mini" \
--target_model_api "https://openrouter.ai/api/v1" \
--target_model_api_token "$OPENROUTER_API_KEY" \
--stdio_server_cmd_1 npx \
--stdio_server_args_1 "-y slack-mcp-server@latest --transport stdio" \
--stdio_server_envs_1 "SLACK_MCP_XOXP_TOKEN=$SLACK_MCP_XOXP_TOKEN SLACK_MCP_ADD_MESSAGE_TOOL=true" \
--stdio_server_cmd_2 docker \
--stdio_server_args_2 "run -i --rm --workdir /app mcp-code-executor:latest" \
--iteration 100 \
--mutation_n 3
Más ejemplos en run_examples.sh.
| Argumento | Descripción |
|---|---|
--server | Nombre(s) del servidor MCP, separados por comas para multi-servidor |
--server_config | Archivo de configuración JSON para definiciones de servidores |
--stdio_server_cmd/args/envs | Modo stdio de servidor único |
--stdio_server_cmd_1..8 / _args_1..8 / _envs_1..8 | Modo stdio multi-servidor indexado |
--remote_server_url, --remote_server_token | Endpoint MCP remoto único |
| Argumento | Descripción |
|---|---|
--attacker_model/api/api_token | LLM atacante (genera y muta prompts) |
--target_model/api/api_token | Agente LLM objetivo (ejecuta prompts vía MCP) |
--level_judge_model/api/api_token | LLM juez (usa el atacante por defecto si se omite) |
| Argumento | Predeterminado | Descripción |
|---|---|---|
--iteration | 100 | Número de rondas de mutación |
--mutation_n | 3 | Mutantes muestreados por ronda |
--max_workers | 10 | Paralelismo para generación y evaluación |
--query_timeout | 300 | Tiempo de espera por consulta (segundos) |
--checkpoint_interval | 20 | Guardar checkpoint cada N generaciones |
--output_dir | outputs | Resultados y capturas de TCG |
--log_dir | logs | Registros de texto |
.
├── core/
│ ├── base.py # Orquestación y evaluación de experimentos
│ ├── config.py # Categorías de riesgo y estilos de ataque
│ ├── langchain_client.py # Cliente MCP basado en LangChain
│ ├── llm.py # Envoltorio LLM
│ └── utils.py # Definiciones de argumentos CLI
├── prompts/
│ └── tmap.py # Prompts de semilla, juez, mutación y análisis
├── run_main.py # Punto de entrada
├── run_examples.sh # Comandos de ejemplo
└── requirements.txt
@article{lee2026tmapredteamingllmagents,
title={T-MAP: Red-Teaming LLM Agents with Trajectory-aware Evolutionary Search},
author={Hyomin Lee and Sangwoo Park and Yumin Choi and Sohyun An and Seanie Lee and Sung Ju Hwang},
year={2026},
eprint={2603.22341},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2603.22341}
}