Reads LCOV files and gives your AI agent structured coverage data without burning tokens on massive raw files. Exposes four tools: coverage_summary for project-wide percentages, coverage_file_summary for individual file metrics, start_recording to snapshot a baseline, and get_diff_since_start to measure coverage impact during a session. Useful when you want agents to maintain or improve coverage as they write code, or when testing agents need to identify uncovered areas. Works with any language that generates LCOV output. The baseline tracking is clever because agents don't have to hold initial coverage numbers in their context window throughout the entire conversation.
Make your agents coverage-aware as they code for you
“Hey, I’m a coding agent. I just created flashy nifty feature… but oops, I downgraded the coverage 🤓. How could I know that?”
“Hey, I’m a testing agent. I was tasked to cover some code with testing, but how can I find which areas are not covered?😳”
Give your coding and testing agent eyes: MCP server that provides instant, reliable, token-efficient test coverage data for any programming language (LCOV based)
__
🚀 Just launched (November 2025) ! I spend great time these days on polishing this library. If you find this valuable, a ⭐ star helps signal to other developers that this project is worth their attention
When AI coding agents work on your code without proper coverage tooling, they face three critical issues:
This MCP server solves all three problems by providing:
Test Coverage: This project maintains 95% test coverage and we're targeting 100% soon.
Ask for overall project coverage or coverage for specific files:
// Get overall project coverage
coverage_summary({ lcovPath: "./coverage/lcov.info" });
// Returns: { linesCoveragePercentage: 87.5, branchesCoveragePercentage: 82.1 }
// Get coverage for specific files
coverage_file_summary({
lcovPath: "./coverage/lcov.info",
filePath: "src/utils/parser.ts",
});
// Returns: { path: "src/utils/parser.ts", linesCoveragePercentage: 92.0, branchesCoveragePercentage: 88.5 }
Establish a baseline at session start, then measure your progress:
// At session start - record current coverage as baseline
start_recording({ lcovPath: "./coverage/lcov.info" });
// Returns: "Recording started"
// ... agent writes code and tests ...
// Check coverage impact
get_diff_since_start({ lcovPath: "./coverage/lcov.info" });
// Returns: { linesPercentageImpact: +2.3, branchesPercentageImpact: +1.8 }
Why baseline tracking? Without it, agents would need to keep initial coverage in their stateful memory throughout the session, consuming valuable context window space.
npm install -g test-coverage-mcp
Add this MCP server to your AI coding tool's configuration:
macOS: Edit ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: Edit %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
After updating, restart Claude Desktop.
Create or edit .cursor/mcp.json in your project root:
{
"mcpServers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
Create or edit .vscode/mcp.json in your workspace:
{
"servers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
Requires VS Code 1.99+ or Visual Studio 17.14+. Enterprise users need "MCP servers in Copilot" policy enabled.
macOS: Edit ~/.codeium/windsurf/mcp_config.json
Windows: Edit %APPDATA%\Codeium\Windsurf\mcp_config.json
Linux: Edit ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
Or use the GUI: Settings → Advanced Settings → Cascade → Add Server
coverage_summaryGet overall project coverage from an LCOV file.
Input:
{
lcovPath?: string // Optional. Defaults to "./coverage/lcov.info"
}
Output:
{
linesCoveragePercentage: number, // 0-100
branchesCoveragePercentage: number // 0-100
}
Example:
coverage_summary({ lcovPath: "./coverage/lcov.info" });
// { linesCoveragePercentage: 87.5, branchesCoveragePercentage: 82.1 }
coverage_file_summaryGet coverage for a specific file.
Input:
{
lcovPath?: string, // Optional. Defaults to "./coverage/lcov.info"
filePath: string // Required. Path to the file
}
Output:
{
path: string,
linesCoveragePercentage: number, // 0-100
branchesCoveragePercentage: number // 0-100
}
Example:
coverage_file_summary({
lcovPath: "./coverage/lcov.info",
filePath: "src/utils/parser.ts",
});
// { path: "src/utils/parser.ts", linesCoveragePercentage: 92.0, branchesCoveragePercentage: 88.5 }
start_recordingRecord current coverage as a baseline for later comparison.
Input:
{
lcovPath: string; // Required. Path to LCOV file to record
}
Output:
"Recording started";
Example:
start_recording({ lcovPath: "./coverage/lcov.info" });
// "Recording started"
get_diff_since_startCompare current coverage against the recorded baseline.
Input:
{
lcovPath: string; // Required. Path to current LCOV file
}
Output:
{
linesPercentageImpact: number, // Positive = improvement, negative = regression
branchesPercentageImpact: number // Positive = improvement, negative = regression
}
Example:
get_diff_since_start({ lcovPath: "./coverage/lcov.info" });
// { linesPercentageImpact: +2.3, branchesPercentageImpact: +1.8 }
Agent: "Let me check the current test coverage before I start working"
[Uses coverage_summary tool]
Agent: "Current coverage is 87.5% lines and 82.1% branches. I'll aim to maintain or improve this."
Agent: "I'll record the baseline coverage first"
[Uses start_recording tool]
Agent: "Now I'll add the new authentication feature with tests"
[Writes code and tests]
Agent: "Let me check the coverage impact"
[Uses get_diff_since_start tool]
Agent: "Great! Coverage increased by 2.3% for lines and 1.8% for branches."
Agent: "Let me check coverage for the file I just modified"
[Uses coverage_file_summary with filePath: "src/auth/validator.ts"]
Agent: "The validator.ts file now has 95% line coverage and 92% branch coverage."
This MCP server:
This server supports all standard LCOV file formats, including:
SF:, end_of_record)DA: entries)BRDA:, BRF:, BRH:)./coverage/lcov.infostart_recording before calling get_diff_since_start# Install dependencies
npm install
# Build
npm run build
# Run tests (with coverage!)
npm test
# Run linter
npm run lint
# Test with MCP inspector
npm run inspect
Contributions are welcome! Please feel free to submit a Pull Request.
MIT © Yoni Goldberg