A Model Context Protocol server for Vitest test execution and management
This STDIO-only MCP server has basic tool definitions with mixed quality. Four tools are explicitly registered with names and descriptions, but several critical issues reduce the overall score: (1) tool descriptions vary significantly in quality and length, with 'analyze_coverage' being extremely verbose (400+ chars), violating best practices; (2) most parameter descriptions are minimal or absent, leaving LLMs to infer intent; (3) no input validation examples or error guidance visible; (4) output schemas are not documented in the code provided, making it impossible to verify structured output patterns; (5) STDIO-only transport caps the ceiling at 50 regardless of definition quality. The server demonstrates intentional architecture (plugin-based tool registry with type safety) but lacks the rigor expected of production-grade agent tools.
Perform comprehensive test coverage analysis with line-by-line gap identification, actionable insights, and detailed metrics for lines, functions, branches, and statements. Automatically excludes common non-production files (stories, mocks, e2e tests) and provides recommendations for improving coverage. Detects and prevents analysis on test files themselves. Requires set_project_root to be called first. Coverage thresholds are configured via vitest.config.ts.
List all test files in the project
Run Vitest test suite with structured output
Set the project root directory for all subsequent operations
analyze_coverage description is 400+ characters, violating the 10-1024 character guideline (optimal 50-200 chars). Excessive length wastes tokens and buries actionable details.
Parameter descriptions are minimal or absent. 'pattern' in list_tests has a description, but 'directory' has only 'Optional directory to limit search scope' (28 chars), insufficient for LLM disambiguation. Parameters like 'format', 'timeout', 'watchMode' in run_tests lack clarity on constraints, ranges, or when to use them.
Output schemas are not documented in source code. The code shows tool definitions and handlers (src/tools/*.ts) but no explicit return type documentation or schema examples. Cannot verify if structured output follows pattern:response-shaper.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 59 | - | v1 |
No error handling guidance in tool descriptions. Error responses from ToolRegistry catch errors and format them, but tool descriptions do not mention failure modes, recovery steps, or what the LLM should do if a tool fails (pattern:recovery-guide).
run_tests tool accepts 'format' enum with values 'summary' and 'detailed', but the description does not explain the difference between these formats or when to use each. LLMs cannot infer output structure from enum values alone.
set_project_root tool has 'path' parameter with minimal description ('Absolute path to the project root directory'). No guidance on validation, error handling if path does not exist, or dependency on this tool before others can run.
No confirmation or dry-run support for destructive operations. run_tests with watchMode=true and potentially long-running operations lack a dry-run pattern to let agents preview impact before committing (pattern:confirmation-request).