Context engineering: Make your agents aware of how they affect 🧪 test coverage🧪 during a coding session
https://github.com/goldbergyoni/test-coverage-mcp.git
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:
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