Skip to main content
Glama
josh-thurston

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 IDClient Secret을 복사합니다.

  4. 도구에 필요한 범위(일반적으로 vanta.readvanta.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_IDOAUTH_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_IDOAUTH_CLIENT_SECRET이 설정되어 있는지 확인하십시오.

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

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

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

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

라이선스

MIT

Related MCP Connectors