View a markdown version of this page

MCP 工具規格 - AWS 上的分散式負載測試

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

MCP 工具規格

分散式負載測試解決方案公開了一組 MCP 工具,可讓 AI 代理器與測試案例和結果互動。這些工具提供高階的抽象功能,符合 AI 代理器處理資訊的方式,讓他們專注於分析和洞見,而不是詳細的 API 合約。

MCP 伺服器支援兩種存取模式,由 MCPServerAccessMode AWS CloudFormation 參數控制:

  • ReadOnly (預設) — 僅註冊讀取工具。客服人員可透過 看到 7 個工具tools/list。沒有可用的變動操作。

  • ReadWrite — 讀取和寫入工具都會註冊。客服人員可透過 看到所有工具 (讀取 + 寫入),tools/list並可建立測試、觸發執行、管理排程和上傳指令碼。

存取模式是在部署時間設定。若要在初始部署後變更存取模式,請使用新的MCPServerAccessMode參數值執行 CloudFormation 堆疊更新。變更會在堆疊更新完成時生效,不需要其他手動步驟。

在 ReadOnly 模式中,完全不會註冊寫入工具,客服人員永遠不會在 中看到這些工具tools/list。MCP Server 的 AWS Lambda 函數上的 AWS Identity and Access Management (IAM) 政策會隨之調整範圍。 AWS Lambda ReadOnly 僅允許對 API 提出 GET 請求。ReadWrite 允許 GET、POST、PUT 和 DELETE。

讀取工具

list_scenarios

說明

此list_scenarios工具會擷取具有基本中繼資料之所有可用測試案例的清單。

Endpoint

GET /scenarios

Parameters

無

回應

名稱 描述

testId

測試案例的唯一識別符

testName

測試案例的名稱

status

測試案例的目前狀態

startTime

測試建立或上次執行的時間

testDescription

測試案例的描述

get_scenario_details

說明

此get_scenario_details工具會擷取單一測試案例的測試組態和最新的測試執行。

回應會報告案例的流量形狀模式。nativeRunMode 物件表示原生模式,而其缺少則表示標準模式。對於原生案例,concurrency、 rampUp和 holdFor 欄位不會反映執行產生的負載。負載來自指令碼。如需詳細資訊,請參閱流量形狀模式。

Endpoint

GET /scenarios/<test_id>?history=false&results=false

請求參數

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

testTaskConfigs

每個區域的任務組態

testScenario

測試定義和參數

status

目前的測試狀態

startTime

測試開始時間戳記

endTime

測試結束時間戳記 (如果已完成)

list_test_runs

說明

此list_test_runs工具會擷取特定測試案例的測試執行清單,將最新到最舊排序。傳回最多 30 個結果。只能提供其中一個 limit或 start_timestamp ,不能同時提供兩者。

Endpoint

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)

    必要:否

回應

名稱 描述

testRuns

具有每次執行效能指標和百分位數的測試執行摘要陣列

get_test_run

說明

此get_test_run工具會擷取具有區域和端點明細的單一測試執行的詳細結果。

Endpoint

GET /scenarios/<testid>/testruns/<testrunid>

請求參數

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

test_run_id
  • 特定測試執行的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

results

完整的測試執行資料,包括區域結果明細、端點特定指標、效能百分位數 (p50、p90、p95、p99)、成功和失敗計數、回應時間和延遲,以及用於執行的測試組態

get_latest_test_run

說明

此get_latest_test_run工具會擷取特定測試案例的最新測試執行。

Endpoint

GET /scenarios/<testid>/testruns/?limit=1

注意

結果會使用全域次要索引 (GSI) 依時間排序,以便傳回最近的測試執行。

請求參數

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

results

與 具有相同格式的最新測試執行資料 get_test_run

get_baseline_test_run

說明

此get_baseline_test_run工具會擷取特定測試案例的基準測試執行。基準用於效能比較目的。

Endpoint

