Architecture · LikeC4
mcp-ax
Evaluates an MCP tool from the agent's perspective — discovers findings, generates patches, tracks regressions against author baselines
The whole picture
System landscape
The system in context, then opened up into its containers.
Inside each box
Containers & components
Each part decomposed into the components that implement it. Every box links to its source in the interactive explorer.
mcp-ax CLI (cli/) — pipeline stages
cliContainercli/ — deterministic, cassette-backed pipeline emitting typed JSON artifacts; dispatched by bin/mcp-ax → python3 -m cli
Eval harness (harness/) — components
harnessContainerharness/ — the data-driven core the CLI consumes: AX#### registry, typed-artifact schemas, scenarios, trace runtime, assertions
Trace runtime (harness/runtime/) — replay & live recorder
runtimeContainerCassette replay, live agent/MCP session, budget cap, run.json writer, capability profiles
Static lint rules (lints/) — AX#### implementations
lintsContainerlints/ — the AX#### rule implementations the lint stage runs; consume the registry, never hardcode finding logic
Description-override proxy (proxy/) — R9 components
proxyContainerR9 middleware that rewrites only the description field of a tools/list response so authors A/B a wording without touching the server
CI gate tooling (tools/) — sentinel + schema + prompt + freshness
ciContainertools/ — the linters and checks wired into make + the sentinel-gate workflow
How it runs
Walkthrough flows
Dynamic views — the narrative spine of the system, step by step.
Walkthrough — static lint → explain → fix loop
lintFixThe $0 tier: no model, no network. Lint a tools/list manifest, explain any AX#### that fires, and emit an idempotent auto-fix diff (dry-run by default).
Walkthrough — a trace run (replay by default)
traceRunBudget is a hard precondition checked before any work. Cassettes replay byte-for-byte; --record/--no-cassette go live through the recorder. Every agent message is scanned for self-scoring (R8).
Walkthrough — live recording (--record)
liveRecordEVOLVING. The recorder drives the agent loop over a real LLM + MCP session, shapes schema-valid trace records, enforces the budget the moment cost crosses the cap, and writes a fresh cassette. All reasoning is the model's (ZFC).
Walkthrough — R9 description-override try cycle
tryCycleThe author inner loop (≤60s, ≤$0.10): rewrite only the description, prove nothing else changed, then lint + smoke-trace the rewritten catalog and diff. Live proxy stdio is gated on ph3.14; the deterministic core runs today.
Explore it live
The figures above are static exports. The interactive explorer lets you pan, zoom, follow relationships, and jump from any box to the source.