Skip to content
reaatech

@reaatech/mcp-load-test-cli

npm v0.1.0

A CLI that runs load, ramp, soak, and spike tests against MCP servers, outputting results to the console, Markdown, or JSON. Built on Commander.js, it accepts YAML or JSON config files and supports auto-detection of stdio, SSE, or HTTP transport.

@reaatech/mcp-load-test-cli

npm version License: MIT CI

Status: Pre-1.0 — APIs may change in minor versions. Pin to a specific version in production.

Command-line interface for MCP load testing. Provides mcp-load-test and mcp-lt binaries with four test commands (load, ramp, soak, spike) and a baseline comparison command (compare). Built on Commander.js with YAML/JSON config file support.

Installation

terminal
npm install -g @reaatech/mcp-load-test-cli
# or
pnpm add -g @reaatech/mcp-load-test-cli

Commands

CommandDescriptionDefault Profile
loadFull-featured load test with all optionsramp
rampQuick ramp test with minimal flagsramp
soakExtended soak test (default 30 min)soak
spikeSpike/burst load testspike
compareCompare two JSON reports against a baselinen/a

Quick Start

terminal
# Auto-detect transport, ramp from 1→50 over 60s
mcp-load-test load --endpoint https://api.example.com/mcp
 
# Soak at constant 25 concurrency for 30 minutes
mcp-load-test soak --endpoint https://api.example.com/mcp --concurrency 25
 
# Spike test: 10 baseline, burst to 100, repeat 3×
mcp-load-test spike --endpoint https://api.example.com/mcp --baseline 10 --spike 100
 
# Markdown output to file with breaking point detection
mcp-load-test ramp --endpoint https://api.example.com/mcp --max-concurrency 100 --breaking-point --format markdown --output report.md
 
# Compare two reports
mcp-load-test compare --baseline baseline.json --current current.json

CLI Options

load Command

FlagTypeDefaultDescription
--endpointstring(required)MCP server endpoint (URL or command)
--transportstringautostdio, sse, http, or auto
--profilestringrampramp, soak, or spike
--max-concurrencystring50Maximum concurrent sessions
--durationstring60Test duration in seconds
--patternsstringexplore-then-actComma-separated pattern names
--breaking-pointbooleanfalseEnable breaking point detection
--formatstringconsoleOutput format: console, markdown, json
--outputstringOutput file path (writes to stdout if omitted)
--timeoutstring30000Request timeout in ms
--configstringYAML or JSON config file path

ramp Command

FlagTypeDefaultDescription
--endpointstring(required)MCP server endpoint
--transportstringautoTransport type
--max-concurrencystring50Maximum concurrent sessions
--durationstring60Test duration in seconds
--formatstringconsoleOutput format
--outputstringOutput file path
--breaking-pointbooleanfalseEnable breaking point detection

soak Command

FlagTypeDefaultDescription
--endpointstring(required)MCP server endpoint
--transportstringautoTransport type
--concurrencystring50Constant concurrency
--durationstring1800Test duration in seconds
--formatstringconsoleOutput format
--outputstringOutput file path
--breaking-pointbooleanfalseEnable breaking point detection

spike Command

FlagTypeDefaultDescription
--endpointstring(required)MCP server endpoint
--transportstringautoTransport type
--baselinestring10Baseline concurrency
--spikestring100Spike concurrency
--durationstring300Test duration in seconds
--formatstringconsoleOutput format
--outputstringOutput file path
--breaking-pointbooleanfalseEnable breaking point detection

compare Command

FlagTypeDefaultDescription
--baselinestring(required)Baseline report JSON path
--currentstring(required)Current report JSON path
--formatstringconsoleOutput format: console or markdown
--outputstringOutput file path

Configuration File

All commands support YAML or JSON config files via --config:

yaml
# load-test-config.yaml
endpoint: "https://api.example.com/mcp"
transport: "http"
auth:
  bearerToken: "${MCP_BEARER_TOKEN}"
 
profile:
  type: "ramp"
  minConcurrency: 1
  maxConcurrency: 100
  rampDurationMs: 300000
  holdDurationMs: 120000
 
patterns:
  - name: "explore-then-act"
    weight: 0.7
  - name: "multi-step-workflow"
    weight: 0.3
 
breakingPoint:
  enabled: true
  thresholds:
    errorRate: 0.05
    latencyP99: 5000
 
output:
  format: "markdown"
  file: "./load-test-report.md"

CLI flags override config file values.

Exit Codes

CodeMeaning
0Test succeeded, grade A/B/C
1Test error or grade D/F

Environment Variables

VariableDescriptionDefault
LOG_LEVELPino log level (trace, debug, info, warn, error)info
MCP_LT_PRETTY_LOGSEnable colored pretty-printed log output (set automatically by CLI)1 in CLI mode

License

MIT