GET /scenarios/<test_id>/baseline

請求參數

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

baselineData

用於比較的基準測試執行資料,包括來自指定基準執行的所有指標和組態

get_test_run_artifacts

說明

此get_test_run_artifacts工具會擷取 Amazon S3 儲存貯體資訊,以存取測試成品,包括日誌、錯誤檔案和結果。

Endpoint

GET /scenarios/<testid>/testruns/<testrunid>

請求參數

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

test_run_id
  • 特定測試執行的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

bucketName

存放成品的 S3 儲存貯體名稱

testRunPath

目前成品儲存的路徑字首 (4.0 版以上)

testScenarioPath

舊版成品儲存的路徑字首 (4.0 版前)

寫入工具

只有在 MCPServerAccessMode 設定為 時,才能使用寫入工具ReadWrite。它們可讓客服人員建立、修改和執行測試案例。

create_test

說明

create_test 工具會在不執行的情況下建立新的負載測試案例。測試已儲存,稍後可以使用 執行start_run。對於以指令碼為基礎的測試 (jmeter、k6、camryt),upload_test_script請先呼叫 並傳遞傳回的 test_id。

Parameters

test_id
  • 測試案例的唯一識別符。省略簡單的 HTTP 測試 (系統會產生測試)。以指令碼為基礎的測試需要 — 使用 test_id傳回的 upload_test_script。

    類型:字串

    必要:否 (以指令碼為基礎的測試需要)

test_name
  • 測試案例的人類可讀名稱

    類型:字串

    必要:是

test_description
  • 此測試驗證項目的描述

    類型:字串

    必要:是

test_type
  • 測試類型。 simple 適用於內嵌設定的 HTTP 端點測試。k6、 jmeter或 locust適用於參考上傳指令碼檔案的指令碼型測試。

    類型:字串

    必要:是

test_task_configs
  • 區域任務組態。每個項目指定一個區域、AWS Fargate 任務的數量,以及每個任務的並行虛擬使用者。區域的並行使用者總數 = task_count × concurrency。

    類型:物件陣列 (每個都有 region、task_count、concurrency)

    必要:是

test_scenario
  • 測試執行案例 (定義負載描述檔和目標端點)。包含 execution(延遲、保留、案例名稱) 和 scenarios(具有簡單測試requests陣列或指令碼型測試script字串的已命名案例定義)。

    類型:物件

    必要:是

show_live
  • 是否要在測試執行期間啟用即時監控。

    類型:布林值

    預設:false

    必要:否

tags
  • 用於組織測試案例的標籤。最多 5 個標籤。

    類型:字串陣列

    必要:否

native_run_mode
  • 選取流量形狀模式的物件。將其省略為標準模式,其中解決方案控制負載。將其納入原生模式,其中您上傳的指令碼會控制載入。如需詳細資訊,請參閱流量形狀模式。

    類型:物件

    必要:否

原生模式與標準模式不同,如下所示:

  • 物件需要一個欄位 max_test_duration_seconds,最多 24 小時。

  • 只有以指令碼為基礎的測試 (jmeter、 k6或 locust) 接受原生模式。

  • 簡單 HTTP 端點測試一律以標準模式執行。

  • test_task_configs 仍然是必要項目,而且每個項目仍然需要 concurrency。

  • concurrency 使用 設定的請求會native_run_mode傳回成功。

  • 測試產生的負載是指令碼宣告的負載。

  • 每個區域的總負載是指令碼的負載乘以 task_count。

回應

名稱 描述

testId

已建立測試的唯一 ID

testName

測試的名稱

status

測試的狀態 (例如,created)

update_test

說明

update_test 工具會更新現有測試案例的組態。這是完整的取代 — 必須提供整個測試組態,而不只是變更的欄位。測試目前不得執行中。

Parameters

與 相同create_test,但 test_id 為必要項目,且必須參考現有的測試。

回應

名稱 描述

testId

已更新測試的唯一 ID

testName

