JJ

juliodelimas/jmeter-mcp-server

Developer tools

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기

94 stars 17 forks 품질 82 트렌드 23MIT

Stdio MCP 서버 구축, 실행 및 JMeter 테스트 계획에 대한 보고서 읽기

개요

Apache JMeter - 빌드 테스트 계획, 실제 부하 테스트를 실행하고, .jmx XML 또는 GUI를 열지 않고 실제 결과를 다시 읽는다. ... 실행중인 JMeter 테스트 및 실제 보고서로 회전하여 Typed 도구는 MCP 클라이언트 (Claude Code, Claude Desktop 등)를 호출합니다. 그것은 할 수 있습니다 - .jmx는 XML이며 가능한 모델은 JMeter 테스트 계획의 많음을 볼 수 있습니다. 문제는 실패하는 방법이다 : JMeter의 형식은 파마일, easy-to-misremember 세부 사항의 수십와 함께 해시 트리 - 정확한 guiclass/testclass 쌍, 자신의 GUI 라벨과 일치하지 않는 속성 이름 (ThreadGroup.num threads는 stringProp, intProp), assertion 일치 유형에 대한 정수 비트 마스크, sibling 태그와 엄격한 부모 / 어린이 쌍. 각자 검사의 아무도. 잘못된 값은 여전히 유효한 생산, 로드 가능한 XML 그냥 조용히 잘못된 일을. 즉, hypothetical가 아닙니다. 이 프로젝트를 시작했습니다.

개요(AI 번역)

Apache JMeter를 통해 LLM Real, deterministic control을 제공합니다. 테스트 계획을 구축하고, 실제 부하 테스트를 실행하고, 이제 .jmx] XML을 작성하지 않고 실제 결과를 다시 읽거나 GUI를 열 수 있습니다.

… 실행중인 JMeter 테스트 및 실제 보고서로 회전하여 Typed 도구는 MCP 클라이언트 (Claude Code, Claude Desktop 등)를 호출합니다.

왜 LLM을 묻지 않고 .jmx 자체를 써야 하나요?

그것은 할 수 있습니다 - .jmx 단지 XML, 어떤 가능한 모델은 JMeter 테스트 계획의 많았다. 문제는 how 그것은 실패합니다: JMeter의 체재는 hashTree] fragile의 수십, easy-to-misremember 세부사항 — 정확한 guiclass/testclass] 쌍, 그들의 GUI 상표도 일치하지 않는 재산 이름 ([T6]]는 stringProp], 아닙니다 intProp]), assertions를 위한 integer bitmasks, [T6]]를 가진 엄격한 일치시키는 꼬리표. 각자 검사의 아무도. 잘못된 값은 여전히 유효한 생산, 로드 가능한 XML 그냥 조용히 잘못된 일을.

즉, hypothetical가 아닙니다. 이 프로젝트를 시작했습니다. 컨트롤러의 초기 버전은 useExpression]]라는 속성을 생성했습니다 true], 이는 "예, 내 상태를 평가합니다.

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요.

README

원문 README의 일부입니다. 원문 보기.

jmeter-mcp-server

Give an LLM real, deterministic control over Apache JMeter — build test plans, run real load tests, and read back real results, without ever hand-writing .jmx XML or opening the GUI.

"Load test my API: 20 users hitting POST /orders for 2 minutes,
 5% think time, fail anything over 800ms"

…turns into a running JMeter test and a real report, through typed tool calls an MCP client (Claude Code, Claude Desktop, etc.) makes directly.

Why not just ask an LLM to write the .jmx itself?

It can — a .jmx is just XML, and any capable model has seen plenty of JMeter test plans. The problem is how it fails: JMeter’s format is a hashTree with dozens of fragile, easy-to-misremember details — exact guiclass/testclass pairs, property names that don’t match their GUI label (ThreadGroup.num_threads is a stringProp, not an intProp), integer bitmasks for assertion match types, strict parent/child pairing with sibling `` tags. None of it is self-checking. A wrong value still produces valid, loadable XML that just quietly does the wrong thing.

That’s not hypothetical — it happened building this project. An early version of the If Controller generated a property called useExpression set to true, which reads like “yes, evaluate my condition.” The real JMeter source does the opposite: useExpression=true means don’t evaluate it as an expression — just check if the string is literally "true". Every non-trivial condition silently, permanently failed. No error, no warning — the child sampler just never ran. It only surfaced by actually executing the generated plan against real JMeter and noticing a sample count of zero.

That’s the whole case for this server in one story: an LLM regenerating XML from memory re-risks that exact mistake on every single request. This server encodes the correct shape once, in a serializer (and a matching parser for the reverse direction) checked against real JMeter source and bundled examples, exercised by 166 automated tests including real JMeter runs — and exposes it as typed tools instead. Concretely:

  • Correctness through one tested code path, not regenerated-from-memory XML every time.
GitHub에서 전체 README 보기

설치

npx -y jmeter-mcp-server
MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →

설정

{ "mcpServers": { "jmeter": { "command": "npx", "args": ["-y", "jmeter-mcp-server"], "env": { "JMETER_HOME": "/opt/homebrew/opt/jmeter/libexec" } } } }