Skip to main content
Glama
Release Readiness Triage MCP

Release Readiness Triage MCP

by vola-trebla

🚦 release-readiness-triage-mcp

npm CI License: MIT

Stop reading CI logs. Start getting verdicts.

MCP server that aggregates test failures, cross-references flakiness history, and outputs a GO / CONDITIONAL_GO / NO_GO / INVESTIGATE release decision β€” so your AI agent can triage a broken CI run in seconds instead of asking you to read 3000 lines of logs.


πŸ€” The problem

In any real codebase, CI always has something failing. The hard question isn't "are there failures?" β€” it's "are these failures real regressions, or just the usual noise?"

Answering that requires correlating three signals at once:

  • πŸ” Error signatures β€” is this the same failure repeated 12 times, or 12 different problems?

  • πŸ“Š Flakiness history β€” is this test known to be unreliable?

  • πŸ”— Code changes β€” is the failing test actually related to what changed?

An AI agent can't do this without structured tools. Raw CI logs are thousands of lines. Flakiness databases are external. Code→test mapping requires AST analysis. Without this MCP, the agent just guesses.


Related MCP server: qa-toolkit-mcp

πŸ› οΈ Tools

aggregate_suite_failures

Groups failures by normalized error signature, deduplicates repeated errors, categorizes as assertion / timeout / network / crash. Pass customInfraPatterns for cloud-specific errors.

cross_reference_flakiness

Scores each failure against your flakiness history: KNOWN FLAKY, MILDLY FLAKY, or NO HISTORY.

correlate_code_changes

Matches changed files against failing tests. Works standalone or with pre-computed affected test lists from ast-impact-mapper-mcp.

generate_release_recommendation

The final step. Outputs a risk-weighted verdict with confidence score and full breakdown. Supports format: "markdown" for GitHub PR comments and Slack.

Verdict levels:

  • NO_GO β€” regression in a critical domain (payment, auth, billing, checkout, security)

  • CONDITIONAL_GO β€” regression in a low/medium-risk domain (analytics, docs, admin); review before releasing

  • GO β€” all failures are known flaky or infrastructure noise

  • INVESTIGATE β€” too many unknowns to decide

Output includes:

  • aggregate_risk_score β€” 0.0–1.0, probability union across all regression risk contributions

  • failing_tests_analysis[] β€” per-regression breakdown with domain, severity (HIGH/MEDIUM/LOW), risk_contribution, blast_radius

detect_temporal_failure_patterns

Analyzes historical failures with timestamps to identify chronometric artifacts β€” failures that only appear at the same UTC hour, weekday, day of month, or during DST transitions. When a pattern is found, the failure is a time artifact, not a code regression.

Output includes:

  • temporal_pattern_detected β€” boolean

  • clusters[] β€” per-test: pattern_type (hourly | daily | monthly | timezone_shift), cluster_times, confidence_score

analyze_rollback_readiness

Scans a repository for versioned migration files (Flyway V*.sql, Prisma migration.sql, Liquibase XML/YAML) and classifies each operation as additive (rollback safe) or destructive (forward-fix only).

Detected destructive operations: DROP TABLE, DROP COLUMN, ALTER COLUMN TYPE, MODIFY COLUMN, TRUNCATE

Output includes:

  • rollback_eligible β€” boolean

  • blocking_migrations[] β€” each with file, line, operation, reason

  • deployment_strategy β€” standard | forward_fix_only


πŸ§ͺ What it looks like in practice

5 failures in CI. What's real, what's noise?

failures:
  - Auth Suite > login with expired token   β†’ "Expected status 200, got 401"
  - API Suite > health check                β†’ "connect ECONNREFUSED 127.0.0.1:3000"
  - Button Suite > renders button correctly β†’ "Expected null, got <button>Submit</button>"
  - Search Suite > debounce timing          β†’ "Expected 42, received 43"
  - Storage Suite > upload avatar           β†’ "GCP quota exceeded for this project"

changedFiles: ["src/components/Button.tsx"]
affectedTests: ["renders button correctly"]
customInfraPatterns: ["GCP quota exceeded"]
format: "markdown"

Output:

## πŸ”΄ Release Recommendation: NO_GO (75% confidence)

> 1 confirmed regression(s) in critical domain(s) [payment]. Do not release.

**Aggregate risk score:** 1.0

| Category            | Count |
| ------------------- | ----- |
| Total failures      | 5     |
| πŸ”΄ Real regressions | 1     |
| 🟑 Known flaky      | 2     |
| βšͺ Infra blips      | 2     |
| ❓ Unknown          | 0     |

