View a markdown version of this page

Spécification des outils MCP - Tests de charge distribués sur AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Spécification des outils MCP

La solution Distributed Load Testing présente un ensemble d'outils MCP qui permettent aux agents IA d'interagir avec les scénarios et les résultats des tests. Ces outils fournissent des fonctionnalités abstraites de haut niveau qui correspondent à la manière dont les agents d'IA traitent les informations, leur permettant de se concentrer sur l'analyse et les informations plutôt que sur des contrats d'API détaillés.

Le serveur MCP prend en charge deux modes d'accès, contrôlés par le CloudFormation paramètre MCPServerAccessMode AWS :

  • ReadOnly(par défaut) — Seuls les outils de lecture sont enregistrés. Les agents voient 7 outils viatools/list. Aucune opération de mutation n'est disponible.

  • ReadWrite— Les outils de lecture et d'écriture sont enregistrés. Les agents peuvent accéder à tous les outils (lecture et écriture) tools/list et peuvent créer des tests, déclencher des exécutions, gérer des plannings et télécharger des scripts.

Le mode d'accès est défini au moment du déploiement. Pour modifier le mode d'accès après le déploiement initial, effectuez une mise à jour de la CloudFormation pile avec la nouvelle valeur de MCPServerAccessMode paramètre. La modification prend effet lorsque la mise à jour de la pile est terminée : aucune autre étape manuelle n'est requise.

En ReadOnly mode, les outils d'écriture ne sont pas du tout enregistrés ; les agents ne les voient jamaistools/list. La politique AWS Identity and Access Management (IAM) sur la fonction AWS Lambda du serveur MCP est définie en conséquence. ReadOnly autorise uniquement les requêtes GET à l'API. ReadWrite autorise GET, POST, PUT et DELETE.

Outils de lecture

liste_scénarios

Description

L'list_scenariosoutil extrait une liste de tous les scénarios de test disponibles avec des métadonnées de base.

Endpoint

GET /scenarios

Parameters

Aucune

Réponse

Nom Description

testId

Identifiant unique pour le scénario de test

testName

Nom du scénario de test

status

État actuel du scénario de test

startTime

Date de création ou de dernière exécution du test

testDescription

Description du scénario de test

get_scenario_details

Description

L'get_scenario_detailsoutil récupère la configuration du test et le test le plus récent pour un seul scénario de test.

La réponse indique le mode de circulation du scénario. Un nativeRunMode objet indique le mode natif et son absence indique le mode standard. Pour un scénario natif, les holdFor champs concurrencyrampUp, et ne reflètent pas la charge générée par l'exécution. Le chargement provient plutôt du script. Pour plus d'informations, reportez-vous à la section Modes de forme du trafic.

Endpoint

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

Paramètre de demande

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

testTaskConfigs

Configuration des tâches pour chaque région

testScenario

Définition et paramètres du test

status

État actuel du test

startTime

Horodatage de début du test

endTime

Horodatage de fin du test (si terminé)

list_test_runs

Description

L'list_test_runsoutil extrait une liste des tests exécutés pour un scénario de test spécifique, triés du plus récent au plus ancien. Renvoie un maximum de 30 résultats. Un seul limit des deux start_timestamp peut être fourni, pas les deux.

Endpoint

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

or

GET /scenarios/<testid>/testruns/?start_timestamp=<start_timestamp>

Paramètres de demande

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

limit
  • Nombre maximum de cycles de tests à renvoyer. Ne peut pas être utilisée avec start_timestamp.

    Type : Integer

    Valeur par défaut : 20

    Maximum : 30

    Obligatoire : non

start_timestamp
  • Renvoie tous les essais remontant à cet horodatage. Ne peut pas être utilisée avec limit.

    Type : chaîne (format date-heure ISO 8601, par exemple) 2024-01-15T14:30:00.000Z

    Obligatoire : non

Réponse

Nom Description

testRuns

Tableau de résumés de tests avec des mesures de performance et des percentiles pour chaque exécution

get_test_run

Description

L'get_test_runoutil extrait les résultats détaillés d'un seul test avec des ventilations par région et par point final.

Endpoint

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

Paramètres de demande

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

test_run_id
  • L'identifiant unique pour le test spécifique

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

results

Données de test complètes, y compris la ventilation des résultats par région, les mesures spécifiques aux terminaux, les percentiles de performance (p50, p90, p95, p99), le nombre de réussites et d'échecs, les temps de réponse et de latence, ainsi que la configuration de test utilisée pour l'exécution

get_latest_test_run

Description

L'get_latest_test_runoutil extrait le test le plus récent pour un scénario de test spécifique.

Endpoint

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

Note

Les résultats sont triés par heure à l'aide d'un indice secondaire global (GSI), de sorte que le test le plus récent soit renvoyé.

