MCP server providing deterministic test tools for gateway validation, including data generation, failure simulation, identity/auth verification, and streaming/progress testing
mcp-test is a well-structured testing toolkit with 12 tools covering data generation, failure simulation, identity inspection, and streaming. All tools have clear descriptions (avg 120 chars) and complete input schemas with typed parameters. Naming follows verb_noun convention (fixed_response, sized_response, lorem, error, slow, flaky, whoami, echo, headers, progress, long_output, chatty). No output schemas are documented, critical gap for LLM planning. Parameters lack detailed constraints (ranges, enums, format specs). Error handling is basic; tools return synthetic errors but lack recovery guidance. Security is sound (no secrets in params, read-only operations). Composition is clean, each tool has one responsibility. Baseline: 549 production tools average 18-char names, 194-char descriptions, 100% param coverage in A+ tools. This server meets naming and description baselines but falls short on schema documentation and error guidance.
Return a CallToolResult with several diverse text content blocks. Useful for verifying the gateway preserves block ordering and types.
Echo back the arguments object exactly as received.
Return an error with a caller-specified message. Optionally categorize as protocol|tool|timeout|auth so audit rows are easy to filter.
Return a deterministic body derived from a key. Calling with the same key always returns the same body.
Return success or a synthetic failure based on the supplied probability and seed. Useful for retry-policy testing.
Return the HTTP headers received by this MCP server, with sensitive values redacted.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. Tools like progress, long_output, and chatty return CallToolResult with text blocks but structure is not formally specified.
Parameter constraints lack detail. 'milliseconds' in slow tool is 'capped at 60000' but no min/max schema bounds. 'blocks' and 'chars' in long_output have max values in description only, not in JSON Schema. 'fail_rate' in flaky accepts 0-1 but no enum or pattern constraint.
Error handling lacks recovery guidance. 'error' tool returns synthetic errors but does not guide LLM on next steps. No categorization of retryable vs fatal errors. Pattern:recovery-guide requires 'Try X instead' or 'This is retryable' messaging.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Return one CallToolResult containing `blocks` text content items, each of `chars` characters.
Return N words of lorem-ipsum text. With a seed, output is deterministic; without one, every call differs.
Emit N progress notifications spaced step_ms apart, then return. The client must include a progressToken in _meta to receive notifications.
Return exactly the requested number of characters. The body is the lowercase ASCII alphabet repeated; not random.
Sleep for the specified number of milliseconds, then return. Returns ctx.Err() if cancelled mid-sleep.
Return the authenticated identity for the calling MCP session.
whoami, echo, and headers tools have empty input schemas (no parameters) but descriptions do not explain what context they read (session, request headers, auth state). LLMs cannot infer whether these are stateful or stateless.
No pagination or result-limiting guidance for long_output. Tool can return up to 50 blocks × 65536 chars = 3.2M chars per call. No mention of token cost, context window impact, or recommended limits for agent use.