Advanced MCP server for JMeter performance test analysis with 14 comprehensive tools
Project description
JMeter MCP - Complete Guide
Package: jmeter-mcp v1.0.0 | Status: โ Ready for Publication | Date: January 27, 2026
๐ Quick Start
What is This?
A stdio-based MCP server for analyzing JMeter performance test logs. Works with Autogen and any LLM via MCP protocol.
Installation & Usage
# No installation needed - run directly
pipx run jmeter-mcp
# Or install once
pip install jmeter-mcp
jmeter-mcp
# Use with Autogen (zero-install)
from autogen.agentchat.contrib.mcp.agent import MCPAgent
agent = MCPAgent(
name="analyst",
mcp_server_config={
"type": "stdio",
"command": "pipx",
"args": ["run", "jmeter-mcp"],
},
)
๐ฆ Package Contents
Source Code
jmeter_mcp/
โโโ __init__.py Package metadata
โโโ cli.py MCP server (231 lines, 3 tools)
Build Artifacts
dist/
โโโ jmeter_mcp-1.0.0-py3-none-any.whl Ready to install
โโโ jmeter_mcp-1.0.0.tar.gz Ready to upload
Configuration
pyproject.toml Package config (modern PEP 517/518)
LICENSE MIT License
verify.py Verification script (8/8 checks)
๐ง Available Tools
1. analyze_jmeter_logs
Analyzes JMeter performance test logs and returns key metrics.
Input: log_data (CSV format)
Output: Metrics (total requests, failures, error rate, response times)
2. detect_log_format
Auto-detects log format with confidence score.
Input: log_data (first few lines)
Output: Format type and confidence (jmeter_jtl, performance_csv, etc.)
3. get_supported_formats
Lists all supported format types.
Input: None
Output: Array of supported formats with descriptions
๐ Publishing to PyPI (4 Steps)
Step 1: Update Metadata (2 min)
Edit pyproject.toml and replace:
authors = [
{name = "YOUR NAME", email = "your@email.com"}
]
[project.urls]
Homepage = "https://github.com/YOUR_USERNAME/jmeter-mcp"
Repository = "https://github.com/YOUR_USERNAME/jmeter-mcp.git"
Step 2: Create PyPI Account (5 min)
- Visit: https://pypi.org/account/register/
- Create account (free)
- Verify email
- Generate API token
- Save token
Step 3: Publish (1 min)
python -m twine upload dist/*
# When prompted:
# Username: __token__
# Password: [paste your token]
Step 4: Verify (5-10 min)
# Wait for PyPI to index
pipx install jmeter-mcp
pipx run jmeter-mcp 2>&1
# Output: "Starting JMeter MCP Server (stdio transport)"
๐ค Autogen Integration
Basic Setup (Zero Installation)
from autogen import UserProxyAgent
from autogen.agentchat.contrib.mcp.agent import MCPAgent
mcp_config = {
"type": "stdio",
"command": "pipx",
"args": ["run", "jmeter-mcp"],
}
analyst = MCPAgent(
name="performance_analyst",
system_message="Analyze JMeter logs using available tools",
mcp_server_config=mcp_config,
llm_config={"config_list": [{"model": "gpt-4"}]},
)
user = UserProxyAgent(name="user", human_input_mode="TERMINATE")
user.initiate_chat(analyst, message="Analyze this JMeter test...")
Multi-Agent Collaboration
# Create team of agents
analyst = MCPAgent(name="analyst", ...)
reporter = AssistantAgent(name="reporter", ...)
manager = UserProxyAgent(name="manager")
# Group chat
group_chat = GroupChat(agents=[analyst, reporter, manager])
chat_manager = GroupChatManager(group_chat=group_chat)
manager.initiate_chat(chat_manager, message="Analyze and report...")
โ Verification & Testing
Run Verification
python verify.py
# Output: 8/8 checks passed โ
Checks Include:
- Package structure correct
- pyproject.toml valid
- Documentation complete
- CLI imports working
- MCP tools defined
- Stateless design verified
- Logging to stderr
- Build artifacts present
Test Locally
# With pip
pip install -e .
jmeter-mcp 2>&1
# With pipx
pipx install dist/jmeter_mcp-1.0.0-py3-none-any.whl --force
pipx run jmeter-mcp 2>&1
๐ฏ Key Features
โ
Stdio-only - Pure JSON-RPC 2.0, no HTTP
โ
Stateless - No file I/O, parameter-driven
โ
Zero-install - Works via pipx run jmeter-mcp
โ
Production-grade - Error handling, input validation
โ
Autogen-ready - Direct integration support
โ
Well-documented - Complete guides
โ
Free - MIT license, PyPI hosting
๐ง Commands Reference
# Verify everything is ready
python verify.py
# Test locally with pip
pip install -e .
# Test locally with pipx
pipx install dist/jmeter_mcp-1.0.0-py3-none-any.whl --force
pipx run jmeter-mcp 2>&1
# Publish to PyPI
python -m twine upload dist/*
# Install from PyPI (after publishing)
pip install jmeter-mcp
๐ Troubleshooting
| Issue | Solution |
|---|---|
| "Module not found: twine" | pip install twine build |
| "401 Unauthorized" | Generate new token at https://pypi.org/account/ |
| Server doesn't start | Run jmeter-mcp 2>&1 to see stderr errors |
| "Package already exists" | Update version to 1.0.1 in pyproject.toml |
| "No such command: jmeter-mcp" | Reinstall: pip install --force-reinstall jmeter-mcp |
๐ Project Stats
| Metric | Value |
|---|---|
| Package Size (wheel) | 7.7 KB |
| Package Size (source) | 452 KB |
| Python Support | 3.9, 3.10, 3.11, 3.12, 3.13 |
| Core Dependencies | 2 (mcp, fastmcp) |
| MCP Tools | 3 |
| Verification | 8/8 โ |
| Time to Publish | ~20 minutes |
๐ Constraints & Features
| Constraint | Status | Details |
|---|---|---|
| Stdio-only MCP | โ | JSON-RPC 2.0 over stdin/stdout |
| No HTTP/FastAPI | โ | Pure stdio, no web framework |
| Stateless operation | โ | Parameter-driven, no session state |
| No file I/O | โ | All data via JSON parameters |
| Logs to stderr | โ | stream=sys.stderr configured |
| Works with pipx run | โ | Entry point registered & tested |
| Free publication | โ | PyPI hosts packages free |
๐ Folder Structure
jmeter-mcp-package/
โโโ jmeter_mcp/ Python package
โ โโโ __init__.py
โ โโโ cli.py
โโโ dist/ Build artifacts
โ โโโ jmeter_mcp-1.0.0-py3-none-any.whl
โ โโโ jmeter_mcp-1.0.0.tar.gz
โโโ pyproject.toml Modern package config
โโโ LICENSE MIT License
โโโ verify.py Verification script
โโโ README.md This complete guide
๐ฌ Publishing Workflow
1. Update pyproject.toml metadata (2 min)
โ
2. Create PyPI account (5 min)
โ
3. Generate & save API token (2 min)
โ
4. Run: python -m twine upload dist/* (1 min)
โ
5. Wait 5-10 minutes for PyPI indexing
โ
6. Test: pipx install jmeter-mcp
โ
โ
PUBLISHED!
๐ Use Cases
Performance Analysis
# Analyze JMeter test results
pipx run jmeter-mcp
With Claude/Autogen
# Analyze logs with AI assistance
agent.chat("Analyze this JMeter result and find issues")
CI/CD Integration
# In GitHub Actions or Jenkins
pipx run jmeter-mcp < test_results.csv
๐ Quick Links
| Link | Purpose |
|---|---|
| https://pypi.org | Python Package Index |
| https://pypi.org/account/register/ | Create PyPI account |
| https://modelcontextprotocol.io | MCP specification |
| https://microsoft.github.io/autogen/ | Autogen documentation |
โจ Next Steps
- Review this guide
- Update
pyproject.tomlwith your name/email - Verify everything:
python verify.py - Create free PyPI account
- Publish:
python -m twine upload dist/* - Test:
pipx install jmeter-mcp
๐ License
MIT License - Free to use, modify, and distribute
Status: โ Production Ready | Created: January 27, 2026
Ready to publish? Update pyproject.toml and run: python -m twine upload dist/*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jmeter_mcp_server-2.0.0.tar.gz.
File metadata
- Download URL: jmeter_mcp_server-2.0.0.tar.gz
- Upload date:
- Size: 31.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
354007098e66a4086ed4c456df72818c9d8e15fd2b1490d13874b6e27165994c
|
|
| MD5 |
37f8ed6b33526d6bc52c692f16938613
|
|
| BLAKE2b-256 |
2d73787beeed25d564162c6b24e04aa9461c43fef40a1bc5d2a7197c983747f6
|
File details
Details for the file jmeter_mcp_server-2.0.0-py3-none-any.whl.
File metadata
- Download URL: jmeter_mcp_server-2.0.0-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdf20efbc682a150fc7fdde05e83ae833e0a0c2eba9f55bd28a28a8358f2ff16
|
|
| MD5 |
362769e883ceeecdbe4aaecf1a43f153
|
|
| BLAKE2b-256 |
1e05515441b06bbd58671f4ae4605ecfd7935fce6b18b42dc007099194f9a606
|