Fail-closed merge gate an agent calls before saying done: MERGE, BLOCK or INCONCLUSIVE.
Connect Runs on your machine
claude mcp add adversary-gate -e ADVERSARY_GATE_BASE_REF=<ADVERSARY_GATE_BASE_REF> -e ADVERSARY_GATE_REQUIRE_PINNED_BASE=<ADVERSARY_GATE_REQUIRE_PINNED_BASE> -e ADVERSARY_GATE_PYTHON=<ADVERSARY_GATE_PYTHON> -e ADVERSARY_GATE_POLICY=<ADVERSARY_GATE_POLICY> -- uvx adversary-gate-mcp==3.0.17
{
"mcpServers": {
"adversary-gate": {
"command": "uvx",
"args": [
"adversary-gate-mcp==3.0.17"
],
"env": {
"ADVERSARY_GATE_BASE_REF": "<ADVERSARY_GATE_BASE_REF>",
"ADVERSARY_GATE_REQUIRE_PINNED_BASE": "<ADVERSARY_GATE_REQUIRE_PINNED_BASE>",
"ADVERSARY_GATE_PYTHON": "<ADVERSARY_GATE_PYTHON>",
"ADVERSARY_GATE_POLICY": "<ADVERSARY_GATE_POLICY>"
}
}
}
}
{
"mcpServers": {
"adversary-gate": {
"command": "uvx",
"args": [
"adversary-gate-mcp==3.0.17"
],
"env": {
"ADVERSARY_GATE_BASE_REF": "<ADVERSARY_GATE_BASE_REF>",
"ADVERSARY_GATE_REQUIRE_PINNED_BASE": "<ADVERSARY_GATE_REQUIRE_PINNED_BASE>",
"ADVERSARY_GATE_PYTHON": "<ADVERSARY_GATE_PYTHON>",
"ADVERSARY_GATE_POLICY": "<ADVERSARY_GATE_POLICY>"
}
}
}
}
{
"servers": {
"adversary-gate": {
"type": "stdio",
"command": "uvx",
"args": [
"adversary-gate-mcp==3.0.17"
],
"env": {
"ADVERSARY_GATE_BASE_REF": "<ADVERSARY_GATE_BASE_REF>",
"ADVERSARY_GATE_REQUIRE_PINNED_BASE": "<ADVERSARY_GATE_REQUIRE_PINNED_BASE>",
"ADVERSARY_GATE_PYTHON": "<ADVERSARY_GATE_PYTHON>",
"ADVERSARY_GATE_POLICY": "<ADVERSARY_GATE_POLICY>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
ADVERSARY_GATE_BASE_REFOptional | Baseline git ref (e.g. origin/main). Unset, the agent may pick it, and whoever picks the baseline picks the oracle |
ADVERSARY_GATE_REQUIRE_PINNED_BASEOptional | Set to 1 to refuse any run without ADVERSARY_GATE_BASE_REF, so the agent can never choose the baseline (the oracle) |
ADVERSARY_GATE_PYTHONOptional | Interpreter that runs the tests; must be one the agent cannot write to |
ADVERSARY_GATE_POLICYOptional | Extra gate flags set by the operator; evidence flags are refused |
Details
| Package | [email protected] (PYPI, stdio) |
| First published | 27 Oct 2026 |
| Last updated | 27 Oct 2026 |
| Registry name | io.github.Sanflow10/adversary-gate |
More ai and media servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
