Skip to main content
Glama

analyze_coverage

Identify untested code, analyze test coverage, and generate actionable insights for lines, functions, branches, and statements. Excludes non-production files automatically and provides recommendations to improve coverage. Requires project root setup and supports summary or detailed output formats.

Instructions

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.

USE WHEN: User wants to check test coverage, identify untested code, improve test coverage, asks "what's not tested", "coverage report", "how well tested", or mentions coverage/testing quality. Essential when "vitest-mcp:" prefix is used with coverage-related requests. Prefer this over raw vitest coverage commands for actionable insights.

Input Schema

NameRequiredDescriptionDefault
excludeNoGlob patterns to exclude from coverage analysis. Examples: ["***.test.*", "**/e2emocks/**"]. Useful for excluding test files, stories, mocks, or other non-production code from coverage calculations.
formatNoOutput format: "summary" (basic metrics), "detailed" (comprehensive analysis with file details)summary
targetYesSource file path or directory to analyze coverage for. Should target the actual source code files, NOT test files. Can be a specific source file (e.g., "./src/utils/helper.ts") or directory (e.g., "./src/components"). Relative paths resolved from project root. Required to prevent accidental full project analysis which can be slow and resource-intensive.

Input Schema (JSON Schema)

{ "properties": { "exclude": { "default": [], "description": "Glob patterns to exclude from coverage analysis. Examples: [\"***.test.*\", \"**/e2emocks/**\"]. Useful for excluding test files, stories, mocks, or other non-production code from coverage calculations.", "items": { "type": "string" }, "type": "array" }, "format": { "default": "summary", "description": "Output format: \"summary\" (basic metrics), \"detailed\" (comprehensive analysis with file details)", "enum": [ "summary", "detailed" ], "type": "string" }, "target": { "description": "Source file path or directory to analyze coverage for. Should target the actual source code files, NOT test files. Can be a specific source file (e.g., \"./src/utils/helper.ts\") or directory (e.g., \"./src/components\"). Relative paths resolved from project root. Required to prevent accidental full project analysis which can be slow and resource-intensive.", "type": "string" } }, "required": [ "target" ], "type": "object" }

Implementation Reference

  • Entry point handler function for the analyze_coverage tool. Instantiates CoverageAnalyzer and calls its execute method to perform the analysis.
    export async function handleAnalyzeCoverage( args: AnalyzeCoverageArgs ): Promise<ProcessedCoverageResult> { const analyzer = new CoverageAnalyzer(); return await analyzer.execute(args); }
  • Core execution method in CoverageAnalyzer class that orchestrates coverage execution, processing, and error handling.
    async execute(args: AnalyzeCoverageArgs): Promise<ProcessedCoverageResult> { let builtCommand = ""; try { builtCommand = this.buildDisplayCommand(args); const coverageResult = await this.executeCoverage(args); return await this.processCoverageResults(args, coverageResult); } catch (error) { return this.createErrorResult(error, builtCommand); } }
  • Tool object definition including name, description, and input schema for MCP protocol compliance.
    export const analyzeCoverageTool: Tool = { name: "analyze_coverage", description: '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.\n\nUSE WHEN: User wants to check test coverage, identify untested code, improve test coverage, asks "what\'s not tested", "coverage report", "how well tested", or mentions coverage/testing quality. Essential when "vitest-mcp:" prefix is used with coverage-related requests. Prefer this over raw vitest coverage commands for actionable insights.', inputSchema: { type: "object", properties: { target: { type: "string", description: 'Source file path or directory to analyze coverage for. Should target the actual source code files, NOT test files. Can be a specific source file (e.g., "./src/utils/helper.ts") or directory (e.g., "./src/components"). Relative paths resolved from project root. Required to prevent accidental full project analysis which can be slow and resource-intensive.', }, format: { type: "string", enum: ["summary", "detailed"], description: 'Output format: "summary" (basic metrics), "detailed" (comprehensive analysis with file details)', default: "summary", }, exclude: { type: "array", description: 'Glob patterns to exclude from coverage analysis. Examples: ["***.test.*", "**/e2emocks/**"]. Useful for excluding test files, stories, mocks, or other non-production code from coverage calculations.', items: { type: "string", }, default: [], }, }, required: ["target"], }, };
  • Plugin creation that wraps the analyze_coverage tool definition and handler using the plugin factory.
    export const analyzeCoveragePlugin: ToolPlugin<AnalyzeCoverageArgs, ProcessedCoverageResult> = createToolPlugin( analyzeCoverageTool, handleAnalyzeCoverage );
  • Registration of the analyzeCoveragePlugin in the standard tool registry used by the MCP server.
    registry.register(analyzeCoveragePlugin);
  • TypeScript interface defining the input arguments for the analyze_coverage tool.
    export interface AnalyzeCoverageArgs { target: string; format?: 'summary' | 'detailed'; exclude?: string[]; }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/djankies/vitest-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server