Back to Browse

Release Gate MCP Server

Developer ToolsUse Caution4.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

Pre-deploy security auditor for AI agent code — the risks generic SAST misses.

About

Pre-deploy security auditor for AI agent code — the risks generic SAST misses.

Security Report

4.8
Use Caution4.8High Risk

release-gate is a security-focused MCP server with a well-designed security posture. The codebase demonstrates strong architectural choices (stdio-only transport, no network egress, path confinement, no code execution). The MCP server implementation adheres to its stated security model. No critical vulnerabilities or malicious patterns were identified. Minor code quality observations and dependency considerations are present but do not materially impact security. Supply chain analysis found 7 known vulnerabilities in dependencies (0 critical, 4 high severity). Package verification found 1 issue.

4 files analyzed · 13 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

What You'll Need

Set these up before or after installing:

Colon/semicolon-separated directories the server may read under. Defaults to the working directory. The server refuses any path outside these roots (blocks ../, absolute, and symlink escapes).Optional

Environment variable: RG_MCP_ALLOWED_ROOTS

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-vamsisudhakaran1-release-gate": {
      "env": {
        "RG_MCP_ALLOWED_ROOTS": "your-rg-mcp-allowed-roots-here"
      },
      "args": [
        "release-gate"
      ],
      "command": "uvx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

release-gate

A machine produced something consequential. A human has to decide whether the evidence is enough to act on it. Release-gate builds the case they decide from.

It does not generate results and it does not verify them — agents generate, tools verify, and release-gate assembles the argument those two leave behind, then says whether that argument is sound enough to put to a person.

PyPI version License Benchmark Security Policy

pip install release-gate
release-gate assure your-run.jsonl        # no config file, no YAML, no account

That works on an OpenTelemetry trace, a Langfuse export, a promptfoo result, or release-gate's own record format — the shape is detected, not declared. You get a verdict, what a person has to look at, and what would resolve it.

Nothing to install first: drop a run into the browser demo — it runs this same engine, and its three sample runs are the files in examples/assurance/, byte for byte.

Or run the five worked examples — an OpenTelemetry agent trace, a promptfoo eval, a destructive migration, a research swarm, and one that promotes:

cd examples/agents && ./run-all.sh

What each one demonstrates →


Three things it does that a scanner or a score cannot

1. It reduces machine work to a list a person can actually read

Two million records is not reviewable. A score over two million records is not reviewable either — it is one number standing in for a judgement nobody made.

Release-gate returns a bounded set of things that need a human, derived from which claims the decision actually rests on:

distinct producersrecords seenevidenceclaimsreaches a person
one agent, one action47601 item
10,248 workers10,2542,287,13310,2582,42013 items, 7 undroppable

Every figure in that table is measured by the test suite, not written here by hand — a claim that drifts from the implementation fails a test.

Criticality comes from reachability in the claim graph, never from volume — a claim one agent emitted once is exactly as load-bearing as one four hundred agents discussed.

And a shorter list is not a better case. That is a property in code that cannot return anything else, because the one dangerous way to read this table is that a smaller number is a win. It can equally mean detection got worse.

2. Every verdict says what it did not check

This is the part most tools skip. A pass that doesn't state its own coverage is indistinguishable from a pass that never looked.

WHAT WAS ASSESSED
  [    assessed]  input_integrity: the input file was hashed by release-gate
  [    assessed]  record_mapping: 6 of 6 record(s) mapped; 0 skipped
  [NOT_ASSESSED]  execution_reconstruction: no execution graph was reconstructed
  [NOT_ASSESSED]  replication: no verification attempt names a target
  [NOT_ASSESSED]  adversarial_review: no verifier set out to disprove this

NOT_ASSESSED is a first-class answer, kept apart from "we looked and found nothing" everywhere in the engine. So is UNKNOWN, and so is a refuted check as against an unresolved one. Collapsing those is how a gap comes to read as a clean bill of health.

3. When it holds, it returns the work order

A gate that only says no is a nag. Each item comes with what would close it:

[BLOCK]    RG-ACT-001    'execution_reconstruction' is stated as NOT_ASSESSED
             → supply the run's trace or tool-call log

[ADVISORY] RG-PROV-002   all evidence traces to a single producer
             → add evidence from an independently-operated producer

That list is machine-readable (--json), so the next agent run can go and get the evidence rather than a human re-reading the case to work out what was missing.


What it will not tell you

Not that a release is safe. Not that a result is guaranteed correct. Not that the gate is unhackable — twenty attacks run against the engine itself and one is recorded NOT_DEFENDED with what bounds it instead. Not that a case is uncontested, that hallucinations are solved, or that an expert has been replaced: the output is a list of what needs a person.

Each refusal is a property in code that cannot return anything else. docs/POSITIONING.md names every one with the line that enforces it.


From Python

import release_gate as rg

case = rg.create_case(objective="Deploy generated migration", subject=migration)
case.add_execution(trace)                       # the steps, or a native trace
case.add_verification(test_result, method="TEST_SUITE", outcome="PASSED",
                      verifier="ci://pytest", against_subject=True)

decision = case.finalize()     # PROMOTE / HOLD / BLOCK, with its coverage attached
print(decision.required_evidence)

The same four calls carry one agent's migration and a ten-thousand-worker research run. Not two products with a shared name — one code path: 346 engine functions are common to both, 87% of everything the single-agent path touches.


Configuration

Nothing is required to run. A methodology is what turns structure into a verdict — without one, release-gate reports everything structural it can see and holds, because "is this enough?" is a domain question and inventing an answer would be claiming a standard it does not have.

release-gate assure --list-methodologies
release-gate assure run.jsonl --methodology research-mathematics@1.1.0

One input, four yardsticks, four answers — each naming what it is missing:

methodologyverdictunmet
(none)HOLDMETHODOLOGY_REQUIRED
general-autonomous-action@1.0.0BLOCKno execution record
software-change@1.0.0HOLDstructural findings only
research-mathematics@1.1.0BLOCKmachine check, assumptions, independence

Organisation config (--config) layers your own standards on top and can only ever tighten.

📖 Full walkthrough: inputs, outputs, and what to configure →


We also do this

The assurance engine above is the product. These are separate lanes that feed it or stand on their own — each documented in its own place:

release-gate prOne verdict on what a pull request introduced — net-new agent risk only, inherited debt shown and never gated
Agent code scanningAST + taint analysis for the agent layer: model output reaching eval/pickle, prompt injection from RAG, uncapped LLM loops. 93-case corpus, 100% precision / 100% recall
Trace & eval ingestionOpenTelemetry · Langfuse · Arize-Phoenix · promptfoo convert in place — no bespoke file, no new instrumentation
Evidence packsA sealed, verifiable record of what was decided and on what
GitHub Action · MCP serverpip install 'release-gate[mcp]'
Assurance corpus16 constructed cases for the engine itself — publishes no headline precision figure, because on most of them precision is not a meaningful thing to measure

Docs

Demo & integration walkthroughinputs, outputs, configuration
Positioningevery claim, and the line that enforces it
Architecturehow the engine is put together
Referencefull command and feature reference
Changelogrelease history
Contributing · Security

Development

git clone https://github.com/VamsiSudhakaran1/release-gate
cd release-gate && pip install -e '.[dev]'
pytest -q

License

MIT — see LICENSE.

Reviews

No reviews yet

Be the first to review this server!