iflow-mcp_crisschan-server 0.1.0
MCP server for JaCoCo code coverage report analysis
Requires Python: >=3.11

[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/crisschan-mcp-jacoco-reporter-badge.png)](https://mseep.ai/app/crisschan-mcp-jacoco-reporter)

# MCP-JaCoCo
MCP-JaCoCo is a server tool that converts JaCoCo code coverage reports into formats optimized for Large Language Models (LLMs), making AI-driven analysis easier and more effective.

# Why It Matters
As AI and LLMs play a bigger role in software development, traditional code coverage reports—like those from JaCoCo—need a makeover. While great for humans, their XML format isn’t ideal for AI tools to process or analyze. MCP-JaCoCo bridges this gap by transforming these reports into LLM-friendly formats, unlocking powerful benefits for development teams:

- Quick, meaningful summaries of code coverage
- Easy identification of untested or poorly tested code
- Smart suggestions for new test cases
- Streamlined AI-assisted test planning
- Automated documentation of coverage results
With MCP-JaCoCo, teams can tap into AI’s full potential, boosting efficiency and insight in testing workflows.

# What It Solves
- **Complex Formats**: Simplifies JaCoCo’s dense XML reports for AI use
- **Scattered Data**: Pulls coverage metrics into one accessible place
- **Slow Analysis**: Cuts down on time-consuming manual reviews
- **Integration Hurdles**: Makes raw data play nicely with AI tools

# Key Features
- **Smart Conversion**: Transforms JaCoCo XML reports into LLM-friendly JSON format
- **Flexible Coverage Types**: Supports multiple coverage metrics (instruction, branch, line, etc.)
- **Efficient Processing**: Fast and lightweight report processing
- **Structured Output**: Well-organized JSON format for easy AI consumption
- **Customizable Analysis**: Filter coverage data by specific metrics of interest

# Installation
Install MCP-JaCoCo using uv with this configuration:
```
{
  "mcpServers": {
     "mcp-jacoco-reporter-server": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "mcp",
        "run",
        "/Users/crisschan/workspace/pyspace/mcp-jacoco-reporter/mcp-jacoco-reporter-server.py"
      ],
      "env": {
        "COVERED_TYPES": "nocovered, partiallycovered, fullcovered"
      },
      "alwaysAllow": [
        "jacoco_reporter_server"
      ]
    }
  }
}
```

# Tool
## jacoco_reporter_server

- Reads JaCoCo XML report and returns coverage data in JSON format
- Input:
  - jacoco_xmlreport_path: Path to JaCoCo xml report path(jacoco.xml)
- Return:
  - String, formatted JSON data containing coverage metrics

Example output format:
```json
[
    {
        "sourcefile": "PasswordUtil.java",
        "package": "com/cicc/ut/util",
        "lines": {
            "nocovered": [],
            "partiallycovered": []
        },
        "branch": {
            "nocovered": [],
            "partiallycovered": []
        }
    },
    {
        "sourcefile": "UserServiceImpl.java",
        "package": "com/cicc/ut/service/impl",
        "lines": {
            "nocovered": [
                33,
                67,
                69,
                71,
                72
            ],
            "partiallycovered": []
        },
        "branch": {
            "nocovered": [
                67
            ],
            "partiallycovered": [
                32
            ]
        }
    },
    {
        "sourcefile": "Constants.java",
        "package": "com/cicc/ut/constants",
        "lines": {
            "nocovered": [],
            "partiallycovered": []
        },
        "branch": {
            "nocovered": [],
            "partiallycovered": []
        }
    },
    {
        "sourcefile": "AuthException.java",
        "package": "com/cicc/ut/exceptions",
        "lines": {
            "nocovered": [],
            "partiallycovered": []
        },
        "branch": {
            "nocovered": [],
            "partiallycovered": []
        }
    },
    {
        "sourcefile": "UserService.java",
        "package": "com/cicc/ut/service",
        "lines": {
            "nocovered": [],
            "partiallycovered": []
        },
        "branch": {
            "nocovered": [],
            "partiallycovered": []
        }
    }
]
```