使用说明
🎯 JMeter MCP服务器
一个强大的模型上下文协议(MCP)服务器,用于通过Docker集成和全面的性能分析自动生成和执行JMeter测试。
🌟 概述
JMeter MCP Server是一个简化的、生产就绪的测试解决方案,与MCP兼容的客户端(如Claude Desktop、VS Code)集成,生成复杂的JMeter测试计划,并通过Docker自动执行,并进行全面的性能分析。
🚀 主要特点:
- 2基本工具:简化以实现最高效率
- 完全Docker自动化:无需人工干预
- 多格式报告:HTML、Markdown和JSON输出
- 交互式可视化:Chart.js驱动的性能图表
- 专业分析:趋势检测和瓶颈识别
- API和UI测试:支持API和web界面测试
- 实时执行:装有实时结果的集装箱JMeter
🛠️ 核心工具
1. 🚀 generate_jmeter_script -高级测试生成
创建具有现代功能的全面JMeter测试计划:
特征:
- 具有可配置模式的多线程负载模拟
- 数据驱动测试的CSV数据参数化
- 响应关联和提取(JSON路径、正则表达式)
- 多种定时器类型和真实的负载模式
- 自定义标头、身份验证和会话管理
- 响应断言和全面验证
- 自动生成文件
output/目录
例子:
{
"testName": "API Performance Test",
"baseUrl": "https://api.example.com",
"threadGroup": {
"numThreads": 50,
"rampUpTime": 120,
"loops": 10
},
"requests": [
{
"name": "Login",
"method": "POST",
"path": "/auth/login",
"headers": { "Content-Type": "application/json" },
"body": "{\"username\":\"${username}\",\"password\":\"${password}\"}",
"extractors": [
{
"variableName": "authToken",
"jsonPath": "$.token"
}
],
"assertions": [
{
"type": "responseCode",
"value": "200"
}
]
}
],
"csvDataSet": {
"fileName": "users.csv",
"variableNames": "username,password",
"delimiter": ","
}
}
2. 🐳 execute_jmeter_script -Docker执行引擎
在容器化环境中自动执行JMeter测试,并进行全面分析:
特征:
- Docker自动化:用途
justb4/jmeter:latest用于一致执行 - 数据载体安装:主机和容器之间无缝的数据交换
- 资源管理:可配置的CPU和内存限制
- 性能分析:多维性能指标
- HTML报告:带有Chart.js可视化的交互式仪表板
- 趋势分析:自动瓶颈检测和建议
- 多种格式:HTML、Markdown和JSON报告
例子:
{
"jmxFile": "API_Performance_Test.jmx",
"generateReports": true,
"resourceAnalysis": true,
"cpuLimit": "2",
"maxMemory": "2g"
}
📊 性能分析功能
执行引擎提供全面的性能分析:
🎯 关键指标
- 响应时间统计(最小值、最大值、平均值、百分位数)
- 吞吐量分析(请求/秒,字节/秒)
- 错误率跟踪和分类
- 资源利用监控
- 负载模式分析
📈 交互式报告
- HTML仪表板:使用Chart.js的交互式图表
- 趋势分析:随时间变化的性能趋势
- 瓶颈检测:自动问题识别
- 建议:基于AI的优化建议
- 原始数据:用于自定义分析的JTL文件
🎨 可视化类型
- 随时间变化的响应时间折线图
- 吞吐量指标的条形图
- 用于误差分布的饼图
- 响应时间分布直方图
⚡ 快速开始
🖥️ 安装
# Clone the repository
git clone https://github.com/chandanvars/jmeter-mcp-server.git
cd jmeter-mcp-server
# Install dependencies
npm install
# Start the MCP server
npm start
🐳 Docker要求
确保Docker已安装并在您的系统上运行:
# Verify Docker installation
docker --version
docker pull justb4/jmeter:latest
🚀 基本用法
生成JMeter测试:
# Using the MCP tool
generate_jmeter_script({
"testName": "API Load Test",
"baseUrl": "https://httpbin.org",
"requests": [
{
"name": "Get Request",
"method": "GET",
"path": "/get"
}
]
})
执行测试:
# Using the MCP tool
execute_jmeter_script({
"jmxFile": "API_Load_Test.jmx",
"generateReports": true
})
🏗️ 建筑
graph TB
subgraph "User Layer"
USER[👤 User]
CLAUDE[🤖 Claude Desktop]
VSCODE[📝 VS Code]
API[🔗 API Client]
end
subgraph "MCP Server"
SERVER[🏗️ MCP Server]
TOOL1[⚡ generate_jmeter_script]
TOOL2[🐳 execute_jmeter_script]
HANDLER[🎯 JMeter Handler]
end
subgraph "Docker Engine"
DOCKER[🐳 Docker]
JMETER[⚙️ JMeter Runtime]
VOLUMES[🔗 Volume Mounts]
end
subgraph "Analysis Engine"
PARSER[📊 JTL Parser]
ANALYZER[📈 Stats Analyzer]
GENERATOR[📋 Report Generator]
end
subgraph "Report Outputs"
HTML[🌐 HTML Report]
MD[📝 Markdown]
JSON[📊 JSON Data]
DASHBOARD[📈 JMeter Dashboard]
end
USER --> SERVER
SERVER --> TOOL1
SERVER --> TOOL2
TOOL2 --> DOCKER
DOCKER --> JMETER
JMETER --> PARSER
PARSER --> ANALYZER
ANALYZER --> GENERATOR
GENERATOR --> HTML
GENERATOR --> MD
GENERATOR --> JSON
JMETER --> DASHBOARD
📁 项目结构
jmeter-mcp-server/
├── 📁 src/ # Source code
│ ├── 🚀 index.js # MCP server entry point
│ ├── 📁 handlers/ # Request handlers
│ │ └── 🎯 jmeterHandler.js # Core JMeter logic
│ └── 📁 utils/ # Utility functions
│ ├── 📂 fileWriter.js # File operations
│ └── 📝 promptGenerator.js # Prompt utilities
├── 📁 output/ # Generated JMX files
├── 📁 sample_data/ # Test data files
├── 📁 jmeter-results/ # Test execution results
│ ├── 🌐 performance-analysis.html
│ ├── 📝 performance-analysis.md
│ ├── 📊 performance-analysis.json
│ └── 📁 reports/ # JMeter dashboards
├── 🐳 docker-entrypoint.sh # Docker execution script
├── 📄 ARCHITECTURE.mermaid # System architecture
├── 📋 package.json # Project configuration
└── 📖 README.md # This file
🔧 配置
环境变量
NODE_ENV=production # Environment mode
PORT=3000 # HTTP server port
DEBUG=true # Enable verbose logging
Docker配置
服务器自动配置Docker执行:
- 图像:
justb4/jmeter:latest - 卷装载:测试文件和结果的自动映射
- 资源限制:可配置的CPU和内存分配
- 网络:用于外部API访问的桥接网络
📊 生成的报告
HTML交互式仪表板
- 实时图表:响应时间、吞吐量、错误
- 交互式导航:深入挖掘能力
- 性能趋势:基于时间的分析
- 导出选项:PNG、CSV、pdf
Markdown文档
- 执行摘要:关键绩效指标
- 详细分析:综合指标细分
- 建议:性能优化建议
- 历史比较:随时间变化的趋势分析
JSON机器数据
- 原始指标:所有性能数据均为JSON格式
- API集成:易于与监控工具集成
- 自定义分析:自定义报告工具的数据
- 自动化:CI/CD管道的机器可读性
🚀 高级示例
API认证测试
{
"testName": "Authenticated API Test",
"baseUrl": "https://api.github.com",
"threadGroup": {
"numThreads": 10,
"rampUpTime": 30,
"loops": 5
},
"requests": [
{
"name": "Get User Profile",
"method": "GET",
"path": "/user",
"headers": {
"Authorization": "Bearer ${token}",
"Accept": "application/vnd.github+json"
},
"assertions": [
{
"type": "responseCode",
"value": "200"
},
{
"type": "jsonPath",
"value": "$.login"
}
]
}
],
"csvDataSet": {
"fileName": "github_tokens.csv",
"variableNames": "token"
}
}
UI测试工作流程
{
"testName": "E-commerce UI Flow",
"baseUrl": "https://demo.opencart.com",
"threadGroup": {
"numThreads": 5,
"rampUpTime": 60,
"loops": 3
},
"requests": [
{
"name": "Homepage",
"method": "GET",
"path": "/",
"assertions": [
{
"type": "containsText",
"value": "OpenCart"
}
]
},
{
"name": "Product Search",
"method": "GET",
"path": "/index.php?route=product/search&search=macbook",
"assertions": [
{
"type": "responseTime",
"value": "3000"
}
]
}
]
}
🔧 发展
开发设置
# Clone and install
git clone https://github.com/chandanvars/jmeter-mcp-server.git
cd jmeter-mcp-server
npm install
# Run in development mode
npm run dev
# Run tests
npm test
可用脚本
npm start # Start MCP server
npm run dev # Development mode with debugging
npm test # Run test suite
npm run clean # Clean output directories
📚 示例和文件
- 基本用法:简单的API测试示例
- 高级场景:复杂的多步骤工作流
- 性能测试:负载测试最佳实践
- 用户界面测试:Web应用程序测试模式
- 认证:各种身份验证方法示例
🤝 贡献
我们欢迎捐款!拜托:
- 复刻仓库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
🆘 支持
有关支持和问题:
🗺️ 路线图
当前版本功能
- ✅ 流线型架构:2个基本工具
- ✅ 完全Docker自动化:零人工干预
- ✅ 多格式报告:HTML、Markdown、JSON
- ✅ 交互式仪表板:Chart.js可视化
- ✅ 性能分析:综合指标
- ✅ 架构文档:美人鱼图
未来的增强功能
- [ ] WebSocket测试:实时连接测试
- [ ] GraphQL支持:原生GraphQL测试生成
- [ ] 数据库测试:SQL性能测试
- [ ] 云集成:AWS/Azure监控
- [ ] CI/CD模板:管道集成示例
- [ ] 移动测试:移动应用程序性能测试
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- Apache JMeter团队 -对于令人难以置信的测试框架
- 模型上下文协议 -通信标准
- Docker社区 -集装箱化技术
- Chart.js团队 -为了获得美观的可视化效果
- 测试社区 -获取反馈和贡献
🎯 由...制作❤️ 对于测试社区 钱丹·瓦尔什尼
自动化JMeter测试,集成Docker和专业性能分析!
