MCP Test Failure Analysis Server
# MCP Server Demo
This project contains Python MCP servers for QA-oriented test failure analysis, built with `FastMCP`.
<img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/dcb39a24-21c8-4658-8ca3-ed3fe549735e" />
## Current Structure
```text
mcp-server-demo/
├── FailureAnalysisFromLogs.py
├── README.md
├── logs/
├── pyproject.toml
├── testFailureAnalysis.py
└── uv.lock
```
## What This Project Includes
- `testFailureAnalysis.py`
- `analyze_test_failure`
- `cluster_failures`
- `detect_flaky_tests`
- `FailureAnalysisFromLogs.py`
- `analyze_test_failure`
- Reads and classifies local `.log` files from the `logs/` folder
- `logs/`
- Sample failure logs used by the log-based MCP server
- `pyproject.toml`
- Python version and dependency configuration
- `uv.lock`
- Locked dependency versions for reproducible installs
- `.vscode/mcp.json`
- MCP server entries for `test-failure-analysis`, `test-failure-analysis-from-logs`, and `mcp-atlassian`
## Prerequisites
- Python `3.11` or later
- `uv`
- Internet access for the first dependency install
## Installation
From the repository root:
```bash
cd mcp-server-demo
uv sync
```
## Running the Server
Start the input-based MCP server with:
```bash
uv run python testFailureAnalysis.py
```
Start the log-based MCP server with:
```bash
uv run python FailureAnalysisFromLogs.py
```
## Available Tools
### `analyze_test_failure`
Analyzes a failed test using the test name, stack trace, and logs, then returns a likely failure category and recommendation.
### `analyze_test_failure` in `FailureAnalysisFromLogs.py`
Analyzes local `.log` files from the `logs/` folder and returns failure classification, likely root cause, recommendation, and important error lines. It can analyze all logs, a specific test name, or an exact log file name.
### `cluster_failures`
Groups similar failures by stack trace signature so repeated patterns are easier to spot.
### `detect_flaky_tests`
Reviews historical pass/fail results and identifies tests that show flaky behavior.
## Optional Local MCP Configuration
The repository root contains `.vscode/mcp.json`, which can be used by MCP-aware tooling for local server setup during development. It includes entries for `test-failure-analysis`, `test-failure-analysis-from-logs`, and `mcp-atlassian`.
## Atlassian MCP
The local MCP configuration includes an `mcp-atlassian` server entry for Jira access.
### How to use it
Use the configured `mcp-atlassian` entry from `.vscode/mcp.json` in your MCP-aware client.
To run it manually, use:
```bash
JIRA_URL=<your-jira-url> \
JIRA_USERNAME=<your-jira-username> \
JIRA_API_TOKEN=<your-jira-api-token> \
uvx mcp-atlassian
```
## Troubleshooting
- If `uv` is not available, install it and reopen the terminal.
- If dependency installation fails, confirm Python `3.11+` is active.
- If the server does not start, run `uv sync` again inside `mcp-server-demo`.
## Work Flow Image in Image folder at image/project-workflow.png
TDQS
Scored across 3 tools
Each tool targets a distinct aspect of test failure analysis: root cause analysis for a single failure, grouping failures by error signature, and detecting flaky tests from history. There is no overlap or ambiguity.
All tool names follow a consistent verb_noun pattern using snake_case (analyze_test_failure, cluster_failures, detect_flaky_tests), making them predictable and easy to understand.
With exactly 3 tools, the server is well-scoped for test failure analysis. This number is sufficient to cover core functionalities without being overwhelming or too sparse.
The tool set covers essential operations for analyzing test failures, clustering, and flakiness detection. However, it lacks tools for data retrieval (e.g., fetching test history) or generating summary reports, which are minor gaps.