Skip to main content
Glama
rudrathkr

MCP Test Failure Analysis Server

by rudrathkr
README.md
# 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

B3.3/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues