

T-MAP は、MCPサーバー上のLLMエージェントをレッドチーミングするための軌跡認識型進化探索フレームワークです。実行軌跡に基づいて敵対的プロンプトを反復的に生成・変異させ、多様なリスクカテゴリと攻撃スタイルにわたってエージェントの脆弱性領域をマッピングします。
pip install -r requirements.txt
要件: Python 3.11以上、攻撃者モデルとターゲットモデル用のAPIキー、1つ以上の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}
}