
Trajektorienbewusstes evolutionäres Suchframework für Red-Teaming von LLM-Agenten über MCP-Server, das adversariale Prompts generiert, um Schwachstellenlandschaften über Risikokategorien hinweg abzubilden.

T-MAP ist ein trajektorienbewusstes evolutionäres Suchframework zum Red-Teaming von LLM-Agenten über MCP-Server. Es generiert und mutiert iterativ adversariale Prompts, geleitet von Ausführungstrajektorien, und kartiert die Verwundbarkeitslandschaft des Agenten über verschiedene Risikokategorien und Angriffsstile hinweg.
pip install -r requirements.txt
Anforderungen: Python 3.11+, API-Schlüssel für Angreifer- und Zielmodelle, Zugriff auf einen oder mehrere MCP-Server.
Einzelner Server
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
Mehrere 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
Weitere Beispiele in run_examples.sh.
| Argument | Beschreibung |
|---|---|
--server | MCP-Servername(n), durch Kommas getrennt für mehrere Server |
--server_config | JSON-Konfigurationsdatei für Serverdefinitionen |
--stdio_server_cmd/args/envs | Stdio-Modus für einzelnen Server |
--stdio_server_cmd_1..8 / _args_1..8 / _envs_1..8 | Indizierter Stdio-Modus für mehrere Server |
--remote_server_url, --remote_server_token | Einzelner Remote-MCP-Endpunkt |
| Argument | Beschreibung |
|---|---|
--attacker_model/api/api_token | Angreifer-LLM (generiert und mutiert Prompts) |
--target_model/api/api_token | Ziel-LLM-Agent (führt Prompts über MCP aus) |
--level_judge_model/api/api_token | Bewertungs-LLM (standardmäßig Angreifer, falls ausgelassen) |
| Argument | Standard | Beschreibung |
|---|---|---|
--iteration | 100 | Anzahl der Mutationsrunden |
--mutation_n | 3 | Pro Runde gesampelte Mutanten |
--max_workers | 10 | Parallelität für Generierung und Bewertung |
--query_timeout | 300 | Timeout pro Abfrage (Sekunden) |
--checkpoint_interval | 20 | Checkpoint alle N Generationen speichern |
--output_dir | outputs | Ergebnisse und TCG-Snapshots |
--log_dir | logs | Textprotokolle |
.
├── core/
│ ├── base.py # Experiment-Orchestrierung und Bewertung
│ ├── config.py # Risikokategorien und Angriffsstile
│ ├── langchain_client.py # LangChain-basierter MCP-Client
│ ├── llm.py # LLM-Wrapper
│ └── utils.py # CLI-Argumentdefinitionen
├── prompts/
│ └── tmap.py # Seed-, Bewertungs-, Mutations- und Analyse-Prompts
├── run_main.py # Einstiegspunkt
├── run_examples.sh # Beispielbefehle
└── 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}
}