Skip to content

MCP Server

Connect AI agents to Apache JMeter docs over MCP: search guides, lint JMX test plans, calculate workload sizing, and plan distributed clusters.

Difficulty
intermediate
Guide type
reference
Estimated read time
4 min read

Point Claude Code, Qwen Code, Cursor, or any MCP client at https://docs.jmeter.ai/api/mcp and your agent answers JMeter questions grounded in this documentation, with a source link for every answer. Free, no API key, no signup. The on-site Ask AI chat uses these same tools in-process.

Endpoint: https://docs.jmeter.ai/api/mcp (Streamable HTTP, stateless)

Add to VS CodeAdd to Cursor

Fair use: 120 requests/min per IP. Exceeding it returns HTTP 429 with a Retry-After header โ€” well-behaved clients back off automatically.

ToolCategoryDescription
search_jmeter_docsKnowledgeBM25 semantic search across documentation, user manual, and guides
get_jmeter_pageKnowledgeFetch full markdown text of any documentation page
convert_curl_or_har_to_jmxGeneratorConvert cURL commands and HAR files to valid JMX XML (GET, POST, QUERY, etc.)
convert_openapi_to_jmxGeneratorConvert OpenAPI 3.x or Swagger 2.0 JSON/YAML into a JMeter test plan
lint_jmx_snippetDiagnosticsScan JMX XML for anti-patterns and return a structural inventory
calculate_workload_modelCalculatorLittleโ€™s Law concurrency, pacing, ramp-up schedules, and JVM heap sizing
plan_distributed_testingTopologyPinned RMI ports, user.properties, firewall rules, and Docker manifests
tune_linux_osSystemLinux sysctl.conf, limits.conf, systemd, and Docker tuning parameters
lookup_jmeter_propertyReferenceSearch curated tuning properties with defaults and config locations
get_jsr223_recipeCodeProduction Groovy recipes (JWT decoding, HMAC signing, dynamic headers)
lint_groovy_scriptCodeReview JSR223 Groovy pitfalls and generate ready-to-paste element XML
lookup_error_playbookDiagnosticsInstant remediation and OS/JVM fixes for common runtime exceptions
triage_errorsDiagnosticsBatch-map a runโ€™s distinct failure signatures to error playbooks
lookup_componentReferenceDedicated reference page for one JMeter component (properties, defaults, related guides)
lookup_functionReferenceDedicated reference page for one built-in JMeter function (syntax, parameters, examples)

Search the full documentation: user manual, topic guides, error playbooks, release notes, and interactive tool pages. Returns ranked pages with URLs and snippets.

{ "query": "correlation dynamic values" }

Read one page in full markdown. Accepts the complete URL or a bare path like topics/api-load-testing.

{ "url": "topics/api-load-testing" }

Convert one or more cURL commands or HAR (HTTP Archive 1.2) JSON files into a schema-valid, ready-to-run Apache JMeter 5.6.3 .jmx XML test plan. Supports all standard HTTP verbs plus RFC 9838 QUERY method with body payloads, Bearer token extraction, and timeouts.

{
"input": "curl -X QUERY https://api.example.com/v1/search -H 'Content-Type: application/json' -H 'Authorization: Bearer my-jwt' -d '{\"query\":\"loadtest\"}'",
"threads": 50,
"rampUpSeconds": 10,
"parameterizeHost": true,
"parameterizeAuth": true
}

Convert an OpenAPI 3.0/3.1 or Swagger 2.0 document in JSON or YAML into a ready-to-run JMeter 5.6.3 test plan. The tool samples request bodies from schemas, turns path and security values into JMeter variables, and supports method, tag, server, and deprecated-operation filters.

{
"input": "{\"openapi\":\"3.0.3\",\"info\":{\"title\":\"Orders API\",\"version\":\"1\"},\"servers\":[{\"url\":\"https://api.example.com\"}],\"paths\":{\"/orders\":{\"get\":{\"responses\":{\"200\":{\"description\":\"OK\"}}}}}}",
"threads": 25,
"tags": ["orders"]
}

Validate a JMX XML snippet or test plan configuration up to 1 MB against performance best practices and anti-patterns (active GUI listeners, legacy BeanShell, uncompiled JSR223, missing timeouts, zero ramp-up). The response also includes a structure inventory with thread groups, sampler/listener/assertion counts, common config elements, plugin classes, and the JMeter version.

