
Framework di ricerca evolutiva sensibile alla traiettoria per il red-teaming di agenti LLM su server MCP, che genera prompt avversari per mappare i paesaggi di vulnerabilità tra le categorie di rischio.

T-MAP è un framework di ricerca evolutiva sensibile alla traiettoria per il red-teaming di agenti LLM su server MCP. Genera e muta iterativamente prompt avversari guidati dalle traiettorie di esecuzione, mappando il panorama di vulnerabilità dell'agente attraverso diverse categorie di rischio e stili di attacco.
pip install -r requirements.txt
Requisiti: Python 3.11+, chiavi API per i modelli attaccante e bersaglio, accesso a uno o più server MCP.
Server singolo
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-server
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
Ulteriori esempi in run_examples.sh.
| Argomento | Descrizione |
|---|---|
--server | Nome/i del server MCP, separati da virgola per multi-server |
--server_config | File di configurazione JSON per le definizioni dei server |
--stdio_server_cmd/args/envs | Modalità stdio per server singolo |
--stdio_server_cmd_1..8 / _args_1..8 / _envs_1..8 | Modalità stdio multi-server indicizzata |
--remote_server_url, --remote_server_token | Endpoint MCP remoto singolo |
| Argomento | Descrizione |
|---|---|
--attacker_model/api/api_token | LLM attaccante (genera e muta i prompt) |
--target_model/api/api_token | Agente LLM bersaglio (esegue i prompt tramite MCP) |
--level_judge_model/api/api_token | LLM giudice (predefinito all'attaccante se omesso) |
| Argomento | Predefinito | Descrizione |
|---|---|---|
--iteration | 100 | Numero di cicli di mutazione |
--mutation_n | 3 | Mutanti campionati per ciclo |
--max_workers | 10 | Parallelismo per generazione e valutazione |
--query_timeout | 300 | Timeout per query (secondi) |
--checkpoint_interval | 20 | Salva checkpoint ogni N generazioni |
--output_dir | outputs | Risultati e snapshot TCG |
--log_dir | logs | Log di testo |
.
├── core/
│ ├── base.py # Orchestrazione e valutazione degli esperimenti
│ ├── config.py # Categorie di rischio e stili di attacco
│ ├── langchain_client.py # Client MCP basato su LangChain
│ ├── llm.py # Wrapper LLM
│ └── utils.py # Definizioni degli argomenti CLI
├── prompts/
│ └── tmap.py # Prompt seed, giudice, mutazione e analisi
├── run_main.py # Punto di ingresso
├── run_examples.sh # Comandi di esempio
└── 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}
}