Paramètre de demande

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

results

Données de test les plus récentes au même format que get_test_run

get_baseline_test_run

Description

L'get_baseline_test_runoutil récupère le test de référence effectué pour un scénario de test spécifique. La base de référence est utilisée à des fins de comparaison des performances.

Endpoint

GET /scenarios/<test_id>/baseline

Paramètre de demande

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

baselineData

Données d'exécution des tests de référence à des fins de comparaison, y compris toutes les mesures et la configuration du cycle de référence désigné

get_test_run_artefacts

Description

L'get_test_run_artifactsoutil extrait les informations du compartiment Amazon S3 pour accéder aux artefacts de test, notamment les journaux, les fichiers d'erreurs et les résultats.

Endpoint

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

Paramètres de demande

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

test_run_id
  • L'identifiant unique pour le test spécifique

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

bucketName

Nom du compartiment S3 dans lequel les artefacts sont stockés

testRunPath

Préfixe de chemin pour le stockage actuel des artefacts (version 4.0+)

testScenarioPath

Préfixe de chemin pour le stockage des artefacts existants (avant la version 4.0)

Outils d'écriture

Les outils d'écriture ne sont disponibles que MCPServerAccessMode s'ils sont définis surReadWrite. Ils permettent aux agents de créer, de modifier et d'exécuter des scénarios de test.

créer_test

Description

L'create_testoutil crée un nouveau scénario de test de charge sans l'exécuter. Le test est enregistré et peut être exécuté ultérieurement avecstart_run. Pour les tests basés sur des scripts (jmeter, k6, locust), appelez d'upload_test_scriptabord et transmettez le résultat renvoyé. test_id

Parameters

test_id
  • Identifiant unique du scénario de test. Omettre pour les tests HTTP simples (le système en génère un). Obligatoire pour les tests basés sur des scripts : utilisez la valeur test_id renvoyée parupload_test_script.

    Type : String

    Obligatoire : Non (obligatoire pour les tests basés sur des scripts)

test_name
  • Human-readable nom du scénario de test

    Type : chaîne

    Obligatoire : oui

test_description
  • Description de ce que valide ce test

    Type : chaîne

    Obligatoire : oui

test_type
  • Type de test. simplepour les tests de points de terminaison HTTP configurés en ligne. jmeterk6, ou locust pour les tests basés sur des scripts qui font référence à un fichier de script téléchargé.

    Type : chaîne

    Obligatoire : oui

test_task_configs
  • Configuration des tâches régionales. Chaque entrée spécifie une région, le nombre de tâches AWS Fargate et le nombre d'utilisateurs virtuels simultanés par tâche. Nombre total d'utilisateurs simultanés pour une région = task_count ×concurrency.

    Type : Tableau d'objets (chacun avecregion,task_count,concurrency)

    Obligatoire : oui

test_scenario
  • Scénario d'exécution du test définissant le profil de charge et le ou les points de terminaison cibles. Contient execution (ramp-up, hold-for, nom du scénario) et scenarios (définitions de scénarios nommées avec soit un requests tableau pour les tests simples, soit une script chaîne pour les tests basés sur des scripts).

    Type : objet

    Obligatoire : oui

show_live
  • S'il faut activer la surveillance en direct pendant l'exécution du test.

    Type : Boolean

    Par défaut: false

    Obligatoire : non

tags
  • Tags pour organiser les scénarios de test. Maximum de 5 étiquettes.

    Type : tableau de chaînes

    Obligatoire : non

native_run_mode
  • Objet qui sélectionne le mode de circulation. Omettez-le pour le mode Standard, où la solution contrôle la charge. Incluez-le pour le mode natif, où votre script téléchargé contrôle le chargement. Pour plus d'informations, reportez-vous à la section Modes de forme du trafic.

    Type : objet

    Obligatoire : non

Le mode natif diffère du mode standard comme suit :

  • L'objet nécessite un champmax_test_duration_seconds, d'une durée maximale de 24 heures.

  • Seuls les tests basés sur des scripts (jmeterk6, oulocust) acceptent le mode natif.

  • Les tests HTTP Endpoint simples s'exécutent toujours en mode Standard.

  • test_task_configsreste obligatoire, et chaque entrée l'est toujoursconcurrency.

  • Une requête qui est concurrency définie native_run_mode avec succès.

  • La charge générée par le test est la charge déclarée par votre script.

  • La charge totale par région est la charge de votre script multipliée partask_count.

Réponse

Nom Description

testId

L'identifiant unique du test créé

testName

Nom du test

status

État du test (par exemple,created)

test_mise à jour

Description

L'update_testoutil met à jour la configuration d'un scénario de test existant. Il s'agit d'un remplacement complet : la configuration de test complète doit être fournie, et pas seulement les champs modifiés. Le test ne doit pas être en cours d'exécution.

