
Каркас эволюционного поиска с учётом траекторий для red-teaming LLM-агентов на MCP-серверах, генерирующий состязательные промпты для картирования ландшафта уязвимостей по категориям риска.

T-MAP — это фреймворк эволюционного поиска с учётом траекторий для red-teaming LLM-агентов поверх MCP-серверов. Он итеративно генерирует и мутирует adversarial-промпты, руководствуясь траекториями выполнения, картирует ландшафт уязвимостей агента по различным категориям рисков и стилям атак.
pip install -r requirements.txt
Требования: Python 3.11+, API-ключи для атакующей и целевой моделей, доступ к одному или нескольким MCP-серверам.
Один сервер
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
Несколько серверов
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
Больше примеров в run_examples.sh.
| Аргумент | Описание |
|---|---|
--server | Имя(имена) MCP-сервера, через запятую для нескольких серверов |
--server_config | JSON-файл конфигурации для определений серверов |
--stdio_server_cmd/args/envs | Режим stdio для одного сервера |
--stdio_server_cmd_1..8 / _args_1..8 / _envs_1..8 | Индексированный режим stdio для нескольких серверов |
--remote_server_url, --remote_server_token | Одна удалённая MCP-конечная точка |
| Аргумент | Описание |
|---|---|
--attacker_model/api/api_token | Атакующая LLM (генерирует и мутирует промпты) |
--target_model/api/api_token | Целевой LLM-агент (выполняет промпты через MCP) |
--level_judge_model/api/api_token | Судья LLM (по умолчанию используется атакующая модель, если не указано) |
| Аргумент | По умолчанию | Описание |
|---|---|---|
--iteration | 100 | Количество раундов мутации |
--mutation_n | 3 | Мутантов, сэмплируемых за раунд |
--max_workers | 10 | Параллелизм для генерации и оценки |
--query_timeout | 300 | Тайм-аут на запрос (секунды) |
--checkpoint_interval | 20 | Сохранять контрольную точку каждые N поколений |
--output_dir | outputs | Результаты и снимки TCG |
--log_dir | logs | Текстовые журналы |
.
├── core/
│ ├── base.py # Оркестрация эксперимента и оценка
│ ├── config.py # Категории рисков и стили атак
│ ├── langchain_client.py # MCP-клиент на основе LangChain
│ ├── llm.py # Обёртка LLM
│ └── utils.py # Определения аргументов CLI
├── prompts/
│ └── tmap.py # Промпты для сидов, судей, мутаций и анализа
├── run_main.py # Точка входа
├── run_examples.sh # Примеры команд
└── 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}
}