
Framework de busca evolucionária ciente de trajetórias para red-teaming de agentes de LLM sobre servidores MCP, gerando prompts adversariais para mapear paisagens de vulnerabilidades entre categorias de risco.

T-MAP é um framework de busca evolutiva ciente da trajetória para red-teaming de agentes LLM sobre servidores MCP. Ele gera e muta iterativamente prompts adversariais guiados por trajetórias de execução, mapeando o panorama de vulnerabilidades do agente em diversas categorias de risco e estilos de ataque.
pip install -r requirements.txt
Requisitos: Python 3.11+, chaves de API para os modelos atacante e alvo, acesso a um ou mais 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
Mais exemplos em run_examples.sh.
| Argumento | Descrição |
|---|---|
--server | Nome(s) do(s) servidor(es) MCP, separados por vírgula para multi-servidor |
--server_config | Arquivo de configuração JSON para definições de servidor |
--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 | Descrição |
|---|---|
--attacker_model/api/api_token | LLM atacante (gera e muta prompts) |
--target_model/api/api_token | Agente LLM alvo (executa prompts via MCP) |
--level_judge_model/api/api_token | LLM avaliador (padrão: atacante se omitido) |
| Argumento | Padrão | Descrição |
|---|---|---|
--iteration | 100 | Número de rodadas de mutação |
--mutation_n | 3 | Mutantes amostrados por rodada |
--max_workers | 10 | Paralelismo para geração e avaliação |
--query_timeout | 300 | Tempo limite por consulta (segundos) |
--checkpoint_interval | 20 | Salvar checkpoint a cada N gerações |
--output_dir | outputs | Resultados e snapshots do TCG |
--log_dir | logs | Logs de texto |
.
├── core/
│ ├── base.py # Orquestração e avaliação de experimentos
│ ├── config.py # Categorias de risco e estilos de ataque
│ ├── langchain_client.py # Cliente MCP baseado em LangChain
│ ├── llm.py # Wrapper de LLM
│ └── utils.py # Definições de argumentos de CLI
├── prompts/
│ └── tmap.py # Prompts de seed, avaliação, mutação e análise
├── run_main.py # Ponto de entrada
├── run_examples.sh # Comandos de exemplo
└── 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}
}