Skip to main content
Glama
rudrathkr

MCP Test Failure Analysis Server

by rudrathkr

MCP 服务器演示

本项目包含用于 QA 导向的测试失败分析的 Python MCP 服务器,基于 FastMCP 构建。

当前结构

mcp-server-demo/
├── FailureAnalysisFromLogs.py
├── README.md
├── logs/
├── pyproject.toml
├── testFailureAnalysis.py
└── uv.lock

Related MCP server: QA Copilot AI

本项目包含内容

  • testFailureAnalysis.py

    • analyze_test_failure

    • cluster_failures

    • detect_flaky_tests

  • FailureAnalysisFromLogs.py

    • analyze_test_failure

    • 读取并分类 logs/ 文件夹中的本地 .log 文件

  • logs/

    • 基于日志的 MCP 服务器使用的示例失败日志

  • pyproject.toml

    • Python 版本和依赖配置

  • uv.lock

    • 用于可重复安装的锁定依赖版本

  • .vscode/mcp.json

    • test-failure-analysis、test-failure-analysis-from-logs 和 mcp-atlassian 的 MCP 服务器条目

先决条件

  • Python 3.11 或更高版本

  • uv

  • 首次安装依赖时需要互联网访问

安装

从仓库根目录执行:

cd mcp-server-demo
uv sync

运行服务器

启动基于输入的 MCP 服务器:

uv run python testFailureAnalysis.py

启动基于日志的 MCP 服务器:

uv run python FailureAnalysisFromLogs.py

可用工具

analyze_test_failure

使用测试名称、堆栈跟踪和日志分析失败的测试,然后返回可能的失败类别和建议。

FailureAnalysisFromLogs.py 中的 analyze_test_failure

分析 logs/ 文件夹中的本地 .log 文件,并返回失败分类、可能的根本原因、建议以及重要的错误行。它可以分析所有日志、特定的测试名称或确切的日志文件名。

cluster_failures

按堆栈跟踪签名对相似的失败进行分组,以便更容易发现重复的模式。

detect_flaky_tests

审查历史通过/失败结果,并识别表现出不稳定行为的测试。

可选的本地 MCP 配置

仓库根目录包含 .vscode/mcp.json,可供支持 MCP 的工具在开发期间进行本地服务器设置。它包含 test-failure-analysis、test-failure-analysis-from-logs 和 mcp-atlassian 的条目。

Atlassian MCP

本地 MCP 配置包含一个用于 Jira 访问的 mcp-atlassian 服务器条目。

如何使用

在支持 MCP 的客户端中使用 .vscode/mcp.json 中配置的 mcp-atlassian 条目。

若要手动运行,请使用:

JIRA_URL=<your-jira-url> \
JIRA_USERNAME=<your-jira-username> \
JIRA_API_TOKEN=<your-jira-api-token> \
uvx mcp-atlassian

故障排除

  • 如果 uv 不可用,请安装它并重新打开终端。

  • 如果依赖安装失败,请确认 Python 3.11+ 处于活动状态。

  • 如果服务器无法启动,请在 mcp-server-demo 中再次运行 uv sync。

工作流程图片位于 image/project-workflow.png

Available Tools

3 tools
analyze_test_failureC

Analyze a failed test and suggest likely root cause.

NameRequiredDescriptionDefault
test_nameYes
stack_traceYes
logsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description only gives a high-level purpose without detailing behavior (e.g., whether it is safe, requires permissions, or modifies state). The description does not compensate for missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence), which is concise but lacks necessary detail. It is front-loaded, but could be more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 required parameters, no output schema, and no annotations, the description is severely lacking. It does not explain return values, how inputs are used, or any other context needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; the description adds no meaning about the three parameters (test_name, stack_trace, logs). They are just named but not explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: analyzing a failed test and suggesting a root cause. However, it does not explicitly differentiate from siblings like 'cluster_failures' or 'detect_flaky_tests', though the intent is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites or exclusions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cluster_failuresB
Group failures by similar error signature.
Each failure should contain test_name and stack_trace.
NameRequiredDescriptionDefault
failuresYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It only states grouping by error signature but omits details about output, state modifications, error handling, or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, highly concise, and front-loaded with the core action. Every word adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no description of return values. The tool clusters failures but doesn't indicate what the output looks like (e.g., clusters with centroid signatures). This is a significant gap for a grouping tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'failures' is an array of objects without schema descriptions. The description compensates by specifying that each failure should contain 'test_name' and 'stack_trace', adding meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'group' and resource 'failures by similar error signature', and specifies required fields. It distinguishes from sibling tools like analyze_test_failure and detect_flaky_tests, though not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings. There is no mention of scenarios where clustering is appropriate or when to use alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_flaky_testsB
Detect flaky tests from historical pass/fail data.
Each item should contain test_name and status.
NameRequiredDescriptionDefault
test_historyYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It does not disclose whether the tool is read-only, destructive, or has side effects. It only hints at input formatting (test_name and status) but omits behavior like output structure or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences: the first states the tool's purpose, and the second provides an input hint. No unnecessary words; every sentence contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one array parameter and no output schema, the description covers the core purpose and input requirement. However, it lacks details on output (e.g., what the tool returns) and fails to provide context relative to siblings. It is minimally adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds that each item should contain 'test_name and status', which provides necessary meaning beyond the schema (which only says array of objects with additionalProperties). However, it does not specify data types or expected values, so it adds limited value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Detect'), the resource ('flaky tests'), and the data source ('historical pass/fail data'). It distinguishes from sibling tools like 'analyze_test_failure' which focuses on analyzing a specific failure, and 'cluster_failures' which clusters failures, making the tool's purpose distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives ('analyze_test_failure', 'cluster_failures'). It implies usage for historical data but does not set context for selection, leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedanalyze_test_failure
    • First observedcluster_failures
    • First observeddetect_flaky_tests

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

Related MCP Connectors

Related MCP Servers