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
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.
What You'll Need
Set these up before or after installing:
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 GitHubFrom 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.
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
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 producers | records seen | evidence | claims | reaches a person | |
|---|---|---|---|---|---|
| one agent, one action | 4 | 7 | 6 | 0 | 1 item |
| 10,248 workers | 10,254 | 2,287,133 | 10,258 | 2,420 | 13 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:
| methodology | verdict | unmet |
|---|---|---|
| (none) | HOLD | METHODOLOGY_REQUIRED |
general-autonomous-action@1.0.0 | BLOCK | no execution record |
software-change@1.0.0 | HOLD | structural findings only |
research-mathematics@1.1.0 | BLOCK | machine 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 pr | One verdict on what a pull request introduced — net-new agent risk only, inherited debt shown and never gated |
| Agent code scanning | AST + 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 ingestion | OpenTelemetry · Langfuse · Arize-Phoenix · promptfoo convert in place — no bespoke file, no new instrumentation |
| Evidence packs | A sealed, verifiable record of what was decided and on what |
| GitHub Action · MCP server | pip install 'release-gate[mcp]' |
| Assurance corpus | 16 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 walkthrough | inputs, outputs, configuration |
| Positioning | every claim, and the line that enforces it |
| Architecture | how the engine is put together |
| Reference | full command and feature reference |
| Changelog | release 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!
More Developer Tools MCP Servers
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Worldmonitor
Freeby Koala73 · Developer Tools
Live markets, conflicts, country risk, chokepoints, energy, and China decision signals. 89 tools.
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
