Deployment¶
This page covers running vaultwarden-mcp as long-lived servers.
vaultwarden-mcpships both an MCP server (console scriptvaultwarden-mcp) and an A2A agent server (console scriptvaultwarden-agent).
Deployment Options¶
vaultwarden-mcp exposes its MCP server (console script vaultwarden-mcp) four ways. Pick the
row that matches where the server runs relative to your MCP client, then copy the
matching mcp_config.json below.
| # | Option | Transport | Where it runs | mcp_config.json key |
|---|---|---|---|---|
| 1 | stdio | stdio |
client launches a subprocess | command |
| 2 | Streamable-HTTP (local) | streamable-http |
a local network port | command or url |
| 3 | Local container | stdio |
reviewed Docker / Podman image on this host | command |
| 4 | Remote URL | streamable-http |
operator-owned authenticated TLS ingress | url |
1. stdio (local subprocess)¶
{
"mcpServers": {
"vaultwarden-mcp": {
"command": "vaultwarden-mcp",
"args": [],
"env": {
"MCP_TOOL_MODE": "intent"
}
}
}
}
2. Streamable-HTTP (local process)¶
vaultwarden-mcp --transport streamable-http --host 127.0.0.1 --port 8000
curl -s http://loopback.invalid:8000/health # {"status":"OK"}
Connect to the running process by URL:
3. Local container¶
Launch a container directly from mcp_config.json (swap docker for podman for a
daemonless runtime):
{
"mcpServers": {
"vaultwarden-mcp": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--read-only", "--cap-drop=ALL",
"--security-opt=no-new-privileges", "--pids-limit=256",
"--tmpfs", "/tmp:rw,noexec,nosuid,nodev,size=64m",
"-e", "TRANSPORT=stdio",
"<registry>/vaultwarden-mcp@sha256:<digest>"
]
}
}
}
Supply the provider profile through the operator-owned AgentConfig mount or secret projection. The image and this document contain no endpoint, credential, or trust material.
4. Remote URL (authenticated TLS ingress)¶
When the server is deployed remotely, connect through its operator-supplied authenticated HTTPS ingress; no local process or image is required:
Configure outbound MCP identity and trust references in AgentConfig. The server
must use direct TLS or an explicitly trusted TLS-terminating ingress and an exact
MCP_ALLOWED_HOSTS policy; do not commit the endpoint, credentials, or trust paths.
Docker Compose¶
Set VAULTWARDEN_MCP_IMAGE (and VAULTWARDEN_AGENT_IMAGE for the agent stack),
AUTH_TYPE, and AGENT_CONFIG_DIR (see .env.example) before running either file —
both required references have no default:
docker compose -f docker/mcp.compose.yml up -d # MCP server only
docker compose -f docker/agent.compose.yml up -d # MCP + agent