Apache JMeter community documentation, conversion tools, linters, and calculators for AI agents.
This MCP server provides access to Apache JMeter community documentation, along with conversion tools, linters, and calculators intended for AI agents. The project is documented as “JMeter Docs,” built with Astro + Starlight, and references the docs site at docs.jmeter.ai.
🛠️ Key Features
Community-maintained Apache JMeter documentation
Conversion tools
Linters
Calculators for AI agents
Tool count: 10
🚀 Use Cases
API testing support using JMeter documentation
Load, performance, and stress testing workflows
JMeter scripting and documentation lookups
JMeter-related plugin guidance and tooling
⚡ Developer Benefits
Uses Groovy and Java in the JMeter ecosystem
Documentation-focused resources for developers
Topics include JMeter Docker and JMeter scripting
⚠️ Limitations
Information available here is limited to the provided description, topics, and excerpt; specific MCP tools and endpoints are not included.
Search the Apache JMeter documentation on docs.jmeter.ai. Returns the most relevant pages with titles, URLs, and snippets. Use for any question about JMeter test plans, components, functions, properties, distributed testing, reports, or troubleshooting.
Parameters1
query
string
required
Search query, e.g. "how to correlate dynamic values" or "thread group ramp up"
Raw schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Search query, e.g. \"how to correlate dynamic values\" or \"thread group ramp up\""
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}
get_jmeter_page
Fetch the full markdown text of one docs.jmeter.ai page. Accepts the page URL (e.g. https://docs.jmeter.ai/topics/api-load-testing/) or a bare path (e.g. topics/api-load-testing).
Parameters1
url
string
required
Page URL or path, e.g. https://docs.jmeter.ai/user-manual/functions/ or user-manual/functions
Raw schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"description": "Page URL or path, e.g. https://docs.jmeter.ai/user-manual/functions/ or user-manual/functions"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}
lint_jmx_snippet
Validate a JMeter test plan XML string or snippet against best practices and performance anti-patterns (e.g., active GUI listeners, legacy BeanShell, uncompiled JSR223, missing timeouts, zero ramp-up, Thread.sleep in scripts).
Parameters1
jmxContent
string
required
JMX XML string or test plan snippet to analyze.
Raw schema
{
"type": "object",
"properties": {
"jmxContent": {
"type": "string",
"minLength": 1,
"description": "JMX XML string or test plan snippet to analyze."
}
},
"required": [
"jmxContent"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}
calculate_workload_model
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.
Parameters5
targetRps
number
required
Target throughput in requests / transactions per second (RPS/TPS).
avgResponseTimeMs
number
required
Expected average response time in milliseconds.
thinkTimeMs
number
optional
Think time / user pause between requests in milliseconds (default: 0).
testDurationMinutes
number
optional
Steady-state test duration in minutes (default: 10).
Filter by keyword or topic (e.g. "jwt", "hmac", "header", "json", "csv", "logging"). If omitted, returns all recipes.
Raw schema
{
"type": "object",
"properties": {
"query": {
"description": "Filter by keyword or topic (e.g. \"jwt\", \"hmac\", \"header\", \"json\", \"csv\", \"logging\"). If omitted, returns all recipes.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}
lookup_error_playbook
Get immediate root causes, OS/JVM config fixes, and remediation steps for common JMeter exceptions (e.g. "BindException", "SocketTimeoutException", "OutOfMemoryError", "NoHttpResponseException", "SSLHandshakeException", "401/403 after recording").
Parameters1
query
string
required
Error message, exception name, or status (e.g. "bindexception", "heap", "timeout", "401").
Generate Master-Worker RMI port assignments, user.properties, CLI commands, firewall/security group rules, and Docker Compose manifests for distributed load testing.
Parameters8
controllerIp
string
optional
Controller / Master node IP or hostname (default: "10.0.0.5").
workerIps
string
required
Comma or space-separated list of worker / injector IP addresses (e.g. "10.0.1.10, 10.0.1.11, 10.0.1.12").
serverPort
integer
optional
RMI registry port on workers (default: 1099).
serverRmiLocalPort
integer
optional
Pinned worker engine port (default: 50000).
clientRmiLocalPort
integer
optional
Pinned controller callback port (default: 60000).
disableSsl
boolean
optional
Disable RMI SSL (default: false). Only for isolated labs.
Convert one or more cURL commands or HAR (HTTP Archive 1.2) JSON traces into a valid, production-ready Apache JMeter .jmx test plan XML with HTTP Request Defaults, Header Managers, Cookie Managers, timeouts, and assertions. Supports GET, POST, PUT, DELETE, PATCH, and RFC 9838 QUERY methods.
Parameters11
input
string
required
cURL command string (single, multiline, or batch) or HAR 1.2 JSON text (max 1MB).
testPlanName
string
optional
Name of the JMeter Test Plan (default: "cURL Converted Plan").
threads
integer
optional
Thread concurrency / virtual users (default: 1).
rampUpSeconds
integer
optional
Ramp-up time in seconds (default: 1).
durationSeconds
integer
optional
Test duration in seconds (0 = disabled, default: 0).
loopCount
integer
optional
Loop count (-1 for infinite, default: 1).
parameterizeHost
boolean
optional
Extract common host into HTTP Request Defaults and ${BASE_URL} (default: true).
parameterizeAuth
boolean
optional
Extract Bearer token into ${AUTH_TOKEN} variable (default: true).
Disclaimer: This is an independent community resource and is not affiliated with the Apache Software Foundation.
Features
Full-text search powered by Pagefind
Dark mode with system preference detection
Organized sidebar: User Manual, Reference, Extending, Legal
LLM-friendly text exports (llms.txt / llms-full.txt)
Custom landing page with terminal hero, metrics strip, and bento grid
SEO optimized with structured data (FAQ, HowTo schemas)
Getting Started
Prerequisites
Node.js 18+
npm
Installation
bash
npm install
Development
bash
npm run dev
Build
bash
npm run build
Preview Production Build
bash
npm run preview
Scripts
Script
Description
npm run dev
Start dev server
npm run build
Generate llms-full.txt then build the site
npm run preview
Preview the production build locally
npm test
Run unit tests
npm run test:watch
Run tests in watch mode
npm run test:coverage
Run tests with coverage report
npm run convert
Convert upstream JMeter docs to Starlight format
npm run generate-llms-full
Generate LLM-friendly text export
Markdown for AI agents
Every prerendered docs page (everything except the site homepage) has a
Markdown twin: append index.md to a page URL
(e.g. https://docs.jmeter.ai/user-manual/best-practices/index.md), or
request the page URL with an Accept: text/markdown header and the CDN
rewrites the request to the .md file. Browsers are unaffected — the
rule only fires when Accept lacks text/html.
The index.md files are generated at build time by
scripts/generate-page-markdown.mjs (part of pnpm build), served with
Content-Type: text/markdown via public/_headers, and the
Accept: text/markdown mapping is a Cloudflare zone URL Rewrite Rule
provisioned once with:
The index.md files are produced by the build script — the production
build command must run pnpm run build (not a bare astro build),
otherwise the Markdown links 404; the generator exits non-zero if it
writes nothing.
See scripts/setup-markdown-rule.mjs and public/llms.txt for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (git checkout -b feature/amazing-feature)
Push to the branch (git push origin feature/amazing-feature)
Open a Pull Request
Important: MDX files are generated
The src/content/docs/**/*.mdx files are generated artifacts produced by
tools/convert.mjs from the upstream Apache JMeterxdocs/ XML. A nightly workflow (.github/workflows/sync-upstream.yml) regenerates
them and opens a sync PR.
Direct edits to MDX files will be overwritten by the next sync run. To make a
lasting change to documentation content:
Prefer fixing the converter in tools/convert.mjs so the change applies to all
generated pages and survives syncs.
Or upstream the change to apache/jmeterxdocs/ so it flows down naturally.
Or open an issue describing the desired change so maintainers can decide the
best path.
Changes to non-generated files (components, styles, tools, tests, config) are not
affected by the sync and can be edited directly.
License
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
code
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Apache JMeter is a trademark of The Apache Software Foundation. This project is not endorsed by or affiliated with the ASF.