
Artillery Mcp
io.github.kosiakMD由 GitHub 账号 kosiakMD 发布v0.1.7更新于 Oct 24, 2026
MCP server for Artillery 2.x — full flags, Fargate, raw-text parser, project launcher (MIT)
概览
在本地运行 Artillery 2.x 负载测试(含 AWS Fargate),并解析产生的计数器、速率和汇总数据。
- 可以做什么
- 封装本地 Artillery CLI,让助手可以用 YAML 文件、内联 YAML、快速 URL 测试、预设或已保存配置来运行负载测试,并在 AWS Fargate 上发起分布式运行。它把 Artillery JSON 报告和原始 stdout 输出解析为汇总、全部计数器、速率和嵌套百分位,可对比两个结果文件以发现回归,并把 JSON 结果转换为 HTML。可选的配置驱动工具提供一行式项目流程和自定义计数器分组。
- 适用场景
- 适合已经使用 Artillery、希望让助手触发负载测试、读取结果并比较多次运行而无需手写大量参数的场景。也适合需要汇总原始 Artillery 输出或 JSON 产物的 CI 流程。
- 运行要求
- 需要 Node.js 20 或更高版本,并在 PATH 中安装 Artillery CLI,或使用已发布的 Docker 镜像。以本地 stdio 进程运行。可选环境变量:ARTILLERY_WORKDIR、ARTILLERY_MCP_CONFIG、ARTILLERY_TIMEOUT_MS,以及用于记录到 Artillery Cloud 的 ARTILLERY_CLOUD_API_KEY。
安装
在 SourceWeft 中
- 打开 控制台中的 Artillery Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
@kosiakmd/artillery-mcp
[ci] [npm version] [license MIT]
Richer drop-in MCP server for Artillery 2.x — exposes the full artillery run
and artillery run-fargate flag surface, parses raw text output (artillery-output.txt),
returns every counter/rate/summary Artillery produces (not just http.*), and
optionally adds a config-driven project launcher and counter-grouping for your
custom counters.
Why another MCP server?
The upstream @jch1887/artillery-mcp-server
was a solid start but missed several flags our team needed day-to-day. This package is
a MIT-licensed fork with broader coverage. See Credits.
Quickstart for agents (Claude Code / Cursor)
Scaffolds two files (skipped if they already exist, use --force to overwrite):
.artillery-mcp.config.json— starter template with commented fields.ai/skills/artillery-mcp/SKILL.md— agent-oriented guidance (when to call which tool, common patterns, gotchas)
After editing the config with your real flows/paths, register the MCP in your agent and restart the session:
Install / Quickstart (zero-config)
Runs out of the box — no config file needed. Works as an MCP server over stdio for Claude Code, Claude Desktop, Cursor, and any MCP-compatible client.
Claude Code / Cursor — register as an MCP server in your client config:
Claude Code CLI:
Prerequisites: Node.js ≥ 20; Artillery CLI on PATH (npm i -g artillery).
Docker
Multi-arch image — linux/amd64 and linux/arm64, Artillery CLI preinstalled. ~500 MB (Chromium/Playwright browsers skipped — see below). Published to both Docker Hub and GitHub Container Registry from the same build; identical digests.
Run (mount your project as /workspace):
--init ensures the Node process gets reaped on stdin close. Mount /workspace read-write if you want save_config tools to persist to /workspace/saved-configs/; read-only is fine otherwise (the save-config family will simply return errors when called).
MCP client config (Claude Desktop / Cursor) — point the MCP at docker instead of npx:
Playwright engine? If you use engine: playwright in your Artillery scripts, extend the base image with Chromium:
Image tags:
latest— most recent releasev0.1.1,v0.1,v0— pinned by semver (patch / minor / major)
Environment variables
18 base tools (no config needed)
Run tests
run_test_from_file— full-flagartillery runwrapper (see flag surface above).run_test_inline— same but takes YAML text, writes to a tmp file.quick_test—artillery quick <url>with rate/count/duration/method/headers/body.run_fargate—artillery run-fargatewith--region,--cluster,--cpu,--memory,--launch-type,--spot,--subnet-ids,--security-group-ids,--task-role-name,--task-ephemeral-storage,--container-dns-servers,--max-duration,--packages,--secret,--no-assign-public-ip+ all run-shared flags.run_preset_test— smoke / baseline / soak / spike presets against a URL.run_saved_config— re-run a saved config by name.
Parse + inspect results
parse_results— reads an Artillery JSON report; returnssummary+allCounters+allRates+allSummaries+ scenarios + metadata.read_artillery_output— reads a raw Artillery stdout dump (e.g.artillery-output.txtsaved from CI), returnsrawText(with tail-truncation),summaryBlock,counters,rates,metrics(nested percentiles).run_report— converts an existing JSON results file to HTML viaartillery report. Use when you have JSON from CI artifacts and want shareable HTML without re-running.compare_results— diff two Artillery JSON results for regression detection.
Saved configs
save_config/list_configs/get_config/delete_config— persistent named Artillery configs.
Interactive builder
wizard_start/wizard_step/wizard_finalize— interactive test builder.
Meta
list_capabilities— versions of Artillery/Node/this server, configured paths, limits.
Optional feature #1 — Project launcher (run_project_lt)
Activated when a .artillery-mcp.config.json file is discovered. Gives you
one-liner invocations instead of writing full artillery run ... flag lists.
Discovery precedence:
ARTILLERY_MCP_CONFIGenv var (absolute path)- Walk up from
ARTILLERY_WORKDIR/cwdlooking for.artillery-mcp.config.json - No config → this tool is not registered
Config (.artillery-mcp.config.json):
Call:
Effective command:
Optional fields:
tagTemplates—{flow},{env}, plus any caller-suppliedtemplateVars(e.g.{round})outputDir— relative to project root; if missing, outputs land at project rootdefaultTags— merged before templatesenvironments— if empty, any environment name is accepted
Override on the call side: name, note, extraTags, outputJson, reportHtml,
variables, overrides, record: false, validateOnly, extraArgs, templateVars.
Optional feature #2 — Counter-group bucketing (counterBreakdown)
When you emit custom counters via events.emit('counter', 'shop.step.add_item.happy', 1),
Artillery aggregates them into aggregate.counters. This server returns ALL of
them in allCounters. Add counterGroups to your config to also get a
pre-bucketed counterBreakdown in parse_results and read_artillery_output
responses — ideal for CI pass/fail views and semantic grouping.
Config:
Example response (parse_results):
Rules:
prefix(optional) — counters not starting with this string are ignoredbuckets— ordered; first match wins- One bucket may have
default: true— catches everything that didn't match - Invalid regex → throws at parse time (fix your config)
Without counterGroups, the counterBreakdown field is simply absent from responses.
Full config reference
Security
- No network I/O — only spawns the local
artilleryCLI. - No
eval/Function/ dynamic imports. - No install hooks.
- Dependencies pinned via
package-lock.json(committed). - Published with
npm --provenance(SLSA attestation).
Roadmap
Shipped
- v0.1.1 — Docker image (multi-arch amd64/arm64; Artillery CLI preinstalled)
- v0.1.2 —
artillery-mcp initscaffolder + shippedSKILL.mdagent-guidance template - v0.1.3 — hard-fail on unknown CLI args, fix Dockerfile missing
skills/ - v0.1.4 — dual-publish to Docker Hub alongside GHCR (for
docker searchdiscoverability) - v0.1.7 —
run_reporttool (JSON → HTML viaartillery report); listed in MCP Official Registry (io.github.kosiakMD/artillery-mcp)
v0.2 (next)
- Artillery Cloud API integration —
list_recent_runs,get_run_details(runUrl),compare_to_baseline(runUrl). Requires reverse-engineering theartilleryioREST API or partnering with Artillery.io. - Config schema validation on startup — parse
.artillery-mcp.config.jsonthrough zod with human-readable error messages ("expected 'flows' to be object, got null at line 3"). Fail-fast with pointer to README. - YAML config support — accept
.artillery-mcp.config.ymlusing a tiny bundled YAML parser (keeping deps light). - Playwright Docker variant —
kosiakmd/artillery-mcp:latest-playwrightwith Chromium preinstalled for users withengine: playwrightscripts. Separate tag to keep base image small.
v0.3+
- Artillery Lambda + Azure ACI tools —
run_lambda,run_acifor parity withrun_fargate. -
run_project_ltmatrix mode —{"matrix": {"flow": ["free","paid"], "env": ["staging","prod"]}}→ 4 runs in parallel. - Per-flow config overrides — different
counterGroups/defaultTags/environmentsper flow instead of global. - Streaming intermediate metrics via MCP progress events so agents see RPS/errors mid-run instead of only at completion.
- Built-in presets library — smoke / baseline / soak / spike selectable via config (not just inline YAML).
- Published JSON Schema at stable URL for IDE autocompletion of
.artillery-mcp.config.json. - Plugin API for counter-group matchers beyond regex — e.g. JSONPath, Wasm filter, callback to a user-provided JS.
- Structured
run_reportvariant — return extracted summary text alongside the HTML path, so AI agents can skip loading the file. - Smithery support — add StreamableHTTP transport + hosted deployment once there's enough demand (requires OAuth-style session config for per-user API keys).
Under consideration
- Grafana / Prometheus integration — push metrics to a user-provided Prometheus endpoint instead of (or in addition to) Artillery Cloud.
- Native Artillery Pro support — enterprise features if users request them.
- TUI dashboard for long-running tests when invoked outside MCP (standalone mode).
- Community MCP catalogs — manual registration on mcp-get.com, PulseMCP for extra discoverability.
- Upstream contribution — offer
read_artillery_output,run_fargate, andfull flag surfacepatches back to@jch1887/artillery-mcp-serveras PRs; if merged, this fork becomes a thin config-plugin layer on top.
Issues / feature requests / PRs welcome: github.com/kosiakMD/artillery-mcp/issues.
Issues and feature requests welcome: github.com/kosiakMD/artillery-mcp/issues.
Credits
Forked from jch1887/artillery-mcp-server (MIT). See NOTICE for the list of additions and modifications.
License
MIT — see LICENSE. Both the upstream and this fork's copyright notices must be preserved in substantial portions of the software.
来源:README.md,提交 916981b
工具
0版本历史
1- v0.1.7最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分