第 1 步:安装基础软件环境
1.1 下载安装 Trae‑CN 个人版
- 访问官网
trae.cn下载 Windows 客户端并安装,注册账号登录。 - 开启 Solo‑Agent 模式:打开软件,左上角选择 SOLO 模式(只有 Solo 模式支持 Agent 互相调用)。
1.2 安装运行依赖
-
安装 Python‑3.13.14 版本,勾选 Add Python to PATH;
-
打开 Windows PowerShell 执行下面命令:
pip install fastmcp pydantic pandas openpyxl reportlab playwright
安装Node.js,用于Playwright‑MCP
npm install -g npx
一键安装 Playwright 内置浏览器(Chromium 核心,够用)
playwright install chromium
可选:补全所有浏览器内核(Firefox/WebKit)
playwright install
#解决依赖
playwright install-deps chromium#验证playwright是否安装成功
playwright --version -
安装外部测试工具并记下绝对路径:
- JMeter‑5.6.3,安装路径:
D:\software\apache‑jmeter‑5.6.3\bin\jmeter.bat - Xray‑Windows 版本:
D:\software\xray_windows_amd64.exe
- JMeter‑5.6.3,安装路径:
-
创建项目目录(固定路径):
mkdir D:\trae-mcp
mkdir D:\trae-output
mkdir D:\trae-doc
D:\trae‑mcp:存放 MCP‑Server Python 脚本;D:\trae‑output:保存测试用例、压测数据、漏洞报告、等保测评结果;D:\trae‑doc:存放 Open‑API 文档、需求文档。
第 2 步:编写适配 Windows‑Trae 个人版的 MCP‑Server 代码
2.1 文件清单,在 D:\trae‑mcp 下新建 3 个 Python 文件
文件 1:mcp‑jmeter‑server.py(性能测试 MCP)
from fastmcp import FastMCP
import subprocess
import os
import json
mcp = FastMCP("jmeter‑server")
JMETER_BIN = r"D:\software\apache-jmeter-5.6.3\bin\jmeter.bat"
OUTPUT_DIR = r"D:\trae-output\perf_result"
os.makedirs(OUTPUT_DIR, exist_ok=True)
@mcp.tool()
def create_jmeter_script(api_url: str, req_body: str, script_name: str) -> str:
"""生成jmeter的jmx脚本文件"""
jmx_content = f"""<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0">
<hashTree>
<ThreadGroup>
<elementProp name="HTTPSamplerProxy">
<stringProp name="domain">{api_url}</string>
<elementProp name="HTTPArgument"><stringProp>{req_body}</stringProp></elementProp>
</elementProp>
</ThreadGroup>
</hashTree>
</jmeterTestPlan>"""
save_path = os.path.join(OUTPUT_DIR, f"{script_name}.jmx")
with open(save_path, "w", encoding="utf-8") as f:
f.write(jmx_content)
return save_path
@mcp.tool()
def run_jmeter(file_path: str, threads: int, duration: int):
"""执行压测,返回TPS、95%RT、CPU使用率"""
result_file = os.path.join(OUTPUT_DIR, "result.jtl")
cmd = [JMETER_BIN, "-n", "-t", file_path, "-l", result_file]
subprocess.run(cmd, capture_output=True, encoding="utf-8")
# 模拟解析jtl结果;正式项目可以引入jtl‑parser库解析真实结果
tps = 120
rt_95 = 420
cpu = 65
result_data = {
"TPS": tps,
"95%RT": rt_95,
"CPU使用率": cpu,
"是否达标": rt_95 < 500 and cpu < 70
}
with open(os.path.join(OUTPUT_DIR, "perf_summary.json"), "w", encoding="utf-8") as f:
json.dump(result_data, f, ensure_ascii=False, indent=2)
return json.dumps(result_data, ensure_ascii=False)
if __name__ == "__main__":
mcp.run()
文件 2:mcp‑xray‑server.py(安全扫描 MCP)
from fastmcp import FastMCP
import subprocess
import json
import os
mcp = FastMCP("xray‑server")
XRAY_PATH = r"D:\software\xray_windows_amd64.exe"
OUTPUT_DIR = r"D:\trae-output\security"
os.makedirs(OUTPUT_DIR, exist_ok=True)
@mcp.tool()
def run_security_scan(target_url: str):
"""调用xray做黑盒漏洞扫描"""
report_file = os.path.join(OUTPUT_DIR, "vuln.json")
cmd = [XRAY_PATH, "webscan", "--url", target_url, "--json-output", report_file]
subprocess.run(cmd, capture_output=True)
if os.path.exists(report_file):
with open(report_file, "r", encoding="utf-8") as f:
vuln_data = json.load(f)
else:
vuln_data = []
high_num = sum(1 for item in vuln_data if item.get("level") == "high")
result = {
"漏洞列表": vuln_data,
"高危漏洞数量": high_num,
"安全是否通过": high_num == 0
}
return json.dumps(result, ensure_ascii=False)
if __name__ == "__main__":
mcp.run()
文件 3:mcp‑etc‑check‑server.py(等保 + 保密测评 MCP)
from fastmcp import FastMCP
import json
import os
from datetime import datetime
mcp = FastMCP("etc‑check‑server")
BASE_DIR = r"D:\trae-output"
etc_items = [
{"id": "E‑01", "name": "三员账号分离", "标准": "系统管理员、安全管理员、审计员账号独立分开"},
{"id": "E‑02", "name": "日志留存", "标准": "日志保存时长≥6个月"},
{"id": "E‑03", "name": "国密算法合规", "标准": "敏感数据传输使用SM2/SM4国密算法"},
{"id": "E‑04", "name": "高危漏洞清零", "标准": "高危漏洞数量必须等于0"}
]
@mcp.tool()
def get_all_test_result():
"""读取安全测试、性能测试结果"""
vuln_path = os.path.join(BASE_DIR, "security", "vuln.json")
perf_path = os.path.join(BASE_DIR, "perf_result", "perf_summary.json")
vuln_info = {}
perf_info = {}
if os.path.exists(vuln_path):
with open(vuln_path, "r", encoding="utf-8") as f:
vuln_info = json.load(f)
if os.path.exists(perf_path):
with open(perf_path, "r", encoding="utf-8") as f:
perf_info = json.load(f)
return {"vuln": vuln_info, "perf": perf_info}
@mcp.tool()
def etc_evaluate(level: str = "level3"):
"""逐条判定等保三级和保密合规结果"""
test_result = get_all_test_result()
high_count = test_result.get("vuln", {}).get("高危漏洞数量", 99)
evaluate_result = []
for item in etc_items:
status = "不符合"
evidence = ""
advice = ""
if item["id"] == "E‑04":
if high_count == 0:
status = "符合"
evidence = "安全Agent扫描结果:高危漏洞数量为0"
else:
advice = "全部高危漏洞必须修复完成后才能通过等保测评"
if item["id"] == "E‑03":
advice = "当前未使用SM4国密算法,需要改造接口替换RSA/AES为国密算法,满足保密测评要求"
evaluate_result.append({
"测评项编号": item["id"],
"测评项名称": item["name"],
"合规要求": item["标准"],
"判定结果": status,
"证据": evidence,
"整改建议": advice
})
final_report = {
"测评时间": datetime.now().strftime("%Y‑%m‑%d %H:%M:%S"),
"测评项详情": evaluate_result
}
out_file = os.path.join(BASE_DIR, "etc_report.json")
with open(out_file, "w", encoding="utf-8") as f:
json.dump(final_report, f, ensure_ascii=False, indent=2)
return json.dumps(final_report, ensure_ascii=False)
if __name__ == "__main__":
mcp.run()
2.3 验证 MCP 脚本能否独立运行
在 PowerShell 依次执行下面命令,没有报错代表代码正常:
python D:\trae-mcp\mcp-jmeter-server.py
python D:\trae-mcp\mcp-xray-server.py
python D:\trae-mcp\mcp-etc-check-server.py
按Ctrl + C关闭进程;Trae 后续调用时会自动启动这段进程。
第 3 步:Trae‑CN 配置 MCP 服务(可视化配置,不用编写 mcp.json)
- 打开 Trae‑CN 客户端,点击右上角设置图标,选择 MCP;
- 点击【添加】‑【手动添加 MCP 服务】,依次配置 3 个自定义 MCP;
配置 1:jmeter‑server
{
"mcpServers": {
"jmeter-server": {
"command": "C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
"args": [
"D:\\trae-mcp\\mcp-jmeter-server.py"
],
"env": {
"PYTHONUNBUFFERED": "1"
}
}
}
}
配置 2:xray‑server
{
"mcpServers": {
"xray-server": {
"command": "C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
"args": [
"D:\\trae-mcp\\mcp-xray-server.py"
],
"env": {
"PYTHONUNBUFFERED": "1"
}
}
}
}
配置 3:etc‑check‑server
{
"mcpServers": {
"etc‑check‑server": {
"command": "C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
"args": [
"D:\\trae-mcp\\mcp-etc-check-server.py"
],
"env": {
"PYTHONUNBUFFERED": "1"
}
}
}
}
配置 4:Playwright‑MCP(功能测试)
- 在 MCP 市场搜索
playwright,一键添加; - PowerShell 执行:
npx -y @playwright/mcp验证可用。
保存配置,MCP 列表全部显示绿色对勾,代表 MCP 配置完成。
第 4 步:在 Trae‑CN 里创建 5 个 Agent(Solo 模式)
两种创建方式:①界面手动创建(推荐);②导入
.agent.yaml文件。
通用规则:
- 模型选择 Trae‑CN 云端模型,温度全部设置为 0.2‑0.3;
- 子 Agent 绑定对应的 MCP;
- 总控 Agent 开启调用子 Agent 权限。
Agent‑1:Function‑Test‑Agent(功能测试智能体)
-
打开对话框输入
@→ 创建智能体; -
Agent 名称:Function‑Test‑Agent;标识符:
function‑test‑agent; -
绑定 MCP:playwright;
-
Prompt 复制如下:
你是资深功能测试工程师,调用playwright‑MCP完成Web自动化测试。
输入被测系统地址、openapi文档。
1、采用等价类划分法、边界值分析法设计测试用例;覆盖正常场景、异常场景;
2、调用playwright‑MCP执行页面操作、接口调用,捕获页面报错;
3、生成pytest自动化脚本,将BUG清单、测试用例保存到D:\trae‑output\function目录;
BUG分为致命、高危、中危、低危等级,BUG结果必须有截图或接口返回日志作为证据;
所有结论依靠MCP返回结果,禁止凭空猜测。
Agent‑2:Perf‑Test‑Agent(性能测试 Agent)
-
Agent 名称:Perf‑Test‑Agent;标识符:
perf‑test‑agent; -
绑定 MCP:jmeter‑server;
-
Prompt复制如下:
你是性能测试工程师,调用jmeter‑server完成压测。
1、自动生成jmeter脚本,分常规负载50并发、峰值200并发、极限500并发执行测试;
2、获取TPS、95%响应时间、CPU使用率;判定标准:95%RT<500ms,CPU<70%才算合格;
3、分析性能瓶颈,给出优化方案;
4、测试结果输出至D:\trae‑output\perf_result;禁止对生产环境执行高压测试。
Agent‑3:Security‑Test‑Agent(安全测试 Agent)
-
Agent 名称:Security‑Test‑Agent;标识符:
security‑test‑agent; -
绑定 MCP:xray‑server;
-
Prompt复制如下:
安全测评工程师,遵循OWASP‑Top10安全标准。
1、调用xray‑server扫描SQL注入、越权访问、文件上传、XSS漏洞;
2、输出漏洞编号、风险等级、漏洞原理、复现步骤、修复建议;
3、漏洞结果保存到D:\trae‑output\security;只以扫描结果作为判定依据。
Agent‑4:Etc‑Check‑Agent(等保‑保密测评 Agent)
-
Agent 名称:Etc‑Check‑Agent;标识符:
etc‑check‑agent; -
绑定 MCP:etc‑check‑server;
-
Prompt复制如下:
你是等保三级、保密合规测评专家,调用etc‑check‑server开展合规验证。
1、读取前面功能、性能、安全Agent生成的结果作为测评证据;
2、逐条校验GB/T22239‑2019‑三级测评项和保密要求;判定分为符合、部分符合、不符合;
3、核查三员账号分离、日志留存时长、国密SM2/SM4加密、高危漏洞问题;
4、输出:测评项‑现状‑判定‑证据‑整改建议;结果写入D:\trae‑output;所有结论必须有证据支撑。
Agent‑5:Test‑Manager‑Agent(总控调度 Agent)【核心】
-
Agent 名称:Test‑Manager‑Agent;标识符:
test‑manager‑agent; -
开启配置:可以调用其他智能体 ,勾选下面 4 个子 Agent 标识符:
- function‑test‑agent
- perf‑test‑agent
- security‑test‑agent
- etc‑check‑agent
-
Prompt 内容:
你是一体化测试任务总调度,由TRAE IDE内置的智能体Agent发起调用,只能调用已经注册好的4个子Agent:
标识符分别为:function-test-agent、perf-test-agent、security-test-agent、etc-check-agent。
严格串行执行,上一个Agent执行完成并且文件生成完毕,再执行下一个Agent,禁止并行执行。
执行顺序:
1、调用function‑test‑agent完成功能测试;
2、调用perf‑test‑agent完成性能测试;
3、调用security‑test‑agent完成安全测试;
4、调用etc‑check‑agent完成等保三级、保密合规验证;
5、调用 etc-check-server里面的generate_final_pdf工具生成最终PDF综合测试报告;
全部测试结果输出到D:\trae‑output;
最后汇总所有报告给出上线结论:致命和高危BUG清零、性能达标、高危漏洞清零、等保关键项通过才允许上线。
第 5 步:执行一体化测试(Trae‑CN 个人版运行入口)
- 在 Trae 对话框输入
@,选中Test‑Manager‑Agent; - 输入执行指令:
plaintext
被测系统地址:http://192.168.1.100:8080,openapi文档放在D:\trae-doc\api.json,执行功能测试、性能测试、安全测试,开展等保三级和保密合规验证。
- 执行过程:
- Trae 对话窗口实时展示 Agent 思考过程、MCP 调用日志;
- Windows 后台短暂启动 python 进程运行 JMeter 和 Xray;执行完毕进程自动关闭;
- 查看结果:打开
D:\trae‑output文件夹,里面包含:- function 目录:测试用例、BUG 清单;
- perf_result 目录:jmeter 脚本、压测指标;
- security 目录:漏洞清单;
- etc_report.json:逐条等保测评结果;
- Trae 对话输出综合验收总结报告。
第 6 步:个人版 Trae‑CN 限制说明(重点)
- 没有 CLI 命令,不能对接 GitLab‑CI 实现自动化流水线;CI‑CD 只有企业私有化版支持;
- Agent 只能调用 Trae 云端大模型,无法接入本地私有化模型;内网离线测评只能使用企业版;
- MCP 进程按需启动,执行结束自动关闭,不能长期后台驻留;
- Trae‑CN 个人版适合做方案原型验证,正式涉密项目必须部署私有化企业版。
第 7 步:常见问题处理
- MCP 显示红色不可用:
- 原因:文件路径分隔符写错;Python 环境变量未配置;
- 解决:在 PowerShell 手动运行对应 python 脚本,如果正常运行,检查 Trae‑MCP 配置中的 args 路径;Windows 路径用
\\双斜杠。
- Agent 不调用 MCP:
- 确认 Trae 开启 Solo 模式,Agent 绑定了对应 MCP,temperature 设置为 0.2‑0.3。
- 总控 Agent 无法调用子 Agent:
- 子 Agent 标识符和总控 Agent 填写的标识符必须完全一致,开启「可被其他 Agent 调用」。