Vanta MCP Server
Servidor MCP de Vanta
Un servidor MCP para la plataforma de cumplimiento Vanta. Expone 16 herramientas para gestionar controles, vulnerabilidades, proveedores, pruebas, escenarios de riesgo, políticas, equipos monitorizados, documentos y hallazgos.
Transportes
Transporte | Endpoint | Caso de uso |
Streamable HTTP |
| Claude Desktop, la mayoría de clientes MCP |
SSE |
| Clientes heredados (n8n, etc.) |
Health |
| Comprobaciones de estado del contenedor |
Inicio rápido — Docker
1. Obtener credenciales
Inicia sesión en la Consola de desarrollador de Vanta.
Ve a Settings → API Access.
Crea una aplicación OAuth: copia el Client ID y el Client Secret.
Concede los alcances (scopes) que requieran tus herramientas (normalmente
vanta.readyvanta.write).
2. Configurar
cp .env.example .env
# Edit .env — set OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET at minimumEjemplo de .env:
OAUTH_CLIENT_ID=your_client_id
OAUTH_CLIENT_SECRET=your_client_secret
AUTH_TOKEN= # optional — requires Bearer auth on /mcp and /sse
PORT=80103. Ejecutar
docker compose up -d
# Server: http://localhost:8010
# Health: http://localhost:8010/health4. Conectar Claude Desktop
Añade a claude_desktop_config.json:
{
"mcpServers": {
"vanta": {
"type": "http",
"url": "http://localhost:8010/mcp"
}
}
}Si AUTH_TOKEN está configurado:
{
"mcpServers": {
"vanta": {
"type": "http",
"url": "http://localhost:8010/mcp",
"headers": {
"Authorization": "Bearer YOUR_AUTH_TOKEN"
}
}
}
}Inicio rápido — Local (sin Docker)
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
export OAUTH_CLIENT_ID=your_client_id
export OAUTH_CLIENT_SECRET=your_client_secret
python -m src.serverVariables de entorno
Variable | Predeterminado | Descripción |
|
| Informativo: tanto |
|
| Dirección de enlace |
|
| Puerto HTTP (también acepta el |
| (desactivado) | Si se establece, los clientes deben enviar |
|
|
|
|
| Tiempo de espera de solicitud HTTP en segundos |
|
| URL base de la API de Vanta |
| — | Inquilino predeterminado: ID de cliente OAuth2 de Vanta ( |
| — | Inquilino predeterminado: secreto de cliente OAuth2 de Vanta ( |
OAUTH_CLIENT_ID / OAUTH_CLIENT_SECRET solo se utilizan para crear automáticamente una entrada de inquilino "default". Para despliegues multiinquilino, utiliza config/tenants.json en su lugar.
Multiinquilino
Para múltiples organizaciones de Vanta, rellena config/tenants.json (copia desde config/tenants.json.example):
{
"tenants": [
{
"id": "acme-corp",
"vanta_base_url": "https://api.vanta.com",
"vanta_client_id": "vci_CLIENT_ID_A",
"vanta_client_secret": "vcs_CLIENT_SECRET_A"
},
{
"id": "contoso",
"vanta_base_url": "https://api.vanta.com",
"vanta_api_token": "vat_PERSONAL_ACCESS_TOKEN_B"
}
]
}El valor id es lo que tu agente/cliente envía en la cabecera de solicitud X-Tenant-ID:
X-Tenant-ID: acme-corp
Authorization: Bearer <AUTH_TOKEN> ← only if AUTH_TOKEN is set in .envCampos de credenciales:
Campo | Requerido | Descripción |
| ✅ | Debe coincidir exactamente con la cabecera |
| Opcional | Predeterminado a |
| ✅* | ID de cliente OAuth (prefijo: |
| ✅* | Secreto de cliente OAuth (prefijo: |
| ✅* | Token de acceso personal: alternativa a OAuth (prefijo: |
*Se requiere un método de autenticación por inquilino. Se recomienda OAuth para producción.
Si existe "default" en tenants.json, las solicitudes sin una cabecera X-Tenant-ID utilizarán automáticamente esas credenciales. Consulta ../MCP-Multi-Tenant-Guide.md para ver ejemplos completos de arquitectura y uso del cliente.
config/tenants.json está ignorado por git y nunca se incluye en la imagen de Docker; se monta en tiempo de ejecución a través del volumen ./config:/app/config:ro.
Herramientas
Controles
Herramienta | Descripción |
| Lista todos los controles con paginación opcional |
| Obtiene todos los detalles de un control específico por ID |
| Lista todas las pruebas vinculadas a un control específico |
Vulnerabilidades
Herramienta | Descripción |
| Lista vulnerabilidades con paginación opcional |
| Actualiza el estado de remediación y las notas de una vulnerabilidad |
| Lista hallazgos de vulnerabilidades con paginación opcional |
| Desactiva una vulnerabilidad por ID |
Proveedores
Herramienta | Descripción |
| Lista proveedores aprobados con paginación opcional |
| Obtiene todos los detalles de un proveedor específico por ID |
| Lista proveedores descubiertos automáticamente (desde integraciones) |
Pruebas
Herramienta | Descripción |
| Lista todas las pruebas de cumplimiento con paginación opcional |
| Lista entidades asociadas con una prueba específica |
Riesgos y políticas
Herramienta | Descripción |
| Lista escenarios de riesgo con paginación opcional |
| Lista políticas de seguridad con paginación opcional |
Activos y documentos
Herramienta | Descripción |
| Lista equipos monitorizados por agentes de Vanta |
| Lista documentos (políticas, procedimientos, evidencia) |
Flujo de autenticación
Claude Desktop → POST /mcp
→ TenantAuthMiddleware (validates AUTH_TOKEN if set, reads X-Tenant-ID)
→ _require_client() → tenants.json lookup or env vars
→ OAuth2 token exchange (POST https://api.vanta.com/oauth/token)
→ Vanta API call with Bearer token
→ ResponseLos tokens se almacenan en caché por instancia de inquilino y se actualizan automáticamente en caso de error 401.
Diseño del proyecto
Vanta-MCP/
├── src/
│ ├── server.py # Starlette app; /mcp, /sse, /health endpoints
│ ├── middleware.py # TenantAuthMiddleware (AUTH_TOKEN + X-Tenant-ID)
│ ├── context.py # Request-scoped tenant ID storage
│ ├── tools.py # All 16 MCP tool functions
│ └── vanta_client.py # Vanta API client (OAuth2, all endpoints)
├── config/
│ ├── tenants.json # Gitignored — your multi-tenant config
│ └── tenants.json.example # Template — safe to commit
├── Dockerfile
├── docker-compose.yml
├── docker-compose.override.yml.example
├── requirements.txt
├── .env.example
└── README.mdSolución de problemas
401 Unauthorized
Verifica que
OAUTH_CLIENT_IDyOAUTH_CLIENT_SECRETsean correctos.Asegúrate de que la aplicación OAuth tenga los alcances requeridos en la Consola de desarrollador de Vanta.
Si usas
AUTH_TOKEN, confirma que el cliente envíeAuthorization: Bearer <token>.
403 Forbidden
El alcance de la aplicación OAuth es insuficiente. Actualízalo en la Consola de desarrollador de Vanta.
404 Not Found
El ID del recurso no existe en tu organización de Vanta.
Las herramientas no aparecen en Claude Desktop
Reinicia Claude Desktop después de cambiar
claude_desktop_config.json.Confirma que el servidor se está ejecutando:
curl http://localhost:8010/health.
No Vanta credentials found
Asegúrate de que
OAUTH_CLIENT_IDyOAUTH_CLIENT_SECRETestén configurados en.env(o en el entorno).O confirma que
config/tenants.jsonesté montado y contenga una entrada válida para el inquilino solicitado.
Los cambios de código en Docker no se reflejan
docker compose restartNO reconstruye la imagen. Ejecuta:docker compose build --no-cache && docker compose up -d
Licencia
MIT
Related MCP Connectors
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Compliance frameworks (SOC 2, ISO 27001, CMMC, NIST, more) delivered to AI agents as MCP tools.
CTEM for your Trusteed tenant: security summary, findings, compliance gaps, and scans via OAuth.
EU compliance corpus across 8 frameworks (NIS2, DORA, AI Act, ISO 27001 + more) via MCP.