Skip to main content

MCP integration

Vanta speaks the Model Context Protocol both directions — it mounts other MCP servers as tools, and it can expose itself as an MCP server. Either way, every call stays kernel-gated.

Connector lifecycle

Vanta resolves project .mcp.json, user ~/.vanta/mcp.json, and the explicit VANTA_MCP_SERVERS override into one project-scoped connector registry. Configured connectors stay dormant during normal startup: they do not spawn processes, print mount noise, or add their schemas to every model call. CLI, TUI, and Desktop use the registry on demand for transport, source, trust, OAuth state, project enablement, discovered tools/resources, health, and the last redacted error.

vanta mcp list
vanta mcp test <server>
vanta mcp trust <server> allow
vanta mcp disable <server>
vanta mcp enable <server>
vanta mcp reconnect <server>
vanta mcp receipts

A connector is not Ready until its transport test passes and project trust is explicit. OAuth connectors report Needs setup until authorization completes. Disabling writes the project-local MCP policy, so every Vanta host sees the same decision. Test, reconnect, trust, enable/disable, install, and import actions write credential-free receipts under .vanta/mcp/.

The registry does not weaken execution safety. Trust decides whether a connector may mount; every MCP tool call still passes through the kernel, and a kernel Block cannot be overridden by connector settings.

To deliberately mount enabled connectors at every session start, set mcp.autoMount to true in Vanta settings or export VANTA_MCP_AUTO_MOUNT=1. The environment override can also force it off with VANTA_MCP_AUTO_MOUNT=0.

As a client — mount external servers

List servers in .mcp.json (project-level) or ~/.vanta/mcp.json (user-level); project config merges over user config. Configuration alone does not start a server. Use the MCP panel, vanta mcp test/reconnect, the mount_mcp tool, or the explicit auto-mount setting when its tools are needed. Registered tools remain gated by assess().

{
"mcpServers": {
"my-server": { "command": "npx", "args": ["my-mcp-server"] }
}
}

The client is a dependency-free stdio and remote HTTP JSON-RPC implementation (initialize, tool and resource discovery, calls/reads, concurrent-request correlation). It also accepts a VANTA_MCP_SERVERS inline env override and supports remote OAuth without placing access tokens in registry state or receipts.

Mount at runtime

The mount_mcp tool spawns an MCP server mid-session and registers its tools into the live registry. The spawn itself is gated by the kernel.

As a server — expose Vanta

vanta mcp serve

This runs Vanta as an MCP server (mirror of the client). Every incoming call is gated by assess(): block / ask → an isError result (headless, no human present), only allow executes. A bounded allowlist (VANTA_MCP_SERVE_TOOLS, default 9 read-only tools) limits exposure.

MCP resources

list_mcp_resources and read_mcp_resource tools read resources exposed by mounted servers.

See Extending Vanta for plugins and other extension points.