{ "jmxContent": "<HTTPSamplerProxy testclass=\"HTTPSamplerProxy\" ...>" }

Compute required thread concurrency, pacing delays, ramp-up schedules, and JVM heap recommendations based on target RPS/TPS and SLA response times using Littleโ€™s Law.

{ "targetRps": 500, "avgResponseTimeMs": 250, "safetyFactor": 1.25 }

Generate Master-Worker RMI port assignments, user.properties, CLI commands, firewall/security group rules, and Docker Compose manifests for distributed load testing.

{
"controllerIp": "10.0.0.5",
"workerIps": "10.0.1.10, 10.0.1.11, 10.0.1.12",
"serverPort": 1099,
"serverRmiLocalPort": 50000,
"clientRmiLocalPort": 60000
}

Generate Linux kernel (sysctl.conf), file descriptor (limits.conf), systemd, and Docker/K8s configurations tuned for high-concurrency JMeter load testing.

{
"concurrency": 25000,
"ramGb": 32,
"trafficType": "http_churn",
"targetDistro": "ubuntu_debian",
"role": "injector"
}

Search or inspect curated JMeter tuning properties (HTTP client pool, distributed testing RMI ports, InfluxDB backend listener, result formatting, engine settings).

{ "query": "httpclient4.idletimeout" }

Fetch production-ready, performant Groovy scripts for JMeter JSR223 elements (JWT decoding & expiry, HMAC-SHA256 signing, dynamic header injection, nested JSON parsing, thread-safe CSV logging).

{ "query": "jwt" }

Statically review a user-provided Groovy script for JMeter-specific performance pitfalls and bindings unavailable to the selected JSR223 element. By default, the response also contains compilation-cached JSR223 element XML ready to paste into a test plan.

{
"code": "vars.put('elapsed', prev.getTime().toString())",
"elementType": "JSR223PostProcessor",
"includeJmxElement": true
}

Get instant root cause analysis, OS/JVM tuning parameters, and step-by-step remediation for common JMeter and JVM exceptions (BindException, SocketTimeoutException, OutOfMemoryError, NoHttpResponseException, etc.). When keyword matching misses, the query is classified semantically against all error playbooks via classifier.dev (public keyless calls are not stored); pass classifierApiKey to use your own classifier.dev quota.

{ "query": "bindexception" }

Batch-triage a runโ€™s distinct failure signatures (ideally sampler | response code | response message rows) into the matching error playbooks with per-playbook sample counts and share. Error text is sent to classifier.dev for zero-shot classification โ€” public keyless calls are not stored, and obvious secrets (Bearer tokens, passwords, JWTs) are redacted before sending.

{
"errors": [
{ "text": "Checkout | Non HTTP response code: java.net.SocketTimeoutException | Read timed out", "count": 1240 },
{ "text": "Login | 401 | Unauthorized", "count": 87 }
],
"minConfidence": 0.7
}

Find the dedicated reference page for one JMeter test plan component and return its full markdown (properties, defaults, related guides).

{ "name": "HTTP Request" }

Find the dedicated reference page for one built-in JMeter function and return its full markdown (syntax, parameters, examples).

{ "name": "__time" }
Terminal window
claude mcp add jmeter-docs https://docs.jmeter.ai/api/mcp --transport http --scope user

--scope user registers the server for all your projects, no matter which folder you run the command from. Restart Claude Code after adding it, then verify with /mcp.

Add this to your MCP configuration file:

{
"mcpServers": {
"jmeter-docs": {
"url": "https://docs.jmeter.ai/api/mcp"
}
}
}
Terminal window
curl -X POST https://docs.jmeter.ai/api/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": { "name": "curl", "version": "1.0.0" }
}
}'
  • Grounded answers. Responses come from the actual JMeter documentation, not from stale model memory.
  • Verifiable sources. Every result carries the docs.jmeter.ai URL so you can check the advice.
  • Always current. The index rebuilds when the docs sync from apache/jmeter, so agents see new releases automatically.
  • Zero cost. Hosted on the community docs site with no rate-limited API key to manage.

Prefer a chat interface? Use the Ask AI button on any page, or start with the JMeter for Beginners guide.

On this page