Vanta MCP Server
Vanta MCP-Server
Ein MCP-Server für die Vanta-Compliance-Plattform. Stellt 16 Tools zur Verwaltung von Kontrollen, Schwachstellen, Anbietern, Tests, Risikoszenarien, Richtlinien, überwachten Computern, Dokumenten und Ergebnissen bereit.
Transporte
Transport | Endpunkt | Anwendungsfall |
Streamable HTTP |
| Claude Desktop, die meisten MCP-Clients |
SSE |
| Legacy-Clients (n8n, etc.) |
Health |
| Container-Gesundheitsprüfungen |
Schnellstart — Docker
1. Anmeldedaten abrufen
Melden Sie sich bei der Vanta Developer Console an.
Gehen Sie zu Settings → API Access.
Erstellen Sie eine OAuth-Anwendung — kopieren Sie die Client ID und das Client Secret.
Gewähren Sie die für Ihre Tools erforderlichen Scopes (normalerweise
vanta.readundvanta.write).
2. Konfiguration
cp .env.example .env
# Edit .env — set OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET at minimum.env-Beispiel:
OAUTH_CLIENT_ID=your_client_id
OAUTH_CLIENT_SECRET=your_client_secret
AUTH_TOKEN= # optional — requires Bearer auth on /mcp and /sse
PORT=80103. Ausführen
docker compose up -d
# Server: http://localhost:8010
# Health: http://localhost:8010/health4. Claude Desktop verbinden
Fügen Sie dies zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"vanta": {
"type": "http",
"url": "http://localhost:8010/mcp"
}
}
}Falls AUTH_TOKEN gesetzt ist:
{
"mcpServers": {
"vanta": {
"type": "http",
"url": "http://localhost:8010/mcp",
"headers": {
"Authorization": "Bearer YOUR_AUTH_TOKEN"
}
}
}
}Schnellstart — Lokal (ohne 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.serverUmgebungsvariablen
Variable | Standard | Beschreibung |
|
| Informativ — sowohl |
|
| Bind-Adresse |
|
| HTTP-Port (akzeptiert auch das Legacy- |
| (deaktiviert) | Falls gesetzt, müssen Clients |
|
|
|
|
| HTTP-Request-Timeout in Sekunden |
|
| Vanta API-Basis-URL |
| — | Standard-Tenant: Vanta OAuth2 Client ID ( |
| — | Standard-Tenant: Vanta OAuth2 Client Secret ( |
OAUTH_CLIENT_ID / OAUTH_CLIENT_SECRET werden nur verwendet, um automatisch einen "default"-Tenant-Eintrag zu erstellen. Für Multi-Tenant-Bereitstellungen verwenden Sie stattdessen config/tenants.json.
Multi-Tenant
Für mehrere Vanta-Organisationen füllen Sie config/tenants.json aus (kopieren Sie diese von 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"
}
]
}Der id-Wert ist das, was Ihr Agent/Client im X-Tenant-ID-Request-Header sendet:
X-Tenant-ID: acme-corp
Authorization: Bearer <AUTH_TOKEN> ← only if AUTH_TOKEN is set in .envAnmeldedaten-Felder:
Feld | Erforderlich | Beschreibung |
| ✅ | Muss exakt mit dem |
| Optional | Standard ist |
| ✅* | OAuth Client ID (Präfix: |
| ✅* | OAuth Client Secret (Präfix: |
| ✅* | Persönlicher Zugriffstoken — Alternative zu OAuth (Präfix: |
*Eine Authentifizierungsmethode pro Tenant erforderlich. OAuth wird für die Produktion empfohlen.
Wenn "default" in tenants.json existiert, verwenden Anfragen ohne X-Tenant-ID-Header automatisch diese Anmeldedaten. Siehe ../MCP-Multi-Tenant-Guide.md für die vollständige Architektur und Client-Nutzungsbeispiele.
config/tenants.json ist in .gitignore enthalten und wird niemals in das Docker-Image eingebaut — es wird zur Laufzeit über das Volume ./config:/app/config:ro eingebunden.
Tools
Kontrollen
Tool | Beschreibung |
| Alle Kontrollen mit optionaler Paginierung auflisten |
| Vollständige Details für eine bestimmte Kontrolle nach ID abrufen |
| Alle mit einer bestimmten Kontrolle verknüpften Tests auflisten |
Schwachstellen
Tool | Beschreibung |
| Schwachstellen mit optionaler Paginierung auflisten |
| Behebungsstatus und Notizen einer Schwachstelle aktualisieren |
| Schwachstellen-Ergebnisse mit optionaler Paginierung auflisten |
| Schwachstelle nach ID deaktivieren |
Anbieter
Tool | Beschreibung |
| Zugelassene Anbieter mit optionaler Paginierung auflisten |
| Vollständige Details für einen bestimmten Anbieter nach ID abrufen |
| Automatisch erkannte Anbieter (aus Integrationen) auflisten |
Tests
Tool | Beschreibung |
| Alle Compliance-Tests mit optionaler Paginierung auflisten |
| Mit einem bestimmten Test verknüpfte Entitäten auflisten |
Risiko & Richtlinien
Tool | Beschreibung |
| Risikoszenarien mit optionaler Paginierung auflisten |
| Sicherheitsrichtlinien mit optionaler Paginierung auflisten |
Assets & Dokumente
Tool | Beschreibung |
| Von Vanta-Agenten überwachte Computer auflisten |
| Dokumente (Richtlinien, Verfahren, Nachweise) auflisten |
Auth-Ablauf
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
→ ResponseToken werden pro Tenant-Instanz zwischengespeichert und bei einem 401-Fehler automatisch aktualisiert.
Projektstruktur
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.mdFehlerbehebung
401 Unauthorized
Überprüfen Sie, ob
OAUTH_CLIENT_IDundOAUTH_CLIENT_SECRETkorrekt sind.Stellen Sie sicher, dass die OAuth-App die erforderlichen Scopes in der Vanta Developer Console hat.
Wenn Sie
AUTH_TOKENverwenden, bestätigen Sie, dass der ClientAuthorization: Bearer <token>sendet.
403 Forbidden
Der OAuth-App-Scope ist unzureichend. Aktualisieren Sie ihn in der Vanta Developer Console.
404 Not Found
Die Ressourcen-ID existiert nicht in Ihrer Vanta-Organisation.
Tools werden in Claude Desktop nicht angezeigt
Starten Sie Claude Desktop neu, nachdem Sie
claude_desktop_config.jsongeändert haben.Bestätigen Sie, dass der Server läuft:
curl http://localhost:8010/health.
No Vanta credentials found
Stellen Sie sicher, dass
OAUTH_CLIENT_IDundOAUTH_CLIENT_SECRETin.env(oder der Umgebung) gesetzt sind.Oder bestätigen Sie, dass
config/tenants.jsoneingebunden ist und einen gültigen Eintrag für den angeforderten Tenant enthält.
Docker-Codeänderungen werden nicht übernommen
docker compose restartbaut das Image NICHT neu. Führen Sie aus:docker compose build --no-cache && docker compose up -d
Lizenz
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.