Skip to main content
Glama
josh-thurston

Vanta MCP Server

Vanta MCP Server

Сервер MCP для платформы соответствия Vanta. Предоставляет 16 инструментов для управления контролями, уязвимостями, поставщиками, тестами, сценариями рисков, политиками, отслеживаемыми компьютерами, документами и результатами проверок.

Транспорты

Транспорт

Эндпоинт

Вариант использования

Streamable HTTP

http://<host>:8010/mcp

Claude Desktop, большинство MCP-клиентов

SSE

http://<host>:8010/sse

Устаревшие клиенты (n8n и др.)

Health

http://<host>:8010/health

Проверки работоспособности контейнера

Быстрый старт — Docker

1. Получение учетных данных

  1. Войдите в Консоль разработчика Vanta.

  2. Перейдите в Settings → API Access.

  3. Создайте OAuth-приложение — скопируйте Client ID и Client Secret.

  4. Предоставьте области доступа (scopes), необходимые вашим инструментам (обычно vanta.read и vanta.write).

2. Настройка

cp .env.example .env
# Edit .env — set OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET at minimum

Пример .env:

OAUTH_CLIENT_ID=your_client_id
OAUTH_CLIENT_SECRET=your_client_secret
AUTH_TOKEN=          # optional — requires Bearer auth on /mcp and /sse
PORT=8010

3. Запуск

docker compose up -d
# Server: http://localhost:8010
# Health: http://localhost:8010/health

4. Подключение к Claude Desktop

Добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "vanta": {
      "type": "http",
      "url": "http://localhost:8010/mcp"
    }
  }
}

Если установлен AUTH_TOKEN:

{
  "mcpServers": {
    "vanta": {
      "type": "http",
      "url": "http://localhost:8010/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_AUTH_TOKEN"
      }
    }
  }
}

Быстрый старт — Локально (без 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.server

Переменные окружения

Переменная

По умолчанию

Описание

TRANSPORT_MODE

streamable-http

Информационная — оба /mcp и /sse всегда активны

MCP_HOST

0.0.0.0

Адрес привязки

MCP_PORT

8010

HTTP-порт (также принимает устаревший PORT)

AUTH_TOKEN

(отключено)

Если задано, клиенты должны отправлять Authorization: Bearer <AUTH_TOKEN>

LOG_LEVEL

INFO

DEBUG, INFO, WARNING, ERROR

TIMEOUT_SECONDS

60

Тайм-аут HTTP-запроса в секундах

API_BASE_URL

https://api.vanta.com

Базовый URL API Vanta

OAUTH_CLIENT_ID

Арендатор по умолчанию: Vanta OAuth2 client ID (vci_...)

OAUTH_CLIENT_SECRET

Арендатор по умолчанию: Vanta OAuth2 client secret (vcs_...)

OAUTH_CLIENT_ID / OAUTH_CLIENT_SECRET используются только для автоматического создания записи арендатора "default". Для многопользовательских развертываний используйте config/tenants.json.


Многопользовательский режим (Multi-Tenant)

Для нескольких организаций Vanta заполните config/tenants.json (скопируйте из 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"
    }
  ]
}

Значение id — это то, что ваш агент/клиент отправляет в заголовке запроса X-Tenant-ID:

X-Tenant-ID: acme-corp
Authorization: Bearer <AUTH_TOKEN>   ← only if AUTH_TOKEN is set in .env

Поля учетных данных:

Поле

Обязательно

Описание

id

Должно точно соответствовать заголовку X-Tenant-ID (регистрозависимо)

vanta_base_url

Опционально

По умолчанию https://api.vanta.com

vanta_client_id

*

OAuth client ID (префикс: vci_)

vanta_client_secret

*

OAuth client secret (префикс: vcs_)

vanta_api_token

*

Персональный токен доступа — альтернатива OAuth (префикс: vat_)

*Для каждого арендатора требуется один метод аутентификации. OAuth рекомендуется для продакшена.

Если в tenants.json существует "default", запросы без заголовка X-Tenant-ID будут автоматически использовать эти учетные данные. См. ../MCP-Multi-Tenant-Guide.md для получения полной информации об архитектуре и примеров использования клиентами.

config/tenants.json игнорируется git и никогда не включается в образ Docker — он монтируется во время выполнения через том ./config:/app/config:ro.


Инструменты

Контроли

Инструмент

Описание

list_controls

Список всех контролей с опциональной пагинацией

get_control

Получение полной информации о конкретном контроле по ID

list_control_tests

Список всех тестов, связанных с конкретным контролем

Уязвимости

Инструмент

Описание

list_vulnerabilities

Список уязвимостей с опциональной пагинацией

remediate_vulnerability

Обновление статуса устранения уязвимости и примечаний

list_vulnerability_findings

Список результатов проверки уязвимостей с опциональной пагинацией

deactivate_vulnerability

Деактивация уязвимости по ID

Поставщики

Инструмент

Описание

list_vendors

Список одобренных поставщиков с опциональной пагинацией

get_vendor

Получение полной информации о конкретном поставщике по ID

list_discovered_vendors

Список автоматически обнаруженных поставщиков (из интеграций)

Тесты

Инструмент

Описание

list_tests

Список всех тестов на соответствие с опциональной пагинацией

list_test_entities

Список сущностей, связанных с конкретным тестом

Риски и политики

Инструмент

Описание

list_risk_scenarios

Список сценариев рисков с опциональной пагинацией

list_policies

Список политик безопасности с опциональной пагинацией

Активы и документы

Инструмент

Описание

list_monitored_computers

Список компьютеров, отслеживаемых агентами Vanta

list_documents

Список документов (политики, процедуры, доказательства)


Поток аутентификации

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
  → Response

Токены кэшируются для каждого экземпляра арендатора и автоматически обновляются при получении 401.


Структура проекта

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.md

Устранение неполадок

401 Unauthorized

  • Проверьте правильность OAUTH_CLIENT_ID и OAUTH_CLIENT_SECRET.

  • Убедитесь, что OAuth-приложение имеет необходимые области доступа в Консоли разработчика Vanta.

  • Если используется AUTH_TOKEN, подтвердите, что клиент отправляет Authorization: Bearer <token>.

403 Forbidden

  • Недостаточно прав у OAuth-приложения. Обновите их в Консоли разработчика Vanta.

404 Not Found

  • ID ресурса не существует в вашей организации Vanta.

Инструменты не отображаются в Claude Desktop

  • Перезапустите Claude Desktop после изменения claude_desktop_config.json.

  • Подтвердите, что сервер запущен: curl http://localhost:8010/health.

No Vanta credentials found

  • Убедитесь, что OAUTH_CLIENT_ID и OAUTH_CLIENT_SECRET установлены в .env (или в переменных окружения).

  • Или подтвердите, что config/tenants.json смонтирован и содержит корректную запись для запрашиваемого арендатора.

Изменения кода Docker не применяются

  • docker compose restart НЕ пересобирает образ. Запустите:

    docker compose build --no-cache && docker compose up -d

Лицензия

MIT

Related MCP Connectors