測試的名稱

status

測試的狀態

delete_test

說明

此delete_test工具會永久刪除測試案例和所有相關資料,包括測試執行歷史記錄、排程和 Amazon CloudWatch 儀表板。這個動作無法復原。測試目前不得正在執行。

Parameters

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

status

確認刪除

start_run

說明

start_run 工具會開始執行測試案例。MCP 伺服器會擷取測試的預存組態並觸發執行。立即傳回狀態為 queued。使用 get_latest_test_run 輪詢完成。

Parameters

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

testId

測試的唯一 ID

status

測試的狀態 (例如,queued)

stop_run

說明

stop_run 工具會停止目前正在執行的測試。傳送取消訊號至所有執行中的 Fargate 任務。測試狀態會轉換為 cancelled。部分結果可透過 取得get_latest_test_run。

Parameters

test_id
  • 測試案例的唯一識別符

    類型:字串

    必要:是

回應

名稱 描述

status

確認取消

create_simple_schedule

說明

此create_simple_schedule工具會建立一次性排程測試,在指定的日期和時間自動執行。需要所有標準測試組態欄位加上排程欄位。

Parameters

所有create_test參數 (使用test_id選用的相同規則),加上:

schedule_date
  • 排程執行的日期。必須在未來。

    類型:字串 (格式:YYYY-MM-DD)

    必要:是

schedule_time
  • 排程執行的時間。

    類型:字串 (格式:HH:MM,24 小時)

    必要:是

schedule_timezone
  • 用於排程解譯的 IANA 時區 (例如,America/New_York、UTC)。

    類型:字串

    預設:UTC

    必要:否

回應

名稱 描述

testId

測試的唯一 ID

status

測試的狀態 (例如,scheduled)

nextRun

下一個排定的執行時間

create_cron_schedule

說明

此create_cron_schedule工具會建立週期性排程測試,根據 Cron 表達式自動執行。需要所有標準測試組態欄位加上 Cron 排程欄位。

Parameters

所有create_test參數 (使用test_id選用的相同規則),加上:

cron_value
  • 週期性排程的 Cron 表達式。標準 5 欄位格式 (例如,0 9 * * *每日上午 9:00)。

    類型:字串

    必要:是

recurrence
  • 人類可讀取的重複標籤 (例如 daily、)weekly。

    類型:字串

    必要:是

cron_expiry_date
  • 週期性排程停止執行的日期。

    類型:字串 (格式:YYYY-MM-DD)

    必要:否

schedule_timezone
  • 用於排程解譯的 IANA 時區。

    類型:字串

    預設:UTC

    必要:否

回應

名稱 描述

testId

測試的唯一 ID

status

測試的狀態 (例如,scheduled)

nextRun

下一個排定的執行時間

update_simple_schedule

說明

此update_simple_schedule工具會更新現有一次性排程測試的排程組態。完整取代測試組態,包括排程欄位。測試必須處於 scheduled 狀態。

Parameters

與 相同create_simple_schedule,但 test_id 為必要項目,且必須參考現有的排程測試。

回應

與 create_simple_schedule 相同。

update_cron_schedule

說明

update_cron_schedule 工具會更新現有定期排程測試的排程組態。完整取代測試組態,包括 Cron 排程欄位。測試必須處於 scheduled 狀態。

Parameters

與 相同create_cron_schedule,但 test_id 為必要項目,且必須參考現有的排程測試。

回應

與 create_cron_schedule 相同。

upload_test_script

說明

此upload_test_script工具會上傳指令碼型測試所需的指令碼檔案 (JMeter .jmx、k6.py、.jsLocust 或 .zip)。必須在指令碼型測試之前呼叫 create_test或 update_test 。傳回script_filename用於後續工具呼叫的 test_id和 。

Parameters

test_id
  • 測試案例的唯一識別符。省略新測試 (系統產生一個測試)。提供現有測試以上傳到正確的位置。

    類型:字串

    必要:否

