Skip to main content
Glama
Vanta MCP Server

Vanta MCP Server

Vanta MCP 서버

Vanta 규정 준수 플랫폼을 위한 MCP 서버입니다. 컨트롤, 취약점, 벤더, 테스트, 위험 시나리오, 정책, 모니터링되는 컴퓨터, 문서 및 발견 사항을 관리하기 위한 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. 도구에 필요한 범위(일반적으로 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

Vanta API 기본 URL

OAUTH_CLIENT_ID

—

기본 테넌트: Vanta OAuth2 클라이언트 ID (vci_...)

OAUTH_CLIENT_SECRET

—

기본 테넌트: Vanta OAuth2 클라이언트 시크릿 (vcs_...)

OAUTH_CLIENT_ID / OAUTH_CLIENT_SECRET은 "default" 테넌트 항목을 자동 생성하는 데만 사용됩니다. 다중 테넌트 배포의 경우 대신 config/tenants.json을 사용하십시오.


다중 테넌트

여러 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 클라이언트 ID (접두사: vci_)

vanta_client_secret

✅*

OAuth 클라이언트 시크릿 (접두사: vcs_)

vanta_api_token

✅*

개인 액세스 토큰 — OAuth 대신 사용 가능 (접두사: vat_)

*테넌트당 하나의 인증 방법이 필요합니다. 프로덕션 환경에서는 OAuth를 권장합니다.

tenants.json에 "default"가 존재하면 X-Tenant-ID 헤더가 없는 요청은 자동으로 해당 자격 증명을 사용합니다. 전체 아키텍처 및 클라이언트 사용 예시는 ../MCP-Multi-Tenant-Guide.md를 참조하십시오.

config/tenants.json은 gitignore 처리되어 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_config.json 변경 후 Claude Desktop을 다시 시작하십시오.

  • 서버가 실행 중인지 확인하십시오: curl http://localhost:8010/health.

No Vanta credentials found

  • .env(또는 환경 변수)에 OAUTH_CLIENT_ID 및 OAUTH_CLIENT_SECRET이 설정되어 있는지 확인하십시오.

  • 또는 config/tenants.json이 마운트되어 있고 요청된 테넌트에 대한 유효한 항목이 포함되어 있는지 확인하십시오.

Docker 코드 변경 사항이 반영되지 않음

  • docker compose restart는 이미지를 다시 빌드하지 않습니다. 다음을 실행하십시오:

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

라이선스

MIT

Related MCP Connectors