Skip to main content
Glama
ebadAhmed10

JMeter MCP Server

by ebadAhmed10
README.md
# šŸš€ JMeter MCP Server

This is a Model Context Protocol (MCP) server that allows executing JMeter tests through MCP-compatible clients and analyzing test results.

> [!IMPORTANT]
> šŸ“¢ Looking for an AI Assistant inside JMeter? šŸš€
> Check out [Feather Wand](https://jmeter.ai)

![Anthropic](./images/Anthropic-MCP.png)
![Cursor](./images/Cursor.png)
![Windsurf](./images/Windsurf.png)

## šŸ“‹ Features

### JMeter Execution
- šŸ“Š Execute JMeter tests in non-GUI mode
- šŸ–„ļø Launch JMeter in GUI mode
- šŸ“ Capture and return execution output
- šŸ“Š Generate JMeter report dashboard

### Test Results Analysis
- šŸ“ˆ Parse and analyze JMeter test results (JTL files)
- šŸ“Š Calculate comprehensive performance metrics
- šŸ” Identify performance bottlenecks automatically
- šŸ’” Generate actionable insights and recommendations
- šŸ“Š Create visualizations of test results
- šŸ“‘ Generate HTML reports with analysis results

## šŸ› ļø Installation

### Local Installation

1. Install [`uv`](https://github.com/astral-sh/uv):

2. Ensure JMeter is installed on your system and accessible via the command line.

āš ļø **Important**: Make sure JMeter is executable. You can do this by running:

```bash
chmod +x /path/to/jmeter/bin/jmeter
```

3. Install dependencies and run the server:

```bash
uv sync
```

4. Configure the `.env` file, refer to the `.env.example` file for details.

```bash
# JMeter Configuration
JMETER_HOME=/path/to/apache-jmeter-5.6.3
JMETER_BIN=${JMETER_HOME}/bin/jmeter

# Optional: JMeter Java options
JMETER_JAVA_OPTS="-Xms1g -Xmx2g"
```

### šŸ’» MCP Usage

1. Connect to the server using an MCP-compatible client (e.g., Claude Desktop, Cursor, Windsurf)

2. Send a prompt to the server:

```
Run JMeter test /path/to/test.jmx
```

3. MCP compatible client will use the available tools:

#### JMeter Execution Tools
- šŸ–„ļø `execute_jmeter_test`: Launches JMeter in GUI mode, but doesn't execute test as per the JMeter design
- šŸš€ `execute_jmeter_test_non_gui`: Execute a JMeter test in non-GUI mode (default mode for better performance)

#### Test Results Analysis Tools
- šŸ“Š `analyze_jmeter_results`: Analyze JMeter test results and provide a summary of key metrics and insights
- šŸ” `identify_performance_bottlenecks`: Identify performance bottlenecks in JMeter test results
- šŸ’” `get_performance_insights`: Get insights and recommendations for improving performance
- šŸ“ˆ `generate_visualization`: Generate visualizations of JMeter test results

## šŸ—ļø MCP Configuration

Add the following configuration to your MCP client config:

```json
{
    "mcpServers": {
      "jmeter": {
        "command": "uv",
        "args": [
          "--directory",
          "/path/to/jmeter-mcp-server",
          "run",
          "jmeter_server.py"
        ]
      }
    }
}
```

## ✨ Use Cases

### Test Execution
- Run JMeter tests in non-GUI mode for better performance
- Launch JMeter in GUI mode for test development
- Generate JMeter report dashboards

### Test Results Analysis
- Analyze JTL files to understand performance characteristics
- Identify performance bottlenecks and their severity
- Get actionable recommendations for performance improvements
- Generate visualizations for better understanding of results
- Create comprehensive HTML reports for sharing with stakeholders

## šŸ›‘ Error Handling

The server will:

- Validate that the test file exists
- Check that the file has a .jmx extension
- Validate that JTL files exist and have valid formats
- Capture and return any execution or analysis errors

## šŸ“Š Test Results Analyzer

The Test Results Analyzer is a powerful feature that helps you understand your JMeter test results better. It consists of several components:

### Parser Module
- Supports both XML and CSV JTL formats
- Efficiently processes large files with streaming parsers
- Validates file formats and handles errors gracefully

### Metrics Calculator
- Calculates overall performance metrics (average, median, percentiles)
- Provides endpoint-specific metrics for detailed analysis
- Generates time series metrics to track performance over time
- Compares metrics with benchmarks for context

### Bottleneck Analyzer
- Identifies slow endpoints based on response times
- Detects error-prone endpoints with high error rates
- Finds response time anomalies and outliers
- Analyzes the impact of concurrency on performance

### Insights Generator
- Provides specific recommendations for addressing bottlenecks
- Analyzes error patterns and suggests solutions
- Generates insights on scaling behavior and capacity limits
- Prioritizes recommendations based on potential impact

### Visualization Engine
- Creates time series graphs showing performance over time
- Generates distribution graphs for response time analysis
- Produces endpoint comparison charts for identifying issues
- Creates comprehensive HTML reports with all analysis results

## šŸ“ Example Usage

```
# Run a JMeter test and generate a results file
Run JMeter test sample_test.jmx in non-GUI mode and save results to results.jtl

# Analyze the results
Analyze the JMeter test results in results.jtl and provide detailed insights

# Identify bottlenecks
What are the performance bottlenecks in the results.jtl file?

# Get recommendations
What recommendations do you have for improving performance based on results.jtl?

# Generate visualizations
Create a time series graph of response times from results.jtl
```

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes: analyzing results, executing tests, generating visualizations, and identifying bottlenecks. However, 'analyze_jmeter_results' and 'get_performance_insights' could be confused as both provide analysis from test results, though one focuses on metrics and the other on recommendations.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as 'execute_jmeter_test' and 'generate_visualization'. The naming is uniform and predictable across all six tools.

Tool Count5/5

With 6 tools, the server is well-scoped for JMeter testing, covering execution, analysis, visualization, and bottleneck identification. Each tool serves a clear purpose without being overly sparse or bloated.

Completeness4/5

The tool set covers key aspects of JMeter testing: execution (with GUI and non-GUI options), result analysis, visualization, and bottleneck insights. A minor gap is the lack of tools for test creation or editing, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessNo issues