test_type
  • 測試類型:jmeter、 k6或 locust。

    類型:字串

    必要:是

file_extension
  • 副檔名:jmx、py、 js或 zip。

    類型:字串

    必要:是

file_content
  • Base64-encoded的檔案內容。

    類型:字串

    必要:是

回應

名稱 描述

test_id

測試 ID (產生或提供)

script_filename

S3 中的檔案名稱 (格式:<test_id>.<extension>)。在 中參考此項目test_scenario.scenarios。

工作流程指南

工作流程指南是多步驟配方,可協助客服人員將多個工具鏈結在一起以進行常見操作。此get_workflow_guides工具會傳回每個工作流程的結構化step-by-step指引。

get_workflow_guides

說明

此get_workflow_guides工具會傳回常見多工具 DLT 操作的step-by-step工作流程配方。傳回要呼叫哪些工具的結構化指導、順序,以及如何解譯步驟之間的結果。

Parameters

workflow
  • 要擷取指引的工作流程。其中之一:run_and_monitor、baseline_comparison、schedule_test、create_and_run、update_and_run。

    類型:字串

    必要:是

回應

名稱 描述

workflow

工作流程識別符

description

工作流程用途的簡短描述

steps

步驟物件陣列,每個包含 step(數字)、 action (要執行的動作)、 tool(要呼叫的 MCP 工具,或非工具步驟則為 null) 和 details(特定指示)

可用的工作流程

run_and_monitor

啟動現有的測試執行並輪詢直到完成。

  1. 使用 list_scenarios或 尋找測試 get_scenario_details

  2. 使用 啟動測試執行 start_run

  3. 使用 輪詢以完成 get_latest_test_run(建議的間隔:30 秒;在 Amazon Elastic Container Service (Amazon ECS) 任務啟動時,處理初始 404 1-3 分鐘)

  4. 達到終端機狀態時報告結果 (complete、 failed或 cancelled)

baseline_comparison

執行測試,並將結果與儲存的基準進行比較。

  1. 使用 list_scenarios或 尋找測試 get_scenario_details

  2. 使用 啟動測試執行 start_run

  3. 使用 輪詢以完成 get_latest_test_run(建議間隔:30 秒)

  4. 使用 擷取基準 get_baseline_test_run(如果未設定基準,則略過比較)

  5. 比較指標 (平均回應時間、延遲、輸送量、百分位數、錯誤率)

schedule_test

建立具有重複或一次性排程的測試。

  1. 判斷排程類型 (一次性 → create_simple_schedule、重複 → create_cron_schedule)

  2. 如果以指令碼為基礎的 使用 上傳測試指令碼 upload_test_script

  3. 建立具有完整組態加上排程欄位的排程測試

  4. 驗證排程是否使用 建立 get_scenario_details(檢查 status: scheduled和 nextRun)

限制條件:週期性執行之間的間隔至少為 1 小時,間隔必須超過測試持續時間,cron 必須只指定一分鐘的值。

create_and_run

從頭開始建立新的測試並立即執行。

  1. 如果以指令碼為基礎的 使用 上傳測試指令碼 upload_test_script

  2. 使用 建立測試 create_test

  3. 使用 start_run 搭配傳回的 啟動測試執行 test_id

  4. 使用 輪詢以完成 get_latest_test_run(建議間隔:30 秒)

  5. 報告結果

update_and_run

修改現有測試的組態,並立即重新執行。

  1. 使用 擷取目前的組態 get_scenario_details

  2. 如果使用 變更指令碼,請上傳新的指令碼 upload_test_script

  3. 使用 更新測試組態 update_test(完全取代 - 包含所有欄位)

  4. 使用 啟動測試執行 start_run

  5. 使用 輪詢以完成 get_latest_test_run(建議間隔:30 秒)

  6. 報告結果

注意

所有 MCP 工具都會利用現有的 API 端點。不需要修改基礎 APIs 即可支援 MCP 功能。