本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
MCP 工具规范
分布式负载测试解决方案提供了一组 MCP 工具,使 AI 代理能够与测试场景和结果进行交互。这些工具提供了与 AI 代理处理信息的方式相一致的高级抽象功能,使他们能够专注于分析和见解,而不是详细的 API 合同。
MCP 服务器支持两种访问模式,由 MCPServerAccessMode AWS CloudFormation 参数控制:
-
ReadOnly(默认)-仅注册读取工具。代理可以通过以下方式查看 7 种工具
tools/list。没有可用的变异操作。 -
ReadWrite— 读取和写入工具均已注册。代理可以查看所有工具(读取+写入),
tools/list并且可以创建测试、触发运行、管理计划和上传脚本。
访问模式是在部署时设置的。要在初始部署后更改访问模式,请使用新MCPServerAccessMode参数值执行 CloudFormation 堆栈更新。此更改将在堆栈更新完成时生效,无需其他手动步骤。
在 ReadOnly 模式下,写入工具根本没有注册,代理永远看不到它们tools/list。针对 MCP 服务器的 AWS Lambda 函数的 AWS 身份和访问管理 (IAM) 策略规定了相应的范围。 ReadOnly 仅允许向 API 发出 GET 请求。 ReadWrite 允许 GET、POST、PUT 和 DELETE。
阅读工具
列表_场景
说明
该list_scenarios工具使用基本元数据检索所有可用测试场景的列表。
端点
GET /scenarios
参数
无
响应
| Name | 说明 |
|---|---|
|
|
测试场景的唯一标识符 |
|
|
测试场景的名称 |
|
|
测试场景的当前状态 |
|
|
创建测试或上次运行测试的时间 |
|
|
测试场景的描述 |
获取场景详情
说明
该get_scenario_details工具检索单个测试场景的测试配置和最近运行的测试。
响应会报告场景的流量形态模式。nativeRunMode对象表示原生模式,不存在则表示标准模式。对于原生方案,concurrencyrampUp、和holdFor字段不反映运行生成的负载。相反,负载来自脚本。有关更多信息,请参阅交通形态模式。
端点
GET /scenarios/<test_id>?history=false&results=false
请求参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
每个区域的任务配置 |
|
|
测试定义和参数 |
|
|
当前测试状态 |
|
|
测试开始时间戳 |
|
|
测试结束时间戳(如果已完成) |
list_test_runs
说明
该list_test_runs工具检索特定测试场景的测试运行列表,按从新到旧排序。最多返回 30 个结果。只能提供其中limit一个,不能同时提供。start_timestamp
端点
GET /scenarios/<testid>/testruns/?limit=<limit>
或者
GET /scenarios/<testid>/testruns/?start_timestamp=<start_timestamp>
请求参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
-
limit -
-
要返回的最大测试运行次数。不能与
start_timestamp一起使用。类型:整数
默认值:20
最大值:30
必需:否
-
-
start_timestamp -
-
返回所有可追溯到该时间戳的测试运行。不能与
limit一起使用。类型:字符串(例如 ISO 8601 日期时间格式)
2024-01-15T14:30:00.000Z必需:否
-
响应
| Name | 说明 |
|---|---|
|
|
包含每次运行的性能指标和百分位数的测试运行摘要数组 |
get_test_run
说明
该get_test_run工具会检索包含区域和终端故障的单次测试的详细结果。
端点
GET /scenarios/<testid>/testruns/<testrunid>
请求参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
-
test_run_id -
-
特定测试运行的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
完整的测试运行数据,包括区域结果细分、特定终端指标、性能百分位数(p50、p90、p95、p99)、成功和失败次数、响应时间和延迟以及用于运行的测试配置 |
get_latest_test_run
说明
该get_latest_test_run工具检索特定测试场景的最新测试运行。
端点
GET /scenarios/<testid>/testruns/?limit=1
注意
使用全球二级索引 (GSI) 按时间对结果进行排序,以便返回最新的测试运行。
请求参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
最新的测试运行数据,其格式与 |
get_baseline_test_run
说明
该get_baseline_test_run工具检索特定测试场景的基准测试运行。基准用于性能比较目的。
端点
GET /scenarios/<test_id>/baseline
请求参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
用于比较目的的基准测试运行数据,包括指定基准运行中的所有指标和配置 |
get_test_run_artifacts
说明
该get_test_run_artifacts工具检索 Amazon S3 存储桶信息以访问测试项目,包括日志、错误文件和结果。
端点
GET /scenarios/<testid>/testruns/<testrunid>
请求参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
-
test_run_id -
-
特定测试运行的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
存储对象的 S3 存储桶名称 |
|
|
当前对象存储的路径前缀(版本 4.0+) |
|
|
传统项目存储的路径前缀(4.0 之前的版本) |
写作工具
写入工具仅在设置MCPServerAccessMode为时可用ReadWrite。它们使代理能够创建、修改和执行测试场景。
创建_测试
说明
该create_test工具无需执行即可创建新的负载测试场景。测试已保存,以后可以使用start_run。对于基于脚本的测试(jmeter、k6、locust),请upload_test_script先调用并通过返回的测试。test_id
参数
-
test_id -
-
测试场景的唯一标识符。省略简单的 HTTP 测试(系统生成一个)。基于脚本的测试是必需的 — 使用
test_id返回的。upload_test_script类型:字符串
必需:否(基于脚本的测试为必填项)
-
-
test_name -
-
Human-readable 测试场景的名称
类型:字符串
是否必需:是
-
-
test_description -
-
此测试验证内容的描述
类型:字符串
是否必需:是
-
-
test_type -
-
测试类型。
simple用于内联配置的 HTTP 端点测试。jmeterk6、或者locust用于引用上传的脚本文件的基于脚本的测试。类型:字符串
是否必需:是
-
-
test_task_configs -
-
区域任务配置。每个条目都指定一个区域、AWS Fargate 任务的数量以及每项任务的并发虚拟用户。一个区域的并发用户总数 =
task_count×concurrency。类型:对象数组(每个都带有
region、task_count、concurrency)是否必需:是
-
-
test_scenario -
-
定义负载配置文件和目标端点的测试执行场景。包含
execution(升级、hold-for、场景名称)和scenarios(命名场景定义,其中包含用于简单测试的requests数组或用于基于脚本的测试的script字符串)。类型:对象
是否必需:是
-
-
show_live -
-
是否在测试执行期间启用实时监控。
类型:布尔值
默认值:
false必需:否
-
-
tags -
-
用于组织测试场景的标签。最多 5 个标签。
类型:字符串数组
必需:否
-
-
native_run_mode -
-
选择交通形状模式的对象。在标准模式下将其省略,在该模式下,解决方案控制负载。将其包括在原生模式下,您上传的脚本控制负载。有关更多信息,请参阅交通形态模式。
类型:对象
必需:否
-
本机模式与标准模式的不同之处如下:
-
该对象需要一个字段
max_test_duration_seconds,最长 24 小时。 -
只有基于脚本的测试(
jmeterk6、或locust)接受原生模式。 -
简单的 HTTP 端点测试始终在标准模式下运行。
-
test_task_configs仍然是必填项,每个条目仍然需要concurrency。 -
设置
concurrency为的请求native_run_mode返回成功。 -
测试生成的负载是您的脚本声明的负载。
-
每个区域的总负载是脚本的负载乘
task_count以。
响应
| Name | 说明 |
|---|---|
|
|
创建的测试的唯一 ID |
|
|
测试的名称 |
|
|
测试的状态(例如, |
更新测试
说明
该update_test工具更新现有测试场景的配置。这是一次全面的替代——必须提供整个测试配置,而不仅仅是更改的字段。该测试当前必须未运行。
参数
与create_test,但必填test_id项除外,必须引用现有测试。
响应
| Name | 说明 |
|---|---|
|
|
更新后的测试的唯一 ID |
|
|
测试的名称 |
|
|
测试状态 |
delete_test
说明
该delete_test工具永久删除测试场景和所有相关数据,包括测试运行历史记录、计划和亚马逊 CloudWatch 控制面板。并且无法撤消。该测试当前必须未运行。
参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
确认删除 |
start_run
说明
该start_run工具开始执行测试场景。MCP 服务器获取测试的存储配置并触发执行。立即以状态返回queued。用于投票get_latest_test_run以完成投票。
参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
测试的唯一 ID |
|
|
测试的状态(例如, |
stop_run
说明
该stop_run工具会停止当前正在运行的测试。向所有正在运行的 Fargate 任务发送取消信号。测试状态转换为cancelled。部分结果可通过以下方式获得get_latest_test_run。
参数
-
test_id -
-
测试场景的唯一标识符
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
确认取消 |
创建_简单_时间表
说明
该create_simple_schedule工具创建一次性预定测试,该测试在指定的日期和时间自动运行。需要所有标准测试配置字段以及计划字段。
参数
所有create_test参数(可test_id选,规则相同),以及:
-
schedule_date -
-
计划运行的日期。将来一定如此。
类型:字符串(格式:
YYYY-MM-DD)是否必需:是
-
-
schedule_time -
-
是时候计划运行了。
类型:字符串(格式:
HH:MM,24 小时)是否必需:是
-
-
schedule_timezone -
-
用于时间表解释的 IANA 时区(例如,
America/New_York,UTC)。类型:字符串
默认:
UTC必需:否
-
响应
| Name | 说明 |
|---|---|
|
|
测试的唯一 ID |
|
|
测试的状态(例如, |
|
|
下次预定执行时间 |
创建 cron_schedule
说明
该create_cron_schedule工具会创建一个定期的计划测试,该测试根据 cron 表达式自动运行。需要所有标准测试配置字段以及 cron 计划字段。
参数
所有create_test参数(可test_id选,规则相同),以及:
-
cron_value -
-
循环计划的 Cron 表达式。标准 5 字段格式(
0 9 * * *例如,每天上午 9:00)。类型:字符串
是否必需:是
-
-
recurrence -
-
Human-readable 重复标签(例如,
daily,weekly)。类型:字符串
是否必需:是
-
-
cron_expiry_date -
-
循环计划停止执行的日期。
类型:字符串(格式:
YYYY-MM-DD)必需:否
-
-
schedule_timezone -
-
用于时间表解释的 IANA 时区。
类型:字符串
默认:
UTC必需:否
-
响应
| Name | 说明 |
|---|---|
|
|
测试的唯一 ID |
|
|
测试的状态(例如, |
|
|
下次预定执行时间 |
更新_简单_时间表
说明
该update_simple_schedule工具更新现有一次性预定测试的时间表配置。完全替换测试配置,包括计划字段。测试必须处于scheduled状态。
参数
与create_simple_schedule,但必填test_id项除外,必须参考现有的预定测试。
响应
与 create_simple_schedule 相同。
更新cron_schedule
说明
该update_cron_schedule工具更新现有定期预定测试的时间表配置。完全替换测试配置,包括 cron 计划字段。测试必须处于scheduled状态。
参数
与create_cron_schedule,但必填test_id项除外,必须参考现有的预定测试。
响应
与 create_cron_schedule 相同。
上传测试脚本
说明
该upload_test_script工具上传基于脚本的测试所需的脚本文件(JMeter .jmx、k6 .js、Locust .py 或.zip)。必须在基于脚本的测试之前create_test或update_test进行基于脚本的测试之前调用。返回 a test_id 和script_filename,用于后续的工具调用。
参数
-
test_id -
-
测试场景的唯一标识符。省略新测试(系统生成一个)。规定将现有测试上传到正确的位置。
类型:字符串
必需:否
-
-
test_type -
-
测试类型:
jmeterk6、或locust。类型:字符串
是否必需:是
-
-
file_extension -
-
文件扩展名:
jmxjs、py、或zip。类型:字符串
是否必需:是
-
-
file_content -
-
Base64-encoded 文件内容。
类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
测试 ID(生成或提供) |
|
|
S3 中的文件名(格式: |
工作流程指南
工作流程指南是多步配方,可帮助代理将多个工具链接在一起以进行常见操作。该get_workflow_guides工具为每个工作流程返回结构化的分步指南。
获取工作流程指南
说明
该get_workflow_guides工具返回常见多工具 DLT 操作的分步工作流程方案。返回有关调用哪些工具、按什么顺序调用以及如何在步骤之间解释结果的结构化指南。
参数
-
workflow -
-
检索指导的工作流程。其中之一:
run_and_monitor,baseline_comparison,schedule_test,create_and_run,update_and_run。类型:字符串
是否必需:是
-
响应
| Name | 说明 |
|---|---|
|
|
工作流程标识符 |
|
|
工作流程用途的简要描述 |
|
|
步骤对象数组,每个对象都有 |
可用工作流程
运行并监控
开始现有的测试运行和投票直至完成。
-
使用
list_scenarios或查找测试get_scenario_details -
使用开始测试运行
start_run -
使用进行轮询以确定是否完成
get_latest_test_run(建议间隔:30 秒;在亚马逊弹性容器服务 (Amazon ECS) 任务启动期间处理初始 404 1 到 3 分钟) -
达到终端状态(
completefailed、或cancelled)后报告结果
基线比较
运行测试并将结果与存储的基准进行比较。
-
使用
list_scenarios或查找测试get_scenario_details -
使用开始测试运行
start_run -
使用轮询完成时间
get_latest_test_run(建议间隔:30 秒) -
使用检索基线
get_baseline_test_run(如果未设置基线,则跳过比较) -
比较指标(平均响应时间、延迟、吞吐量、百分位数、错误率)
schedule_test
使用定期或一次性计划创建测试。
-
确定时间表类型(一次性 →
create_simple_schedule,重复 →create_cron_schedule) -
如果基于脚本使用,则上传测试脚本
upload_test_script -
使用完整配置和计划字段创建预定测试
-
使用
get_scenario_details(选中status: scheduled和nextRun)验证计划是否已创建
限制:两次循环运行之间至少间隔 1 小时,间隔必须超过测试持续时间,cron 必须精确指定一分钟值。
创建并运行
从头开始创建一个新测试并立即执行它。
-
如果基于脚本使用,则上传测试脚本
upload_test_script -
使用创建测试
create_test -
使用
start_run返回的开始测试运行test_id -
使用轮询完成时间
get_latest_test_run(建议间隔:30 秒) -
报告结果
更新并运行
修改现有测试的配置并立即重新执行它。
-
使用检索当前配置
get_scenario_details -
如果使用更改脚本,请上传新脚本
upload_test_script -
使用更新测试配置
update_test(完全替换 — 包括所有字段) -
使用开始测试运行
start_run -
使用轮询完成时间
get_latest_test_run(建议间隔:30 秒) -
报告结果
注意
所有 MCP 工具都利用现有的 API 端点。无需修改底层 API 即可支持 MCP 功能。