Skip to content
reaatechREAATECH

@reaatech/mcp-load-test-cli

npm v0.1.0

Executes load, ramp, soak, and spike tests against Model Context Protocol (MCP) servers via a command-line interface. It generates performance reports in console, JSON, or Markdown formats and supports baseline comparisons for regression testing.

@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