
MCP 서버에서 LLM 에이전트를 레드팀 공격하기 위한 궤적 인식 진화 검색 프레임워크로, 위험 범주 전반에 걸쳐 취약점 지형을 매핑하기 위한 적대적 프롬프트를 생성합니다.

T-MAP은 MCP 서버에서 LLM 에이전트를 레드팀 테스트하기 위한 궤적 인식 진화 탐색 프레임워크입니다. 실행 궤적을 기반으로 적대적 프롬프트를 반복적으로 생성하고 변형하여 다양한 위험 범주와 공격 스타일에 걸쳐 에이전트의 취약점 지형을 매핑합니다.
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 # LangChain 기반 MCP 클라이언트
│ ├── 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}
}