MCP gateway
Govern an MCP server's tool calls with no changes to your agent's code.
Drop AxioRank between an MCP client and an MCP server. Every tools/call is
inspected by the same content-risk + policy engine as the SDK before it reaches
the upstream, and written to a redacted audit log — governance by changing one
config block.
Local (stdio) servers
For servers your client launches locally, wrap the command with the
@axiorank/mcp-gateway
shim.
- In the dashboard: Outbound → MCP Gateway → Add MCP Server, choose Local (stdio shim), pick the governing agent, and copy the slug.
- Wrap your server command in your client config (
claude_desktop_config.json, Cursormcp.json, …):
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@axiorank/mcp-gateway", "--", "npx", "-y", "@modelcontextprotocol/server-github"],
"env": {
"AXIORANK_KEY": "axr_live_xxxxxxxxxxxxxxxx",
"AXIORANK_SERVER": "github-mcp",
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
}
}
}
}Everything after -- is your upstream server command, launched and managed by
the shim. Only the (server-side redacted) call arguments ever leave your machine.
Environment
| Variable | Required | Default | Description |
|---|---|---|---|
AXIORANK_KEY | ✅ | — | The governing agent's API key. |
AXIORANK_SERVER | ✅ | — | The registered server slug (policy/audit attribution). |
AXIORANK_BASE_URL | https://app.axiorank.com | AxioRank base URL. | |
AXIORANK_FAIL | open | open = forward if AxioRank is unreachable; closed = block. |
Remote (Streamable HTTP) servers
You don't need the shim. Register the server in the dashboard and point your client's HTTP transport at the gateway URL AxioRank generates for it.
Enforce vs monitor
Each MCP server has a posture. Under monitor the verdict is logged but the
call always forwards; under enforce a denied tools/call is answered with
an isError result the model can read and never reaches the upstream. Roll out
in monitor first, then flip to enforce.
Next steps
- Gateway API — the underlying verdict contract.
- Content-inspection engine — what each call is scored against.