使用说明
JMeter Architect MCP服务器
一个模型上下文协议(MCP)服务器,使AI助手能够以编程方式构建和执行JMeter测试计划。
目录
特性
- 创建JMeter测试计划:初始化新
.jmx具有适当XML结构的文件 - 配置线程组:使用可自定义的线程数、启动时间和循环数设置虚拟用户
- 添加HTTP采样器:使用域、路径、方法和参数配置HTTP请求
- 管理邮件头:为身份验证令牌、内容类型等添加HTTP标头管理器。
- 添加听众:包括摘要报告、汇总报告或查看结果树
- 配置计时器:在请求之间添加恒定或随机延迟
- 添加断言:验证响应数据、状态代码或标头
- 执行测试:在非GUI模式下运行测试计划并获取结果
先决条件
在设置JMeter MCP服务器之前,请确保您已经:
- Node.js 18+ - 下载Node.js
- VS Code 使用GitHub Copilot扩展
- Apache JMeter (可选,仅适用于
jmeter_run_test工具)- 下载JMeter
安装
-
克隆存储库:
git clone https://github.com/aravindksk7/Jmeter-MCP.git cd Jmeter-MCP -
安装依赖项:
npm install -
构建项目:
npm run build -
注意完整路径 到
dist/index.js-您将需要它来配置VS代码。
VS代码设置
步骤1:配置MCP设置
打开VS代码设置并配置MCP服务器。您可以通过两种方式做到这一点:
选项A:使用VS代码设置UI
- 打开VS代码
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS) - 键入“首选项:打开用户设置(JSON)”并选择它
- 添加MCP配置(见下面的JSON)
选项B:直接编辑settings.json
导航到您的VS代码设置文件:
- 视窗:
%APPDATA%\Code\User\settings.json - macOS:
~/Library/Application Support/Code/User/settings.json - Linux:
~/.config/Code/User/settings.json
添加以下配置:
Windows配置
{
"github.copilot.chat.mcpServers": {
"jmeter-architect": {
"command": "node",
"args": [
"C:\\Users\\YourUsername\\path\\to\\Jmeter-MCP\\dist\\index.js"
],
"env": {
"PATH": "%PATH%;C:\\apache-jmeter\\bin"
}
}
}
}
macOS配置
{
"github.copilot.chat.mcpServers": {
"jmeter-architect": {
"command": "node",
"args": [
"/Users/YourUsername/path/to/Jmeter-MCP/dist/index.js"
],
"env": {
"PATH": "/usr/local/bin:/usr/bin:/bin:/opt/homebrew/bin:/path/to/apache-jmeter/bin"
}
}
}
}
Linux配置
{
"github.copilot.chat.mcpServers": {
"jmeter-architect": {
"command": "node",
"args": [
"/home/YourUsername/path/to/Jmeter-MCP/dist/index.js"
],
"env": {
"PATH": "/usr/local/bin:/usr/bin:/bin:/opt/jmeter/bin"
}
}
}
}
重要:替换
YourUsername以及符合您实际值的路径。使用绝对路径,而不是相对路径。
步骤2:重新启动VS代码
添加配置后:
- 保存
settings.json文件 - 完全关闭VS代码
- 重新打开VS代码
步骤3:验证服务器连接
- 打开GitHub Copilot聊天(
Ctrl+Shift+I或Cmd+Shift+I) - 点击 工具图标 聊天面板中的(扳手/锤子)
- 你应该看看 jmeter建筑师 列出了8个可用工具:
jmeter_init_planjmeter_add_thread_groupjmeter_add_samplerjmeter_add_headerjmeter_add_listenerjmeter_add_timerjmeter_add_assertionjmeter_run_test
如果服务器显示绿色指示灯,则表示您已准备好使用它!
可用工具
| 工具 | 说明 |
|---|---|
jmeter_init_plan |
创建一个新的空JMX测试计划文件 |
jmeter_add_thread_group |
添加线程组以定义虚拟用户 |
jmeter_add_sampler |
将HTTP采样器(请求)添加到测试计划中 |
jmeter_add_header |
添加HTTP标头管理器 |
jmeter_add_listener |
添加结果侦听器以收集测试数据 |
jmeter_add_timer |
为请求之间的延迟添加计时器 |
jmeter_add_assertion |
添加响应断言以验证响应 |
jmeter_run_test |
在非GUI模式下执行JMeter测试计划 |
刀具参数参考
jmeter_init_plan
创建一个新的空JMX测试计划文件。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要创建的.jmx文件的名称 |
jmeter_add_thread_group
添加线程组以定义虚拟用户。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要修改的.jmx文件 |
num_threads |
编号 | ✅ | 虚拟用户数量 |
ramp_time |
编号 | ✅ | 加速时间(秒) |
loops |
编号 | ✅ | 迭代次数(-1表示无限) |
jmeter_add_sampler
将HTTP采样器(请求)添加到测试计划中。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要修改的.jmx文件 |
domain |
string | ✅ | 服务器域(例如“api.example.com”) |
path |
string | ✅ | 请求路径(例如,“/api/login”) |
method |
string | ✅ | HTTP方法(“GET”、“POST”等) |
parameters |
对象 | ✅ | 请求参数作为键值对 |
jmeter_add_header
添加HTTP标头管理器。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要修改的.jmx文件 |
headers |
对象 | ✅ | 标头作为键值对 |
jmeter_add_listener
添加结果侦听器以收集测试数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要修改的.jmx文件 |
listener_type |
string | ✅ | “摘要”、“聚合”或“结果树”之一 |
jmeter_add_timer
为请求之间的延迟添加计时器。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要修改的.jmx文件 |
delay_ms |
编号 | ✅ | 恒定延迟(毫秒) |
random_delay_ms |
编号 | ❌ | 随机附加延迟 |
jmeter_add_assertion
添加响应断言以验证响应。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要修改的.jmx文件 |
test_field |
string | ✅ | 'response_data、response_code或response_headers |
pattern |
string | ✅ | 要匹配的图案 |
is_regex |
boolean | ❌ | 模式是否为正则表达式(默认值:false) |
jmeter_run_test
在非GUI模式下执行JMeter测试计划。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
filename |
string | ✅ | 要执行的.jmx文件 |
output_file |
string | ❌ | 结果文件的路径 |
使用示例
使用GitHub Copilot聊天
配置后,您可以通过GitHub Copilot Chat中的自然语言与JMeter MCP服务器进行交互。以下是一些示例提示:
创建简单的负载测试
提示:
Create a JMeter test plan called "api-test.jmx" with 50 users,
10 second ramp-up, running 5 iterations. Test the endpoint
GET https://jsonplaceholder.typicode.com/posts and add a summary report.
Copilot将做什么:
- 呼叫
jmeter_init_plan创建测试文件 - 呼叫
jmeter_add_thread_group50个线程,10秒加速,5个循环 - 呼叫
jmeter_add_sampler对于GET请求 - 呼叫
jmeter_add_listener附总结报告
基本负载测试
为REST API创建一个简单的负载测试:
User: Create a load test for https://api.example.com/users with 100 concurrent users
Copilot will execute:
├── jmeter_init_plan(filename: "load-test.jmx")
├── jmeter_add_thread_group(filename: "load-test.jmx", num_threads: 100, ramp_time: 30, loops: 10)
├── jmeter_add_sampler(filename: "load-test.jmx", domain: "api.example.com", path: "/users", method: "GET", parameters: {})
└── jmeter_add_listener(filename: "load-test.jmx", listener_type: "summary")
API认证测试
使用标头测试经过身份验证的API终结点:
User: Create a test for our authenticated API. Use Bearer token authentication,
test POST /api/v1/orders with 20 users, and verify we get 200 response codes.
Copilot will execute:
├── jmeter_init_plan(filename: "auth-api-test.jmx")
├── jmeter_add_thread_group(filename: "auth-api-test.jmx", num_threads: 20, ramp_time: 10, loops: 5)
├── jmeter_add_header(filename: "auth-api-test.jmx", headers: {
│ "Authorization": "Bearer ${token}",
│ "Content-Type": "application/json"
│ })
├── jmeter_add_sampler(filename: "auth-api-test.jmx", domain: "api.example.com",
│ path: "/api/v1/orders", method: "POST",
│ parameters: {"item": "product-123", "quantity": "1"})
├── jmeter_add_assertion(filename: "auth-api-test.jmx", test_field: "response_code", pattern: "200")
└── jmeter_add_listener(filename: "auth-api-test.jmx", listener_type: "aggregate")
带有断言的压力测试
用思考时间和断言创建一个全面的压力测试:
User: Build a stress test for our checkout API with these requirements:
- 200 concurrent users over 60 seconds
- Random delay of 500-1500ms between requests
- Test POST /checkout endpoint
- Assert response contains "success"
- Include both summary and aggregate reports
Copilot will execute:
├── jmeter_init_plan(filename: "stress-test.jmx")
├── jmeter_add_thread_group(filename: "stress-test.jmx", num_threads: 200, ramp_time: 60, loops: -1)
├── jmeter_add_header(filename: "stress-test.jmx", headers: {"Content-Type": "application/json"})
├── jmeter_add_timer(filename: "stress-test.jmx", delay_ms: 500, random_delay_ms: 1000)
├── jmeter_add_sampler(filename: "stress-test.jmx", domain: "api.example.com",
│ path: "/checkout", method: "POST", parameters: {"cart_id": "${cartId}"})
├── jmeter_add_assertion(filename: "stress-test.jmx", test_field: "response_data",
│ pattern: "success", is_regex: false)
├── jmeter_add_listener(filename: "stress-test.jmx", listener_type: "summary")
└── jmeter_add_listener(filename: "stress-test.jmx", listener_type: "aggregate")
运行测试
创建测试计划后,您可以运行它:
User: Run the stress-test.jmx test plan
Copilot will execute:
└── jmeter_run_test(filename: "stress-test.jmx", output_file: "results.jtl")
备注:The
jmeter_run_test该工具需要安装Apache JMeter并在您的PATH中。
故障排除
服务器未出现在VS代码中
- 检查路径:确保路径
dist/index.js绝对正确 - 重建项目:运行
npm run build再次 - 检查settings.json语法:确保有效的JSON(没有尾随逗号)
- 重新启动VS代码:完全关闭并重新打开
“找不到命令:节点”
确保Node.js已安装并在系统PATH中:
node --version # Should show v18 or higher
JMX文件未创建
- 检查工作目录是否具有写入权限
- 确保文件名以结尾
.jmx - 检查VS Code的输出面板是否有错误消息
运行测试时“jmeter:找不到命令”
这 jmeter_run_test 该工具需要Apache JMeter:
- 下载并安装 Apache JMeter
- 添加JMeter
bin目录到您的PATH - 更新
env.PATH在VS代码设置中
服务器显示红色/已断开连接
- 检查VS代码输出面板(视图→ 输出→ 选择“MCP”或“GitHub Copilot”)
- 在服务器启动时查找错误消息
- 尝试手动运行服务器进行调试:
node dist/index.js
工具无法按预期工作
- 确保使用正确的参数类型调用工具
- 检查是否提供了所需的参数
- 验证.jmx文件名在调用之间是否一致
Claude桌面配置
如果您使用的是Claude Desktop而不是VS Code,请将其添加到您的 claude_desktop_config.json:
视窗
{
"mcpServers": {
"jmeter-architect": {
"command": "node",
"args": ["C:\\path\\to\\Jmeter-MCP\\dist\\index.js"],
"env": {
"PATH": "%PATH%;C:\\apache-jmeter\\bin"
}
}
}
}
macOS
配置位置: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"jmeter-architect": {
"command": "node",
"args": ["/path/to/Jmeter-MCP/dist/index.js"],
"env": {
"PATH": "/usr/local/bin:/opt/homebrew/bin:/path/to/jmeter/bin"
}
}
}
}
贡献
欢迎投稿!请随时提交拉取请求。
许可证
ISC许可证-请参阅 许可证 文件以获取详细信息。
作者
阿拉温德克7
Made with ❤️ for the performance testing community