Parameters

Identique àcreate_test, sauf que test_id c'est obligatoire et doit faire référence à un test existant.

Réponse

Nom Description

testId

L'identifiant unique du test mis à jour

testName

Nom du test

status

État du test

supprimer_test

Description

L'delete_testoutil supprime définitivement un scénario de test et toutes les données associées, y compris l'historique des tests, les calendriers et les CloudWatch tableaux de bord Amazon. Cette action ne peut pas être annulée. Le test ne doit pas être en cours d'exécution.

Parameters

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

status

Confirmation de la suppression

démarrage_exécution

Description

L'start_runoutil lance l'exécution d'un scénario de test. Le serveur MCP récupère la configuration stockée du test et déclenche son exécution. Retourne immédiatement avec le statutqueued. get_latest_test_runÀ utiliser pour compléter le sondage.

Parameters

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

testId

L'identifiant unique du test

status

État du test (par exemple,queued)

stop_run

Description

L'stop_runoutil arrête un test en cours d'exécution. Envoie un signal d'annulation à toutes les tâches Fargate en cours d'exécution. Le statut du test passe àcancelled. Les résultats partiels sont disponibles viaget_latest_test_run.

Parameters

test_id
  • L'identifiant unique du scénario de test

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

status

Confirmation de l'annulation

create_simple_schedule

Description

L'create_simple_scheduleoutil crée un test planifié unique qui s'exécute automatiquement à une date et à une heure spécifiées. Nécessite tous les champs de configuration de test standard ainsi que les champs de planification.

Parameters

Tous les create_test paramètres (avec les mêmes règles test_id facultatives), plus :

schedule_date
  • Date de la course prévue. Ça doit être dans le futur.

    Type : Chaîne (format :YYYY-MM-DD)

    Obligatoire : oui

schedule_time
  • Heure de la course prévue.

    Type : chaîne (format : HH:MM 24 heures sur 24)

    Obligatoire : oui

schedule_timezone
  • Fuseau horaire IANA pour l'interprétation des horaires (par exempleAmerica/New_York,,UTC).

    Type : String

    Par défaut: UTC

    Obligatoire : non

Réponse

Nom Description

testId

L'identifiant unique du test

status

État du test (par exemple,scheduled)

nextRun

Heure d'exécution prévue pour la prochaine

create_cron_schedule

Description

L'create_cron_scheduleoutil crée un test planifié récurrent qui s'exécute automatiquement en fonction d'une expression cron. Nécessite tous les champs de configuration de test standard ainsi que les champs de planification cron.

Parameters

Tous les create_test paramètres (avec les mêmes règles test_id facultatives), plus :

cron_value
  • Expression cron pour un calendrier récurrent. Format standard à 5 champs (par exemple, 0 9 * * * pour tous les jours à 9 h 00).

    Type : chaîne

    Obligatoire : oui

recurrence
  • Human-readable étiquette de récurrence (par exempledaily,weekly).

    Type : chaîne

    Obligatoire : oui

cron_expiry_date
  • Date à laquelle le calendrier récurrent cesse de s'exécuter.

    Type : Chaîne (format :YYYY-MM-DD)

    Obligatoire : non

schedule_timezone
  • Fuseau horaire IANA pour l'interprétation des horaires.

    Type : String

    Par défaut: UTC

    Obligatoire : non

Réponse

Nom Description

testId

L'identifiant unique du test

status

État du test (par exemple,scheduled)

nextRun

Heure d'exécution prévue pour la prochaine

update_simple_schedule

Description

L'update_simple_scheduleoutil met à jour la configuration du calendrier pour un test planifié unique existant. Remplacement complet de la configuration de test, y compris les champs de planification. Le test doit être en scheduled cours.

Parameters

Identique àcreate_simple_schedule, sauf que test_id cela est obligatoire et doit faire référence à un test programmé existant.

Réponse

Identique à create_simple_schedule.

update_cron_schedule

Description

L'update_cron_scheduleoutil met à jour la configuration du calendrier pour un test programmé récurrent existant. Remplacement complet de la configuration de test, y compris les champs de planification cron. Le test doit être en scheduled cours.

Parameters

Identique àcreate_cron_schedule, sauf que test_id cela est obligatoire et doit faire référence à un test programmé existant.

Réponse

Identique à create_cron_schedule.

upload_test_script

Description

L'upload_test_scriptoutil télécharge un fichier de script (JMeter.jmx, k6.js, Locust ou.zip) requis pour les .py tests basés sur des scripts. Doit être appelé avant create_test ou update_test pour les tests basés sur des scripts. Renvoie un test_id et script_filename à utiliser lors des appels d'outils suivants.

Parameters