### Risk Breakdown

| Test                                   | Domain | Severity | Risk | Blast Radius |
| -------------------------------------- | ------ | -------- | ---- | ------------ |
| Button Suite::renders button correctly | core   | MEDIUM   | 0.5  | 1            |

### Blockers (must fix before release)

**Button Suite > renders button correctly**

- Test is directly affected by code changes in this commit
- `Expected null, got <button>Submit</button>`

### Safe to ignore

- ~~Auth Suite > login with expired token~~ β€” Historically flaky: 73% failure rate in history
- ~~API Suite > health check~~ β€” Error pattern matches infrastructure issues (network)
- ~~Search Suite > debounce timing~~ β€” Mildly flaky: 22% historical failure rate
- ~~Storage Suite > upload avatar~~ β€” Error pattern matches infrastructure issues (network)

One tool call. One verdict. Go fix Button.tsx.


⚑ Setup

{
  "mcpServers": {
    "release-readiness-triage": {
      "command": "npx",
      "args": ["-y", "release-readiness-triage-mcp"]
    }
  }
}

πŸš€ Usage

"Here are the failures from our CI run, our flakiness database, and the files changed in this PR. Is it safe to release?"

The agent calls generate_release_recommendation and returns a verdict with a full breakdown β€” ready to paste into a PR comment or Slack.

Works standalone, or as a meta-orchestrator on top of:


License

MIT

Available Tools

6 tools
aggregate_suite_failuresA

Parse a CI test run and group failures by error signature. Deduplicates repeated errors and categorizes them as assertion, timeout, network, or crash. Use this as the first step before triage.

Inputs: failures (required), totalTests (required), passedTests (required), runId, +3 more.

analyze_rollback_readinessA

Scans a repository for versioned database migration files (Flyway V*.sql, Prisma migration.sql, Liquibase XML/YAML) and classifies each operation as additive (rollback safe) or destructive (forward-fix only). Returns rollback_eligible, a list of blocking_migrations with file and line, and deployment_strategy. Use before recommending deployment to determine whether a rollback is safe after go-live.

Inputs: repo_path (required).

correlate_code_changesA

Match a list of changed files against failing tests to determine which failures are directly caused by the code changes in this commit. Returns a correlation mapping.

Inputs: failures (required), changedFiles (required), affectedTests.

cross_reference_flakinessA

Given a list of test failures and a flakiness history, score each failure by how likely it is to be a known flaky test vs a real regression. Returns probability scores per test.

Inputs: failures (required), flakinessHistory (required).

detect_temporal_failure_patternsA

Analyzes a history of test failures with timestamps to detect chronometric patterns: failures that cluster at the same UTC hour (hourly jobs), same day of month (billing runs), same weekday (scheduled jobs), or around DST transitions. When a pattern is found, the failure is a time artifact β€” not a code regression. The agent should schedule a re-run at a different time rather than investigating the source code.

Inputs: failures (required).

generate_release_recommendationA

The final step: combines failures, flakiness history, and code change correlation to produce a GO / NO_GO / INVESTIGATE verdict with confidence score and a breakdown of blockers vs safe-to-ignore failures.

Inputs: failures (required), changedFiles (required), flakinessHistory (required), format, +2 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 6 tools

    Disambiguation4/5

    Each tool targets a distinct analysis step: grouping failures, scoring flakiness, correlating code changes, detecting temporal patterns, assessing rollback readiness, and final recommendation. Some overlap exists between cross_reference_flakiness and detect_temporal_failure_patterns (both identify non-regression failures), but descriptions clearly distinguish their inputs and purpose.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., aggregate_suite_failures, correlate_code_changes). The verbs are varied and descriptive, and the naming scheme is uniform throughout the set.

    Tool Count5/5

    Six tools is well-scoped for a release readiness triage server. Each tool represents a necessary step in the triage workflow, with no redundant or trivial additions.

    Completeness4/5

    The tool set covers the full triage pipeline from raw failure aggregation through final recommendation, plus rollback readiness. Minor gaps exist: the agent must supply flakiness history and changed files externally, and there is no direct tool to retrieve raw CI output, but these are acceptable workarounds.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      MCP server that parses stack traces and logs to generate deduplicated issue drafts with severity, repro steps, and owner guesses.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      This MCP server builds a local flakiness knowledge graph from Playwright test run history and enables AI agents to query flaky tests, failure patterns, trends, and correlated git commits, helping diagnose test reliability without manual analysis.
      63 npm
      MIT