jmeter-mcp-server
Allows generating, running, and analyzing Apache JMeter performance tests from structured API sources such as OpenAPI files.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jmeter-mcp-serverGenerate a baseline test plan from the attached OpenAPI spec."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
JMeter MCP Server
An MCP server for generating, validating, running, and reporting Apache JMeter API performance tests from structured API sources.
The project is designed for SDETs and automation engineers who want LLM-assisted test-plan creation without letting the LLM write arbitrary JMX. The LLM supplies structured MCP tool arguments; TypeScript code validates the input, applies deterministic load policies, renders JMX, and validates the generated file.
Features
Generate JMeter
.jmxplans from OpenAPI files or explicit endpoint details.Deterministic test profiles:
smoke,baseline,load,spike,stress,soak, andcustom.Zod-validated MCP tool inputs.
Guardrails for aggressive load, documented rate limits, and profile mismatch.
Runtime parameterization for credentials with JMeter properties such as
${__P(API_KEY,)}.OS-agnostic JMeter binary resolution through
JMETER_BIN,JMETER_HOME, orjmeteronPATH.TypeScript runner scripts for individual JMX files, suites, and JTL summary reports.
GitHub Actions CI for strict TypeScript build and guardrail tests.
Related MCP server: JMeter MCP Server
Prerequisites
Node.js
>=22npm
Apache JMeter
5.6.xor compatibleJava supported by your JMeter installation
JMeter can be discovered in one of three ways:
export JMETER_BIN=/absolute/path/to/jmeteror:
export JMETER_HOME=/absolute/path/to/apache-jmeteror by having jmeter available on PATH.
Install
npm ci
npm run build:all
npm testMCP Usage
Build the server:
npm run buildConfigure your MCP client to run:
node /absolute/path/to/jmeter-mcp-server/build/index.jsOr use a short command after linking the package locally:
npm link
jmeter-mcp-serverSee docs/MCP_CLIENTS.md for Claude, Claude Code, VS Code/Copilot-style, Continue-style, and generic MCP client examples.
Use the high-level tool for deterministic generation:
create_test_plan_from_api_sourcePrefer this high-level tool over step-by-step JMX edits. It validates inputs, applies load-profile policy, renders a complete plan, and validates the generated JMX.
Test Profiles
Profile | Users | Ramp-up | Loops | Duration | Notes |
| 1 | 1s | 1 | none | Minimal validation |
| 5 | 5s | 1 | none | Safe default |
| 10 | 30s | 3 | none | Moderate load |
| 25 | 1s | 1 | none | Requires |
| 50 | 60s | 5 | none | Requires |
| 5 | 60s | forever | 1800s | Requires |
| required | optional | optional | optional | Fully explicit |
Deterministic profiles reject mismatched overrides. For example, testProfile=baseline with users=6 fails. Use testProfile=custom when you need custom values.
Guardrails
The generation path is intentionally constrained:
LLM request
-> MCP tool schema
-> Zod validation
-> deterministic profile policy
-> source parsing
-> normalized test plan model
-> JMX renderer
-> generated JMX validation
-> output fileThe MCP rejects:
missing
usersforcustomprofilesdeterministic profile overrides that do not match policy
aggressive profiles without
allowAggressiveLoad=trueestimated request rates above a documented OpenAPI rate limit unless explicitly allowed
malformed headers, placeholder hosts, unsupported protocols, and incomplete request body metadata
Generated JMX validation checks required JMeter components, thread settings, loop settings, duration settings, endpoint target, headers, variables, assertions, and result collectors.
Credentials And Variables
Do not commit .env.
Copy the example locally:
cp .env.example .envGenerated JMX files use JMeter properties and do not need secrets embedded:
${__P(API_KEY,)}
${__P(OAUTH_CLIENT_ID,)}
${__P(OAUTH_CLIENT_SECRET,)}At runtime, pass values through JMeter properties or set JMETER_ENV_FILE:
JMETER_ENV_FILE=.env npm run jmeter:run -- jmeter/API_Test_Plan_4th_API.jmx results/local-runScripts
Build:
npm run build:allRun guardrail tests:
npm testGenerate JMX suite from OpenAPI:
npm run generate:jmeter:suite -- openapi.yaml jmeter 5Run one JMX:
npm run jmeter:run -- jmeter/API_Test_Plan_1st_API.jmx results/local-runRun a suite:
npm run jmeter:suite -- jmeter results/suiteGenerate a suite report from JTL files:
npm run jmeter:report -- results/suite/<run-directory>Rate Limits And Public APIs
Do not run aggressive tests against public or third-party APIs unless the API owner explicitly allows it.
For public practice APIs, prefer smoke or baseline. Profiles such as spike, stress, and soak require explicit opt-in through allowAggressiveLoad=true.
Repository Hygiene
Ignored by default:
.env,.env.*.continue/,.vscode/node_modules/build/results/*.log*.jtl
Commit-worthy files are source, configuration, docs, workflows, OpenAPI examples, and intentional JMX examples.
Development
npm ci
npm run build:all
npm testCI runs:
npm run ciwhich performs a strict TypeScript build and guardrail tests.
Status
This project is suitable for early public adoption by SDETs who are comfortable with MCP, JMeter, and TypeScript. The core guardrails are deterministic and tested. Additional API source adapters such as Postman collections, HAR files, or GraphQL schemas can be added behind the existing adapter interfaces.
Available Tools
13 toolsadd_assertionB
Add an assertion to validate responses
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name for the assertion | |
| type | Yes | Assertion type | |
| value | Yes | Assertion value (e.g., '200', '5000', 'success') | |
| testfile | Yes | Path to the .jmx file | |
| samplerName | Yes | Name of the HTTP sampler to add assertion to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden, but it only says 'Add an assertion to validate responses.' It does not disclose that this likely modifies a .jmx test file, whether assertions are appended or replaced, or what happens if the sampler or file is missing. The mutation is implied but side effects are not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no filler or repetition. It conveys the essential purpose efficiently, though it could have added slightly more contextual structure without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully covers parameters and the operation is relatively simple, but the description lacks behavioral context such as file mutation, side effects, and when to add an assertion in the test-plan workflow. It is minimally viable but has clear gaps around usage and expected behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the five parameters is already documented in the schema. The description itself adds no extra parameter-level meaning beyond the schema, so the baseline of 3 is appropriate. The value examples in the schema are useful and no compensation from the description is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add an assertion to validate responses' clearly states the action (adds an assertion) and its purpose (validate responses). It distinguishes this from sibling add_* tools by naming the distinct resource 'assertion', though it does not explicitly compare itself to those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to validate responses' implies the tool is used when response validation is needed in a test plan, which gives some contextual direction. However, it does not explicitly state when to use it vs alternatives, when not to use it, or mention prerequisites like having an existing sampler or test file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_csv_data_configC
Add a CSV Data Set Config for data-driven testing
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name | |
| recycle | No | Recycle data at end | |
| filename | Yes | Path to the CSV file | |
| testfile | Yes | Path to the .jmx file | |
| delimiter | No | Field delimiter | , |
| stopThread | No | Stop thread at end of file | |
| sharingMode | No | How data is shared between threads | shareMode.all |
| variableNames | Yes | Comma-separated variable names (e.g., 'username,password') | |
| ignoreFirstLine | No | Skip header row |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden; it only says 'Add a CSv Data Set Config for data-driven testing.' It implies mutation of a testfile but does not disclose that the .jmx file is modified in place, whether the operation is idempotent, whether the CSV file must already exist, or where the element is placed in the test plan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler; the verb and resource appear immediately. It is appropriately terse, though it could earn a 5 by adding a behavioral clause without bloating.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters (3 required), no output schema, and no annotations, a one-sentence description is thin. The rich schema covers parameter meaning, but an agent gets no context on side effects (in-place .jmx modification), placement, or prerequisites, which matters for a tool that mutates a test artifact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description adds no parameter-level meaning beyond the general 'data-driven testing' framing, which keeps this at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add'), a specific resource ('CSV Data Set Config'), and a purpose ('data-driven testing'), so an agent can infer this adds a JMeter CSV-data element to a test artifact. It is distinguishable from sibling add_* tools by the named element type (vs. add_http_sampler, add_assertion, add_timer), though it does not explicitly contrast with them or name the target (.jmx testfile).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. alternatives such as create_test_plan_from_openapi or add_http_sampler, nor when not to use it. An agent must infer from the element type that this is for setting up data-driven tests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_http_samplerB
Add an HTTP request sampler to an existing test plan
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body for POST/PUT/PATCH | |
| name | Yes | Name for the HTTP sampler | |
| path | Yes | URL path (e.g., /api/users) | |
| port | No | Target port (optional) | |
| domain | No | Target domain (optional, inherits from defaults) | |
| method | Yes | HTTP method | |
| headers | No | HTTP headers to include | |
| protocol | No | Protocol | http |
| testfile | Yes | Path to the .jmx file | |
| contentType | No | Content-Type header value | |
| useKeepalive | No | Use keep-alive | |
| followRedirects | No | Follow redirects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing side effects and behavior. It only recicts the primary action and adds no detail about modifying the .jmx file in place, whether changes are reversible, permissions needed, or return behavior. The only implicit behavioral clue is 'existing test plan', which hints that this is not plan creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is entirely front-loaded and free of filler. It states the action and target in nine words, earning every part and leaving no unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, no output schema, and no annotations, the description is too sparse. It does not explain where in the test plan the sampler is inserted, what happens if the testfile path is invalid, or what observable result the agent should expect. The rich schema covers parameter semantics but not the operational context needed to call a mutating tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter already has a description in the schema. The tool description adds no additional parameter context or examples, but with full schema coverage the baseline of 3 is appropriate. It does not need to compensate for gaps that do not exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add'), a concrete resource ('HTTP request sampler'), and the target context ('existing test plan'). This clearly differentiates it from sibling tools like add_assertion, add_timer, and add_csv_data_config by naming exactly what kind of element is added.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description: use this tool when an HTTP request sampler needs to be added to an existing test plan. However, it does not explicitly name alternatives or state when-not-to-use, nor does it mention prerequisites such as needing a valid existing .jmx file. The phrase 'existing test plan' offers some context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_timerB
Add a timer for think time / delays between requests
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name for the timer | |
| type | Yes | Timer type | |
| delay | Yes | Base delay in milliseconds | |
| range | No | Random range in ms (for random timers) | |
| testfile | Yes | Path to the .jmx file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the timer's purpose and does not reveal that the tool modifies the .jmx file, whether it appends or replaces existing timers, or whether there are prerequisites. For a mutating operation, this is a significant missing piece.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of about eleven words, front-loaded with the action and object. It contains no filler, no repetition of schema details, and is appropriately sized for a narrowly scoped tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus a fully covered schema allow a basic constant-timer call to be constructed, but random timer semantics (how range interacts with delay) and the precise effect on the test file are left implicit. With no annotations and no output schema, some behavioral context is missing, but the tool is simple enough that the current definition is barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (testfile, type, delay, range, name) already has a schema description. The tool description adds no parameter-level meaning, which is acceptable under the baseline of 3 when structured fields are already self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear verb+resource pair: 'Add a timer', and frames its purpose as 'think time / delays between requests'. This distinguishes it from sibling tools like add_http_sampler, add_assertion, and add_csv_data_config, which operate on different test-plan elements. It does not explicitly say 'to the .jmx file', but the testfile parameter and sibling context make the scope clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a functional cue—think time/delays—which implies when to use a timer, but it does not explain when to choose constant vs. random timer types or how this tool fits relative to other test-plan elements. There are no explicit alternatives or exclusion rules, so usage is more implied than defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_planB
Create a new JMeter test plan with a default thread group
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the test plan | |
| protocol | No | Target protocol | http |
| numthreads | Yes | Required number of threads/users | |
| outputfile | Yes | Path where to save the .jmx file | |
| targethost | Yes | Target host for HTTP requests | |
| targetport | No | Target port (default: 80) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses only that the plan includes a default thread group; it does not state that a .jmx file is written to outputfile, whether existing files are overwritten, or any permission or side-effect considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Exactly one concise sentence, front-loaded with the action and object, with no redundant words and no attempt to repeat schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers all parameter semantics and the operation is low-complexity, so basic invocation is supported. However, with no annotations, no output schema, and a terse description, an agent is not told about file-creation or overwrite behavior, nor when this variant is preferred over source-based sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters are already documented with types, defaults, an enum constraint, and bounds. The description adds no parameter-specific meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create') and a specific resource ('new JMeter test plan'), and adds a meaningful detail ('with a default thread group'). It does not explicitly contrast this with the sibling tools create_test_plan_from_api_source and create_test_plan_from_openapi, though the source-based distinction is left to the tool names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose this base creation tool versus the source-based sibling tools, or when to follow up with add_http_sampler or update_thread_group. The usage context must be inferred from the tool name and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_plan_from_api_sourceC
Create a JMeter test plan from an API source. Supported sourceType values: openapi, endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | For sourceType=endpoint: raw request body | |
| name | No | Optional JMeter test plan name | |
| path | No | For sourceType=endpoint: request path, e.g. /v1/users | |
| loops | No | Loop count; use -1 for forever. For deterministic profiles, omit or match the policy value. | |
| users | No | Required only for testProfile=custom. For deterministic profiles, omit or match the policy value. | |
| method | No | For sourceType=endpoint: HTTP method | |
| envFile | No | For sourceType=openapi: optional .env file used for auth/data defaults | |
| headers | No | For sourceType=endpoint: request headers | |
| rampTime | No | Ramp-up time in seconds. For deterministic profiles, omit or match the policy value. | |
| serverUrl | No | For sourceType=endpoint: base server URL, e.g. https://api.example.com | |
| outputfile | Yes | Path where to save the .jmx file | |
| sourceFile | No | For sourceType=openapi: path to OpenAPI YAML/JSON file | |
| sourceType | Yes | API source type: openapi file or explicit endpoint details | |
| contentType | No | For sourceType=endpoint: Content-Type header | |
| serverIndex | No | For sourceType=openapi: 1-based server index | |
| testProfile | No | Deterministic profile: custom, smoke, baseline, load, spike, stress, or soak | custom |
| endpointIndex | No | For sourceType=openapi: 1-based endpoint index | |
| expectedStatus | No | Expected response code assertion, e.g. 200 | |
| durationSeconds | No | Duration for scheduled profiles such as soak. For deterministic profiles, omit or match the policy value. | |
| allowAggressiveLoad | No | Required for aggressive profiles or requests that exceed discovered rate limits. | |
| addResponseCodeAssertion | No | For sourceType=openapi: add a response-code assertion from the success response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the creation action and source type options, with no mention of side effects such as writing the .jmx file, whether existing files are overwritten, or whether external files are read. This is minimal for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the primary action and resource. However, given the tool's 21 parameters and sibling overlap, slightly more structured guidance would be warranted without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 21 parameters, two distinct source modes, and overlapping siblings, yet the description provides almost no context beyond the basic action. The rich input schema compensates for parameter details but not for missing guidance about mode-specific behavior, test profiles, or when this tool is the right choice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and all 21 parameters already have meaningful descriptions and enums. The description adds no additional parameter semantics beyond restating the sourceType values already present in the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create a JMeter test plan') and identifies the input source types ('openapi, endpoint'). However, it does not explicitly distinguish this tool from the sibling 'create_test_plan_from_openapi', so the differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like create_test_plan_from_openapi or create_test_plan. The description mentions supported sourceType values but does not explain when each mode is appropriate or when a sibling should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_test_plan_from_openapiB
Create a JMeter test plan from an OpenAPI YAML/JSON file. Use this when the user asks for a plan based on an OpenAPI file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional JMeter test plan name | |
| loops | No | Loop count; use -1 for forever. For deterministic profiles, omit or match the policy value. | |
| users | No | Required only for testProfile=custom. For deterministic profiles, omit or match the policy value. | |
| envFile | No | Optional .env file used for auth/data defaults | |
| rampTime | No | Ramp-up time in seconds. For deterministic profiles, omit or match the policy value. | |
| outputfile | Yes | Path where to save the .jmx file | |
| openapiFile | Yes | Absolute or relative path to the OpenAPI YAML/JSON file | |
| serverIndex | No | 1-based OpenAPI server index to use | |
| testProfile | No | Deterministic profile: custom, smoke, baseline, load, spike, stress, or soak | custom |
| endpointIndex | No | 1-based endpoint index from the OpenAPI paths/methods | |
| durationSeconds | No | Duration for scheduled profiles such as soak. For deterministic profiles, omit or match the policy value. | |
| allowAggressiveLoad | No | Required for aggressive profiles or requests that exceed discovered rate limits. | |
| addResponseCodeAssertion | No | Add a response-code assertion based on the OpenAPI success response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that a test plan is created; it does not mention output file overwrite behavior, file existence requirements, parsing failures, authentication needs, or any other side effects of generating the plan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The action is front-loaded, and the second sentence provides a useful invocation trigger. Every part of the text contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 13-parameter tool with no annotations and no output schema, so the one-sentence description is insufficient context. It does not explain how this tool differs from create_test_plan_from_api_source, the effect of deterministic profiles, or what happens after generation. The schema covers parameters, but the workflow and behavioral context are largely missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so all 13 parameters are already semantically documented. The tool description adds no parameter-level guidance beyond the schema, which is acceptable given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a JMeter test plan') and the specific source resource ('OpenAPI YAML/JSON file'), so an agent can understand what the tool does. It does not explicitly contrast itself with create_test_plan_from_api_source, but the source format provides some differentiation from generic plan creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger: 'Use this when the user asks for a plan based on an OpenAPI file.' This is clear context for when to invoke the tool, though it does not mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_elementB
Delete an element from a test plan by name
| Name | Required | Description | Default |
|---|---|---|---|
| testfile | Yes | Path to the .jmx file | |
| elementName | Yes | Name of the element to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool deletes an element by name, but it does not mention whether deletion is permanent, whether it affects child elements, whether changes are persisted to the test file, or what happens if the element is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single direct sentence with no filler. The action verb and resource are front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is thin on consequences such as irreversibility, side effects, persistence, or error behavior. The parameters are clear, but the behavioral context is not complete enough for an agent to fully anticipate the tool's impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both testfile and elementName already described in the input schema. The description's phrase 'by name' aligns with elementName but adds no material semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Delete') and a clear resource ('an element from a test plan'), with the selection mechanism ('by name') stated. This clearly distinguishes it from sibling tools such as add_http_sampler, update_thread_group, and read_test_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use case—removing a named element from a .jmx test plan—but does not explicitly state when to use this tool versus alternatives. There are no exclusions or conditions provided, so the guidance is adequate but largely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_reportB
Generate an HTML report from JMeter test results
| Name | Required | Description | Default |
|---|---|---|---|
| inputdir | Yes | Directory containing .jtl or .csv results | |
| outputdir | Yes | Output directory for the HTML report |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure, but it only states the core action. It doesn't mention fileystem side effects, whether outputdir is overwritten or created, prerequisites such as JMeter availability, or any failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, active voice, no filler; the verb and object lead. It is appropriately sized for a two-parameter utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For the simple task of generating a report, the schema plus description define required inputs and output. However, the missing usage timing and lack of behavior disclosure leave some context gaps, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both inputdir and outputdir already explained clearly. The description adds no extra parameter nuance, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Generate) and resource (HTML report) and names the input domain (JMeter test results), making its purpose unmistakable. It differentiates from siblings like read_test_file or run_test without ambiguity, as generating a report is a distinct post-processing action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given: it doesn't say to invoke this after run_test, nor when to prefer report generation over read_test_file. The only hint is 'from JMeter test results,' which implies results must exist but leaves the workflow timing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_testsA
List all JMeter test files (.jmx) in a directory
| Name | Required | Description | Default |
|---|---|---|---|
| directory | Yes | Directory to search for .jmx files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden of behavioral disclosure. It correctly signals a non-mutating listing operation, but does not state whether the search recurses into subdirectories, whether paths are absolute or relative, or what happens if the directory is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core action and resource with no filler. Every word contributes to the call contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, low-complexity listing tool, the description is nearly complete: it specifies the resource type and scope, and the schema covers the parameter. The main missing context is traversal behavior and the exact shape of the returned file list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes the directory parameter as the location to search for .jmx files. The description adds no substantial semantics beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List'), a specific resource ('JMeter test files (.jmx)'), and a scope ('in a directory'). This clearly distinguishes it from siblings like read_test_file (single file) and create_test_plan (new creation), even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: when you need an inventory of .jmx files in a directory. However, the description gives no explicit 'use this instead of read_test_file' guidance or exclusions, leaving the agent to infer the best sibling choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_test_fileA
Read and parse a JMeter test file to show its structure
| Name | Required | Description | Default |
|---|---|---|---|
| testfile | Yes | Path to the .jmx file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden; 'read' communicates a non-destructive operation and 'parse/show structure' hints at the output. It does not mention error behavior, file existence requirements, or side effects, but for a read tool the core safety trait is reasonably clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no redundant words. It states the core action and result in an efficient manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage, the description is mostly adequate, but without an output schema it leaves 'show its structure' vague—an agent may not know whether it returns parsed JSON, a tree, or a summary. It also provides no guidance on prerequisites such as the file needing to exist or be valid JMX.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already defines testfile as the path to the .jmx file. The description adds 'JMeter' context but no additional parameter-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('read and parse') and names the resource ('JMeter test file') and outcome ('show its structure'). It is clearly distinguishable from sibling creation/execution tools, but it does not explicitly contrast with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative guidance is given. The intended use (inspect an existing JMX file's structure) is only implied by the verb and the surrounding sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_testC
Run a JMeter test plan and return results
| Name | Required | Description | Default |
|---|---|---|---|
| testfile | Yes | Path to the .jmx test file | |
| outputdir | No | Output directory for results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It notes that running a test occurs and results are returned, but does not disclose side effects, execution duration, failure behavior, output format, or resource implications beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no fluff or redundant content. It is efficient and front-loaded, though it could include more usage context without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an execution tool with no annotations and no output schema, this description is incomplete. It omits details about expected results format, whether outputdir is required or optional in practice, how long execution may take, and what happens on test failure or invalid test files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters adequately. The description adds no additional parameter-level detail, such as how outputdir is used or what the return value contains, but it does not need to compensate much because the schema is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (Run), the resource (a JMeter test plan), and the outcome (return results). It is distinguishable from sibling tools like read_test_file or create_test_plan, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but does not indicate when to use it versus alternatives, nor what prerequisites or conditions apply. An agent must infer that this is meant for executing an already-created test plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_thread_groupB
Update thread group settings (threads, ramp-up, loops, duration)
| Name | Required | Description | Default |
|---|---|---|---|
| delay | No | Startup delay in seconds | |
| loops | No | Loop count (-1 for infinite) | |
| duration | No | Test duration in seconds | |
| rampTime | No | Ramp-up time in seconds | |
| testfile | Yes | Path to the .jmx file | |
| scheduler | No | Enable/disable scheduler | |
| numThreads | No | Number of threads (virtual users) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining behavior. It only says 'update' but does not disclose whether partial updates are supported, whether unspecified settings are reset or preserved, what side effects occur, or what the response looks like. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and resource and lists the most relevant settings. There is no wasted wording or redundant repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, no annotations, and no output schema, this description is too thin. It does not explain the required testfile parameter, partial-update semantics, scheduler behavior, or call outcome. An agent would still need to infer important operational details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description names a few settings (threads, ramp-up, loops, duration) but adds no new meaning beyond the schema; it also omits delay, scheduler, and testfile from its list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('update') and resource ('thread group settings') and lists the key configurable fields. It is distinct from sibling tools like create_test_plan or add_http_sampler, though it does not explicitly differentiate itself from all potential update-like tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for modifying an existing thread group's load profile, but it does not specify when to use this tool versus alternatives, nor does it mention prerequisites such as an existing test plan or that the testfile must reference a valid .jmx file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v1.0.0- First observed
add_assertion - First observed
add_csv_data_config - First observed
add_http_sampler - First observed
add_timer - First observed
create_test_plan - First observed
create_test_plan_from_api_source - First observed
create_test_plan_from_openapi - First observed
delete_element - First observed
generate_report - First observed
list_tests - First observed
read_test_file - First observed
run_test - First observed
update_thread_group
TDQS
Most tools have clearly distinct purposes, but the three create_test_plan variants overlap, especially create_test_plan_from_api_source with sourceType=openapi and create_test_plan_from_openapi. The explicit routing hint in the OpenAPI tool description helps, but an agent still faces ambiguity about which creation tool to use.
All tools follow a consistent snake_case verb_noun pattern, such as add_http_sampler, update_thread_group, and generate_report. Even the longer create_test_plan_from_* names stay predictable and readable.
Thirteen tools is within the appropriate range for a JMeter-focused server and covers creation, editing, execution, and reporting. The count is slightly higher than necessary because create_test_plan_from_openapi is largely redundant with create_test_plan_from_api_source.
The server covers the main JMeter workflow: create/read plans, add core elements, run tests, and generate reports. However, updates are limited to thread group settings; samplers, assertions, timers, and config elements can only be deleted and recreated, which is a notable gap for iterative test editing.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI access to Swagger by SmartBear.
An MCP server that provides bazaarvoic JOLT transformation capabilities.
An MCP server that provides access to Testiny projects, test cases and test runs
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Related MCP Servers
- FlicenseCqualityDmaintenanceA Model Context Protocol server that enables executing and interacting with JMeter tests through MCP-compatible clients like Claude Desktop, Cursor, and Windsurf.2-
- FlicenseCqualityDmaintenanceA Model Context Protocol server that enables execution of JMeter performance tests through AI assistants and MCP-compatible clients like Claude, Cursor, and Windsurf.2-
- AlicenseAqualityFmaintenanceMCP server for API test case generation from Swagger/OpenAPI specs. Parses Swagger 2.0 and OpenAPI 3.x, generates test cases across 8 categories (positive, negative, boundary, auth, security, idempotency, pagination, business logic), and exports to Postman, TestRail, Allure, k6, pytest, Gherkin, and CSV. Supports internal corporate APIs with auth headers. Auto-saves export files to your working di10142MIT
- AlicenseNot gradedqualityDmaintenanceA powerful MCP server for automated JMeter test generation and execution with Docker integration and comprehensive performance analysis.7761MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IAnjaniKr/jmeter-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server