test_id
  • Identifiant unique du scénario de test. Omettre pour les nouveaux tests (le système en génère un). Prévoyez que les tests existants doivent être téléchargés au bon endroit.

    Type : chaîne

    Obligatoire : non

test_type
  • Type de test : jmeterk6, oulocust.

    Type : chaîne

    Obligatoire : oui

file_extension
  • Extension de fichier : jmxjs,py, ouzip.

    Type : chaîne

    Obligatoire : oui

file_content
  • Base64-encoded contenu du fichier.

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

test_id

L'identifiant du test (généré ou fourni)

script_filename

Nom du fichier en S3 (format :<test_id>.<extension>). Référez-vous à cela danstest_scenario.scenarios.

Guides sur les flux

Les guides de flux de travail sont des recettes en plusieurs étapes qui aident les agents à enchaîner plusieurs outils pour des opérations courantes. L'get_workflow_guidesoutil fournit des instructions structurées étape par étape pour chaque flux de travail.

get_workflow_guides

Description

L'get_workflow_guidesoutil renvoie des recettes de flux de travail étape par étape pour les opérations DLT multi-outils courantes. Renvoie des conseils structurés sur les outils à appeler, dans quel ordre et sur la manière d'interpréter les résultats entre les étapes.

Parameters

workflow
  • Le flux de travail pour lequel vous souhaitez obtenir des conseils. L'un des éléments suivants : run_and_monitor baseline_comparisonschedule_test,,create_and_run,update_and_run.

    Type : chaîne

    Obligatoire : oui

Réponse

Nom Description

workflow

Identifiant du workflow

description

Brève description de l'objectif du flux de travail

steps

Tableau d'objets d'étape, chacun contenant step (numéro), action (que faire), tool (quel outil MCP appeler, ou null pour les étapes non liées à l'outil) et details (instructions spécifiques)

Flux de travail disponibles

exécuter_et_surveiller

Lancer un test existant et effectuer un sondage jusqu'à la fin.

  1. Trouvez le test à l'aide de list_scenarios ou get_scenario_details

  2. Démarrez le test à l'aide de start_run

  3. Sondage à compléter en utilisant get_latest_test_run (intervalle recommandé : 30 secondes ; gestion du 404 initial pendant 1 à 3 minutes pendant le lancement des tâches Amazon Elastic Container Service (Amazon ECS))

  4. Signaler les résultats une fois que l'état du terminal est atteint (completefailed, oucancelled)

comparaison_de référence

Exécutez un test et comparez les résultats par rapport à une base de référence enregistrée.

  1. Trouvez le test à l'aide de list_scenarios ou get_scenario_details

  2. Démarrez le test à l'aide de start_run

  3. Sondage à compléter en utilisant get_latest_test_run (intervalle recommandé : 30 secondes)

  4. Récupérez la référence en utilisant get_baseline_test_run (ignorez la comparaison si aucune référence n'est définie)

  5. Comparez les indicateurs (temps de réponse moyen, latence, débit, percentiles, taux d'erreur)

programme_test

Créez un test avec un calendrier récurrent ou ponctuel.

  1. Déterminez le type de calendrier (ponctuel →create_simple_schedule, récurrent →create_cron_schedule)

  2. Téléchargez un script de test s'il est basé sur un script en utilisant upload_test_script

  3. Créez le test planifié avec la configuration complète et les champs de planification

  4. Vérifiez que le calendrier a été créé à l'aide de get_scenario_details (cochez status: scheduled etnextRun)

Contraintes : intervalle minimum d'une heure entre les exécutions récurrentes, l'intervalle doit dépasser la durée du test, cron doit spécifier exactement une valeur d'une minute.

créer_et_exécuter

Créez un nouveau test à partir de zéro et exécutez-le immédiatement.

  1. Téléchargez un script de test s'il est basé sur un script en utilisant upload_test_script

  2. Créez le test à l'aide de create_test

  3. Démarrez le test en utilisant start_run avec le test_id

  4. Sondage à compléter en utilisant get_latest_test_run (intervalle recommandé : 30 secondes)

  5. Résultats du rapport

mettre à jour_et_exécuter

Modifiez la configuration d'un test existant et réexécutez-le immédiatement.

  1. Récupérez la configuration actuelle à l'aide de get_scenario_details

  2. Téléchargez un nouveau script si vous le modifiez à l'aide de upload_test_script

  3. Mettez à jour la configuration de test en utilisant update_test (remplacement complet — inclure tous les champs)

  4. Démarrez le test à l'aide de start_run

  5. Sondage à compléter en utilisant get_latest_test_run (intervalle recommandé : 30 secondes)

  6. Résultats du rapport

Note

Tous les outils MCP exploitent les points de terminaison d'API existants. Aucune modification des API sous-jacentes n'est requise pour prendre en charge la fonctionnalité MCP.